Hard-Disk
如何將每個程序 I/O 限製到最大限制?
我正在尋找一種將程序磁碟 io 限制為設定速度限制的方法。理想情況下,該程序的工作方式類似於:
$ limitio --pid 32423 --write-limit 1M
將程序 32423 限制為每秒 1 兆字節的硬碟驅動器寫入速度。
這當然不是在使用者空間中無法完成的微不足道的任務。幸運的是,可以在 Linux 上使用
cgroup
mechanizm 及其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:Y
limit1M
的設備上的寫入速度限制為 1MB/s。如您所見,此限制是針對每個設備的。您現在所要做的就是在該組中放置一些程序,並且它應該是有限的:echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks
我不知道這是否/如何在其他作業系統上完成。