GNU/Linux >> Tutoriels Linux >  >> Linux

Comment limiter les E/S par processus à une limite maximale ?

Je cherche un moyen de limiter un disque de processus io à une limite de vitesse définie. Idéalement, le programme devrait fonctionner comme ceci :

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

Limitation du processus 32423 à 1 mégaoctet par seconde de vitesse d'écriture sur le disque dur.

Réponse acceptée :

Ce n'est certainement pas une tâche triviale qui ne peut pas être effectuée dans l'espace utilisateur. Heureusement, il est possible de le faire sous Linux, en utilisant cgroup mechanizm et son contrôleur blkio.

La configuration de cgroup est en quelque sorte spécifique à la distribution car il peut déjà être monté ou même utilisé quelque part. Voici une idée générale, cependant (en supposant que vous ayez une configuration de noyau appropriée) :

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

Maintenant que vous avez blkio jeu de contrôleur, vous pouvez l'utiliser :

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

Vous avez maintenant un cgroup limit1M qui limite la vitesse d'écriture sur l'appareil avec des nombres majeurs/mineurs X:Y à 1 Mo/s. Comme vous pouvez le voir, cette limite est par appareil. Tout ce que vous avez à faire maintenant est de mettre un processus à l'intérieur de ce groupe et il devrait être limité :

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

Je ne sais pas si/comment cela peut être fait sur d'autres systèmes d'exploitation.


Linux
  1. Comment tuer un processus zombie sous Linux

  2. Comment limiter l'utilisation du processeur d'un processus sous Linux

  3. Comment limiter/réduire la vitesse de transfert rsync sous Linux

  4. Comment faire des E/S de console non bloquantes sous Linux en C ?

  5. Comment arrêter le processus "sans interruption" sous Linux ?

Comment tuer un processus sous Linux

Comment activer la journalisation des E/S sudo

Comment purger les caches d'E/S disque sous Linux ?

Comment effectuer des E/S de bas niveau sur un fichier de périphérique Linux en Python ?

Comment définir la swapiness par processus pour Linux?

Comment limiter un processus à un cœur de processeur sous Linux ?