GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo acelerar por proceso I/O a un límite máximo?

Estoy buscando una manera de limitar un disco de procesos io a un límite de velocidad establecido. Idealmente, el programa funcionaría de manera similar a esto:

$ limitio --pid 32423 --write-limit 1M

Limitación del proceso 32423 a 1 megabyte por segundo de velocidad de escritura en el disco duro.

Respuesta aceptada:

Ciertamente, esa no es una tarea trivial que no se puede hacer en el espacio de usuario. Afortunadamente, es posible hacerlo en Linux, usando cgroup mecanismo y su controlador blkio.

La configuración de cgroup es, de alguna manera, específica de la distribución, ya que es posible que ya esté montada o incluso utilizada en alguna parte. Sin embargo, esta es una idea general (suponiendo que tenga la configuración de kernel adecuada):

mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio

Ahora que tienes blkio conjunto de controladores, puedes usarlo:

mkdir -p /sys/fs/cgroup/blkio/limit1M/
echo "X:Y  1048576" > /sys/fs/cgroup/blkio/limit1M/blkio.throttle.write_bps_device 

Ahora tienes un cgroup limit1M que limita la velocidad de escritura en el dispositivo con números mayores/menores X:Y a 1 MB/s. Como puede ver, este límite es por dispositivo. Todo lo que tiene que hacer ahora es poner algún proceso dentro de ese grupo y debería estar limitado:

echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks

No sé si/cómo se puede hacer esto en otros sistemas operativos.


Linux
  1. Cómo limitar el uso de la CPU de un proceso en Linux

  2. Linux:¿cómo monitorear la E/S del disco en un directorio en particular?

  3. ¿Cómo purgar cachés de E/S de disco en Linux?

  4. Cómo usar iptables o tc para limitar paquetes por cliente.

  5. ¿Cómo limitar un proceso a un núcleo de CPU en Linux?

Cómo matar un proceso en Linux

¿Cómo realizo E/S de bajo nivel en un archivo de dispositivo Linux en Python?

¿Cómo configurar el swapiness por proceso para Linux?

¿Cómo puedo monitorear el uso de E/S de la red por proceso en Linux?

¿Cómo registro el uso de la CPU por proceso?

¿Cómo comprobar la utilización de E/S de disco por proceso?