Un modo per limitare la larghezza di banda dei programmi su Windows?
C'è una tecnica in Windows che può limitare selettivamente la larghezza di banda di un processo in esecuzione?
C'è una tecnica in Windows che può limitare selettivamente la larghezza di banda di un processo in esecuzione?
Io uso Net Limiter , che ha una versione gratuita, ma purtroppo dovrai pagare per la funzione di limitazione .
NetLimiter è un ultimo strumento di controllo e monitoraggio del traffico internet progettato per Windows. È possibile utilizzare NetLimiter per impostare i limiti di velocità di trasferimento di download/upload per le applicazioni o anche la singola connessione e monitorare il loro traffico internet.
Insieme a questa caratteristica unica, Netlimiter offre un set completo di strumenti statistici per internet. Include la misurazione del traffico in tempo reale e statistiche a lungo termine sul traffico internet per applicazione
Ci sono buone ragioni per considerare l'approccio “Internet facing router” per la gestione di una rete nel suo complesso - tuttavia, poiché la domanda originale era specifica e l'utente potrebbe benissimo essere l'unico computer della rete, questa è una preoccupazione secondaria.
Per una delle altre risposte migliori, per un po’ ho provato NetBalancer . Funziona davvero bene - ed è facile da configurare.
NetBalancer può essere acquistato sulla loro pagina web per circa 50 dollari. La versione di prova gratuita ti permette di monitorare le connessioni - ma non permette il throttling.
L'alternativa è NetLimiter . Ha un periodo di prova gratuito - ma parte da ~$20 per la versione Lite o ~$30 per la versione Pro. NetLimiter è l'applicazione provata e testata per molti amministratori di sistema.
Quando la prova di NetLimiter finisce, finché non compri una licenza, diventa uno strumento di solo monitoraggio - e non supporta più il throttling. Questo può ancora essere utile - ma non per questo caso d'uso.
Sebbene l'uso di un router intelligente/altamente configurabile sia di solito l'approccio migliore alla gestione wholistic della rete, la disconnessione tra questo e la domanda originale non è spiegata nella risposta di @ZaB. La domanda originale chiede specificamente di un processo - che un router non ha modo di identificare in modo affidabile.
L'unica variante che è vicina all'utile da questo punto di vista è se un'applicazione comunica solo su un canale specifico o un tipo di traffico che può essere facilmente identificato dal router. Un esempio è qui sotto dei download di Origin di EA:
Origin attualmente usa Akamai. Di solito imposto i download/aggiornamenti automatici per essere eseguiti in qualsiasi momento - ma preferirei che non usasse tutta la capacità della linea mentre sono occupato a fare altre cose più importanti. Si dà il caso che Origin sia molto cattivo in questo tipo di cosa , quindi non supporta programmi di download o download throttling. Attualmente il mio desktop sta scaricando un gioco utilizzando il server “a1750.d.akamai.net”. Un router MikroTik (un esempio di router intelligente) può prendere nota che questo nome DNS è stato usato (sarà nella cache DNS con un indirizzo IP) e può essere configurato temporaneamente per aggiungere l'indirizzo IP del server di destinazione a una “lista di indirizzi”. Tutto il traffico da/verso l'elenco di indirizzi può essere aggiunto a una coda strozzata, quindi, tecnicamente, strozzando una singola applicazione.
L'approccio di cui sopra è comunque ingenuo. EA potrebbe in qualsiasi momento cambiare il nome del server, il protocollo utilizzato, o un altro servizio non correlato che utilizza l'infrastruttura Akamai potrebbe essere inavvertitamente strozzato. Ora la mia nuova regola scintillante è resa inutile e rotta.
Potete usare i Criteri di gruppo di Windows per limitare la larghezza di banda di qualsiasi processo. Vai a:
Qui puoi vedere i criteri attuali e crearne di nuovi:
La procedura guidata ti permette di creare una politica per limitare la larghezza di banda sia per:
E le tue politiche possono essere filtrate per:
Potete anche creare queste politiche in Powershell eseguendo:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Anche se questo potrebbe richiedere i diritti di amministratore, e sembra esserci un bug dove le politiche create in questo modo non appariranno nella GUI.
Ecco il mio povero throttling:
Non limita esattamente la banda, piuttosto sospende/riprende il processo che mangia la banda e quindi libera un po’ di banda per altre applicazioni. **
Hai bisogno di PsSuspend.exe (ho messo questo file in C:\tools\sysinternals) e un file batch (per esempio) 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
Ora apri una riga di comando come amministratore ed esegui il file batch con il programma throttles come parametro
slow.bat filetransfer.exe
(sostituisci filetransfer.exe con il nome del tuo programma)
Se hai finito, premi CTRL-C e annulla il batch.
Se il programma è ancora in esecuzione considerate di riprendere il programma nel caso in cui abbiate interrotto il batch mentre il programma era sospeso:
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(sostituisci filetransfer.exe con il nome del tuo programma)