¿Cómo limitar el ancho de banda de los programas en Windows?
¿Existe alguna técnica en Windows que pueda limitar selectivamente el ancho de banda de un proceso en ejecución?
¿Existe alguna técnica en Windows que pueda limitar selectivamente el ancho de banda de un proceso en ejecución?
Yo utilizo Net Limiter , que tiene una versión gratuita, pero desgraciadamente hay que pagar por la función de limitación .
NetLimiter es una herramienta de control y monitorización del tráfico de Internet diseñada para Windows. Puede utilizar NetLimiter para establecer límites de velocidad de transferencia de descarga/carga para aplicaciones o incluso para una sola conexión y supervisar su tráfico de Internet.
Además de esta función única, Netlimiter ofrece un amplio conjunto de herramientas estadísticas de Internet. Incluye mediciones de tráfico en tiempo real y estadísticas de tráfico de Internet a largo plazo por aplicación
Hay buenas razones para considerar el enfoque de “router orientado a Internet” para la gestión de una red en su conjunto - sin embargo, como la pregunta original era específica y el usuario puede muy bien ser el único equipo en la red, que es una preocupación secundaria.
Por una de las otras respuestas principales, durante un tiempo probé NetBalancer . Funciona muy bien - y es fácil de configurar.
NetBalancer se puede comprar en su página web por unos 50 dólares. La versión de prueba/gratuita permite supervisar las conexiones, pero no permite el estrangulamiento.
La alternativa es NetLimiter . Tiene un periodo de prueba gratuito - pero su precio es de ~20 dólares para la versión Lite o ~30 dólares para la versión Pro. NetLimiter es la aplicación probada por muchos administradores de sistemas.
Cuando la versión de prueba de NetLimiter termina, hasta que se adquiere una licencia, se convierte en una herramienta sólo de monitorización - y ya no admite el estrangulamiento. Esto todavía puede ser útil - pero no para este caso de uso.
Aunque el uso de un router inteligente/altamente configurable suele ser el mejor enfoque para la gestión holística de la red, la desconexión entre eso y la pregunta original no se explica en la respuesta de @ZaB. La pregunta original se refiere específicamente a un proceso - que un router no tiene manera de identificar de forma fiable.
La única variación que se acerca a la utilidad en este sentido es si una aplicación sólo se comunica a través de un canal específico o tipo de tráfico que puede ser fácilmente identificado por el router. Un ejemplo es el de las descargas de Origin de EA:
Origin utiliza actualmente Akamai. Normalmente configuro las descargas/actualizaciones automáticas para que se ejecuten en cualquier momento, pero prefiero que no utilicen toda la capacidad de la línea mientras estoy ocupado haciendo otras cosas más importantes. Origin resulta ser muy malo en esto tipo de cosa, por lo que no admite horarios de descarga ni estrangulamiento de descargas. Actualmente mi escritorio está descargando un juego usando el servidor “a1750.d.akamai.net”. Un router MikroTik (un ejemplo de router inteligente) puede tomar nota de que este nombre DNS fue utilizado (estará en la caché DNS con una dirección IP) y puede ser configurado temporalmente para añadir la dirección IP del servidor de destino a una “lista de direcciones”. Todo el tráfico hacia/desde la lista de direcciones puede añadirse a una cola de espera, con lo que, técnicamente, se estrangula una sola aplicación.
Sin embargo, el enfoque anterior es ingenuo. EA podría cambiar en cualquier momento el nombre del servidor, el protocolo utilizado u otro servicio no relacionado que utilice la infraestructura de Akamai podría ser estrangulado inadvertidamente. Ahora mi nueva y brillante regla se vuelve inútil y se rompe.
Puede utilizar la política de grupo de Windows para limitar el ancho de banda de cualquier proceso. Vaya a:
Aquí puede ver las políticas actuales y crear nuevas por:
El asistente le permite crear una política para estrangular el ancho de banda para cualquiera de los dos:
Y sus políticas pueden filtrarse por:
También puede crear estas políticas en Powershell ejecutando:
New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "ftp.exe" -ThrottleRateActionBitsPerSecond 1MB
Aunque esto podría requerir derechos de administrador, y parece haber un error en el que las políticas creadas así no aparecerán en la GUI.
Aquí está mi “poor mans throttling”:
No limita exactamente el ancho de banda, más bien suspende/reanuda el proceso que consume el ancho de banda y así libera algo de ancho de banda para otras aplicaciones. **Y es gratis!
Necesita PsSuspend.exe (pongo este archivo en C:\tools\sysinternals) y un archivo batch (por ejemplo) 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
Ahora abre una línea de comandos como administrador y ejecuta el archivo batch con el programa throttles como parámetro
slow.bat filetransfer.exe
(sustituye filetransfer.exe por el nombre de tu programa)
Si has terminado, dale a CTRL-C y cancela el batch.
Si el programa sigue en marcha considere reanudar el programa en caso de que haya interrumpido el lote mientras el programa estaba suspendido:
c:\tools\sysinternals\pssuspend.exe -r filetransfer.exe
(sustituya filetransfer.exe por el nombre de su programa)