GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare l'I/o di processo a un limite massimo?

Sto cercando un modo per limitare un disco di processi io a un limite di velocità impostato. Idealmente il programma funzionerebbe in modo simile a questo:

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

Limitazione della velocità di scrittura del disco rigido da 32423 a 1 megabyte al secondo.

Risposta accettata:

Questo non è certamente un compito banale che non può essere svolto nello spazio utente. Fortunatamente, è possibile farlo su Linux, usando cgroup mechanizm e il suo controller blkio.

La configurazione di cgroup è in qualche modo specifica della distribuzione in quanto potrebbe essere già montata o addirittura utilizzata da qualche parte. Tuttavia, ecco un'idea generale (supponendo che tu abbia una corretta configurazione del kernel):

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

Ora che hai blkio set di controller, puoi usarlo:

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

Ora hai un cgroup limit1M che limita la velocità di scrittura sul dispositivo con numeri maggiori/minori X:Y a 1 MB/s. Come puoi vedere, questo limite è per dispositivo. Tutto quello che devi fare ora è inserire un processo all'interno di quel gruppo e dovrebbe essere limitato:

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

Non so se/come questo possa essere fatto su altri sistemi operativi.


Linux
  1. Come limitare l'utilizzo della CPU di un processo in Linux

  2. Linux:come monitorare l'I/o del disco in una directory particolare?

  3. Linux:come limitare un processo a un core della CPU in Linux??

  4. Come abilitare la registrazione sudo I/O

  5. Come limitare/limitare la velocità di trasferimento di rsync in Linux

Come uccidere un processo zombie su Linux

Come uccidere un processo in Linux

Come utilizzare iptables o tc per limitare i pacchetti per client.

Come impostare lo swapiness per processo per Linux?

Come limitare le risorse totali (memoria) di un processo e dei suoi figli

Costo totale di I/O di un processo