Hard-Disk

如何將每個程序 I/O 限製到最大限制?

  • September 22, 2017

我正在尋找一種將程序磁碟 io 限制為設定速度限制的方法。理想情況下,該程序的工作方式類似於:

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

將程序 32423 限制為每秒 1 兆字節的硬碟驅動器寫入速度。

這當然不是在使用者空間中無法完成的微不足道的任務。幸運的是,可以在 Linux 上使用cgroupmechanizm 及其blkio 控制器進行操作

設置 cgroup 在某種程度上是特定於發行版的,因為它可能已經安裝甚至在某處使用。但是,這是一個總體構想(假設您有正確的核心配置):

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

現在您已經blkio設置了控制器,您可以使用它:

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

現在您有一個 cgroup ,它將主要/次要編號X:Ylimit1M的設備上的寫入速度限制為 1MB/s。如您所見,此限制是針對每個設備的。您現在所要做的就是在該組中放置一些程序,並且它應該是有限的:

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

我不知道這是否/如何在其他作業系統上完成。

引用自:https://unix.stackexchange.com/questions/48138