GNU/Linux >> Znalost Linux >  >> Linux

Jak snížit I/O procesu na maximální limit?

Hledám způsob, jak omezit proces disku io na nastavený limit rychlosti. V ideálním případě by program fungoval podobně jako tento:

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

Omezení rychlosti zápisu na pevný disk 32423 na 1 megabajt za sekundu.

Přijatá odpověď:

To rozhodně není triviální úkol, který nelze provést v uživatelském prostoru. Naštěstí je to možné na Linuxu pomocí cgroup mechanizm a jeho ovladač blkio.

Nastavení cgroup je nějak specifické pro distribuci, protože už může být někde připojeno nebo dokonce použito. Zde je však obecná myšlenka (za předpokladu, že máte správnou konfiguraci jádra):

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

Nyní, když máte blkio sadu ovladačů, můžete ji použít:

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

Nyní máte cgroup limit1M který omezuje rychlost zápisu na zařízení s hlavními/vedlejšími čísly X:Y až 1 MB/s. Jak vidíte, tento limit je na zařízení. Vše, co nyní musíte udělat, je vložit nějaký proces do této skupiny a měl by být omezen:

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

Nevím, zda/jak to lze provést na jiných operačních systémech.


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Linux – Jak omezit proces na jedno jádro CPU v Linuxu?

  3. Jak povolit sudo I/O protokolování

  1. Jak omezit/snížit rychlost přenosu rsync v Linuxu

  2. Jak vyčistit diskové I/O mezipaměti v Linuxu?

  3. Jak omezit proces na jedno jádro CPU v Linuxu?

  1. Jak omezit využití CPU procesu v Linuxu

  2. Linux – Jak monitorovat diskový vstup/výstup v konkrétním adresáři?

  3. Jak omezit celkové zdroje (paměť) procesu a jeho potomků