Manier om de bandbreedte van programma's op Windows te beperken?
Is er een techniek in Windows die de bandbreedte van een draaiend proces selectief kan beperken?
Is er een techniek in Windows die de bandbreedte van een draaiend proces selectief kan beperken?
Ik gebruik Net Limiter , die heeft een gratis versie, maar helaas moet je betalen voor de beperkingsfunctie .
NetLimiter is een ultieme internet verkeer controle en monitoring tool ontworpen voor Windows. U kunt NetLimiter gebruiken om download / upload overdrachtsnelheid grenzen voor toepassingen of zelfs enkele verbinding in te stellen en hun internetverkeer te controleren. 0x2 & > 0x2 & > Samen met deze unieke functie, Netlimiter biedt uitgebreide set van internet statistische tools. Het omvat real-time meting van het verkeer en op lange termijn per applicatie statistieken van het internetverkeer
Er zijn goede redenen om te kijken naar de “Internet facing router” aanpak voor het beheer van een netwerk als geheel - maar aangezien de oorspronkelijke vraag specifiek was en de gebruiker heel goed de enige computer op het netwerk kan zijn, is dat een secundaire zorg.
Per een van de andere top antwoorden, heb ik een tijdje NetBalancer uitgetest. Het werkt echt goed - en is eenvoudig te configureren.
NetBalancer is te koop op hun webpagina voor ongeveer $50. Met de probeer/gratis versie kun je verbindingen monitoren - maar geen throttling toestaan.
Het alternatief is NetLimiter . Het heeft een gratis proefperiode - maar begint bij ~$20 voor de Lite versie of ~$30 voor de Pro versie. NetLimiter is de beproefde en geteste toepassing voor veel SysAdmins.
Als NetLimiter’s trial eindigt, totdat je een licentie koopt, wordt het een monitoring-only tool - en ondersteunt niet langer throttling. Dit kan nog steeds nuttig zijn - maar niet voor dit gebruik.
Hoewel het gebruik van een slimme/zeer configureerbare router meestal de betere benadering is voor wholistisch netwerkbeheer, wordt het verband tussen dat en de oorspronkelijke vraag niet uitgelegd in @ZaB’s antwoord. De oorspronkelijke vraag vraagt specifiek naar een proces - dat een router op geen enkele manier betrouwbaar kan identificeren.
De enige variatie die in de buurt komt van bruikbaar op dit punt is als een applicatie alleen communiceert over een specifiek kanaal of type verkeer dat gemakkelijk kan worden geïdentificeerd door de router. Hieronder staat een voorbeeld van EA’s Origin downloads:
Origin gebruikt op dit moment Akamai. Normaal gesproken stel ik automatische downloads/updates in om op elk moment te draaien - maar ik heb liever niet dat het alle lijncapaciteit gebruikt terwijl ik met andere, belangrijkere dingen bezig ben. Origin is toevallig erg slecht in dit soort van ding , dus het ondersteunt geen download schema’s of download throttling. Op dit moment is mijn desktop een spel aan het downloaden via de server “a1750.d.akamai.net”. Een MikroTik router (een voorbeeld van een slimme router) kan noteren dat deze DNS naam gebruikt werd (hij komt in de DNS cache met een IP adres) en kan geconfigureerd worden om het IP adres van de bestemmingsserver tijdelijk toe te voegen aan een “adreslijst”. Al het verkeer van/naar de adreslijst kan worden toegevoegd aan een “throttled queue”, waardoor, technisch gezien, een enkele toepassing wordt “throttled”.
De bovenstaande aanpak is echter naïef. EA zou op elke tijd de servernaam kunnen veranderen, het gebruikte protocol, of een andere niet-gerelateerde dienst die gebruik maakt van de Akamai infrastructuur zou onbedoeld getropt kunnen worden. Nu is mijn glimmende nieuwe regel nutteloos gemaakt en gebroken.
U kunt Windows Groepsbeleid gebruiken om de bandbreedte van elk proces te beperken. Ga naar:
Hier kun je de huidige beleidsregels zien en nieuwe maken door:
Met de wizard kun je een beleid maken om bandbreedte af te nemen voor ofwel:
En je policies kunnen dan gefilterd worden op:
Je kunt deze policies ook in Powershell maken door uit te voeren:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Hoewel je hier misschien administratorrechten voor nodig hebt, en er schijnt een bug te zijn waarbij op deze manier gemaakte policies niet in de GUI verschijnen.
Hier is mijn arme mans throttling:
Het beperkt niet echt de bandbreedte, het schort eerder het bandbreedte vretende proces op of hervat het en maakt zo wat bandbreedte vrij voor andere applicaties. En het is gratis!
Je hebt PsSuspend.exe nodig (ik heb dit bestand in C:\tools\sysinternals gezet) en een batch bestand (bijv.) slow. bat:
@echo off
:START
c:\tools\sysinternals\pssuspend.exe %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
c:\tools\sysinternals\pssuspend.exe -r %1 >NUL: 2>&1
timeout /T 1 /NOBREAK >NUL:
goto START
Open nu een opdrachtregel als administrator en voer het batchbestand uit met het throttles programma als parameter
slow.bat filetransfer.exe
(vervang filetransfer.exe door je programmanaam)
Als je klaar bent, druk je op CTRL-C en annuleer je de batch.
Als het programma nog draait, overweeg dan om het programma te hervatten voor het geval je de batch hebt onderbroken terwijl het programma was onderbroken:
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(vervang filetransfer.exe door je programmanaam)