2010-04-28 22:55:18 +0000 2010-04-28 22:55:18 +0000
86
86

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?

Risposte (4)

22
22
22
2012-02-18 20:40:44 +0000

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

9
9
9
2015-09-10 18:35:38 +0000

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.

NetBalancer


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.

NetLimiter


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.

Usare un router (con una spiegazione del perché questo non è un buon approccio a 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.

3
3
3
2018-11-18 10:38:36 +0000

Potete usare i Criteri di gruppo di Windows per limitare la larghezza di banda di qualsiasi processo. Vai a:

  • Menu Start > Esegui > gpedit.msc
  • Configurazione computer/utente (scegli l'uno o l'altro) > Impostazioni di Windows > QoS basato sui criteri

Qui puoi vedere i criteri attuali e crearne di nuovi:

  • Facendo clic con il tasto destro del mouse su “QoS basato sui criteri” o andando su “Azione” > Crea nuova politica…
  • Poi segui la procedura guidata per creare una nuova politica di strozzatura.

La procedura guidata ti permette di creare una politica per limitare la larghezza di banda sia per:

  • Tutto sul tuo computer
  • Processi specifici
  • Siti web specifici (solo per applicazioni che utilizzano protocolli HTTP)

E le tue politiche possono essere filtrate per:

  • Protocolli TCP o UDP
  • IP di origine/destinazione
  • Porte di origine/destinazione

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.

2
2
2
2016-10-20 10:05:21 +0000

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)