¿Existe alguna utilidad para limitar el rendimiento de la red de un proceso después de que se haya lanzado? Ejemplo simple: observa que un usuario toma todo su ancho de banda de carga usando scp y desea limitar la velocidad o disminuir la prioridad de la transferencia.
Supongo que podría usar una combinación de iptables / tc o pf para lograr eso, pero me preguntaba si hay una herramienta de "disparo único" disponible (como goteo con una opción --pid ^^)?
Respuestas:
Lamentablemente, no existe una solución para FreeBSD. Hay muchas soluciones como dummynet / ipfw o altq / pf que se utilizan para limitar el uso de la red en función de diferentes patrones pero no en pids.
En Linux hay una forma de limitar el uso de la red por usuario:
Creo que no hay una solución para limitar la utilización de la red basada en pid.
fuente
Es el proceso para obtener los puertos de red que utiliza el proceso. Una vez que sepa qué puertos se están utilizando, puede usar las reglas IPTABLES para limitar la velocidad de estos puertos. Estos artículos deberían darle una mejor idea: http://linux-ip.net/articles/Traffic-Control-HOWTO/ http://blog.edseek.com/~jasonb/articles/traffic_shaping/ http: // wikis. sun.com/pages/viewpage.action?pageId=49906332
fuente
En Linux, incluso la combinación de iptables y tc podría ser un problema difícil, ya que la opción "--pid-owner" fue abandonada del módulo iptables "propietario" (vea la nota debajo de la tabla aquí ). De hecho, solo esta asociación (paquete - proceso) parece ser complicada, mientras que podemos hacer el resto fácilmente, es decir, filtrar y limitar los paquetes de manera bastante eficiente.
fuente
No creo que haya una solución preparada para esto. Pero, usando herramientas estándar de Linux, puedes hackear un script que hará el trabajo.
Primero, puede obtener una lista de todas las conexiones de procesos específicos con lsof. Luego, puede crear políticas de ingreso con tc para esas conexiones.
fuente
Crudamente, si reduce el proceso a +20, entonces cualquier otra cosa que se ejecute en el sistema tendrá prioridad y el trabajo se programará con menos frecuencia, por lo que será más difícil llenar los búferes o paquetes de proceso, lo que debería conducir a algún TCP estrangulamiento Será esporádico, pero podría ayudar lo suficiente.
fuente