Comment limiter la largeur de bande des programmes sur Windows ?
Existe-t-il une technique dans Windows qui permet de limiter sélectivement la largeur de bande d'un processus en cours ?
Existe-t-il une technique dans Windows qui permet de limiter sélectivement la largeur de bande d'un processus en cours ?
J'utilise Net Limiter , qui a une version gratuite, mais malheureusement vous devrez payer pour la fonction de limitation .
NetLimiter est un outil ultime de contrôle et de surveillance du trafic Internet conçu pour Windows. Vous pouvez utiliser NetLimiter pour fixer des limites de taux de transfert en téléchargement pour des applications ou même une connexion unique et surveiller leur trafic internet.
En plus de cette fonction unique, Netlimiter offre un ensemble complet d'outils statistiques sur l'internet. Il comprend une mesure du trafic en temps réel et des statistiques à long terme sur le trafic internet par application
Il y a de bonnes raisons d'envisager l'approche “Internet facing router” pour gérer un réseau dans son ensemble - toutefois, comme la question initiale était spécifique et que l'utilisateur peut très bien être le seul ordinateur du réseau, c'est une préoccupation secondaire.
Selon l'une des autres réponses en tête, j'ai testé pendant un certain temps NetBalancer . Il fonctionne vraiment bien - et est facile à configurer.
NetBalancer est disponible à l'achat sur leur page web pour environ 50 $. La version d'essai/gratuite vous permet de surveiller les connexions - mais ne permet pas de les étrangler.
L'alternative est NetLimiter . Elle a une période d'essai gratuite - mais commence à ~20$ pour la version Lite ou ~30$ pour la version Pro. NetLimiter est l'application de base éprouvée pour de nombreux administrateurs système.
Lorsque la période d'essai de NetLimiter se termine, jusqu'à ce que vous achetiez une licence, il devient un outil de surveillance uniquement - et ne prend plus en charge l'étranglement. Cela peut toujours être utile - mais pas pour ce cas d'utilisation.
Bien que l'utilisation d'un routeur intelligent/très configurable soit généralement la meilleure approche pour la gestion wholistique du réseau, la déconnexion entre cette approche et la question initiale n'est pas expliquée dans la réponse de @ZaB. La question initiale porte spécifiquement sur un processus - qu'un routeur n'a aucun moyen fiable d'identifier.
La seule variante qui est presque utile à cet égard est celle où une application ne communique que sur un canal ou un type de trafic spécifique qui peut être facilement identifié par le routeur. Vous trouverez ci-dessous un exemple de téléchargements d'EA Origin :
Origin utilise actuellement Akamai. En général, je règle les téléchargements/mises à jour automatiques pour qu'ils s'exécutent à tout moment - mais je préfère qu'ils n'utilisent pas toute la capacité de la ligne pendant que je suis occupé à d'autres choses plus importantes. Origin se trouve être très mauvais à ce tri de chose , donc il ne prend pas en charge les horaires de téléchargement ou l'étranglement des téléchargements. Actuellement, mon bureau télécharge un jeu en utilisant le serveur “a1750.d.akamai.net”. Un routeur MikroTik (un exemple de routeur intelligent) peut prendre note que ce nom DNS a été utilisé (il sera dans le cache DNS avec une adresse IP) et peut être configuré temporairement pour ajouter l'adresse IP du serveur de destination à une “liste d'adresses”. Tout le trafic vers/depuis la liste d'adresses peut être ajouté à une file d'attente étranglée, ce qui, techniquement, étrangle une seule application.
L'approche ci-dessus est cependant naïve. EA pourrait à tout moment changer le nom du serveur, le protocole utilisé, ou un autre service non lié utilisant l'infrastructure d'Akamai pourrait être étranglé par inadvertance. Maintenant, ma nouvelle règle brillante est rendue inutile et cassée.
Vous pouvez utiliser la politique de groupe de Windows pour limiter la bande passante de n'importe quel processus. Allez à :
Ici vous pouvez voir les politiques actuelles et en créer de nouvelles :
Ensuite, suivez l'assistant pour créer une nouvelle politique d'étranglement.
L'assistant vous permet de créer une politique de limitation de la bande passante pour l'un ou l'autre :
Tout ce qui se trouve sur votre ordinateur
Des processus spécifiques
Des sites web spécifiques (uniquement pour les applications utilisant les protocoles HTTP)
Et vos politiques peuvent ensuite être filtrées par :
Vous pouvez également créer ces politiques dans Powershell en exécutant :
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Bien que cela puisse nécessiter des droits d'administrateur, et il semble y avoir un bug où les politiques créées de cette manière n'apparaîtront pas dans l'interface graphique.
Il ne limite pas exactement la bande passante, il suspend/reprend plutôt le processus de consommation de bande passante et libère ainsi de la bande passante pour d'autres applications. **Et c'est gratuit!
Il faut PsSuspend.exe (je mets ce fichier dans C:\tools\sysinternals) et un fichier batch (par exemple) lent. 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
Maintenant, ouvrez une ligne de commande en tant qu'administrateur et exécutez le fichier batch avec le programme throttles comme paramètre
slow.bat filetransfer.exe
(remplacez filetransfer.exe par votre nom de programme)
Si vous avez terminé, appuyez sur CTRL-C et annulez le batch.
Si le programme est toujours en cours d'exécution, pensez à le reprendre au cas où vous auriez interrompu le lot alors que le programme était suspendu :
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(remplacez filetransfer.exe par le nom de votre programme)