Saya mencari cara untuk membatasi proses disk io ke batas kecepatan yang ditetapkan. Idealnya program akan bekerja seperti ini:
$ limitio --pid 32423 --write-limit 1M
Membatasi proses 32423 hingga 1 megabyte per detik kecepatan penulisan hard drive.
Jawaban yang Diterima:
Itu tentu bukan tugas sepele yang tidak bisa dilakukan di ruang pengguna. Untungnya, ini bisa dilakukan di Linux, menggunakan cgroup
mekanisme dan pengontrol blkio-nya.
Menyiapkan cgroup entah bagaimana distribusinya spesifik karena mungkin sudah dipasang atau bahkan digunakan di suatu tempat. Namun, inilah ide umum (dengan asumsi Anda memiliki konfigurasi kernel yang tepat):
mount -t tmpfs cgroup_root /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/blkio
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
Sekarang Anda memiliki blkio
set pengontrol, Anda dapat menggunakannya:
mkdir -p /sys/fs/cgroup/blkio/limit1M/
echo "X:Y 1048576" > /sys/fs/cgroup/blkio/limit1M/blkio.throttle.write_bps_device
Sekarang Anda memiliki cgroup limit1M
yang membatasi kecepatan tulis pada perangkat dengan nomor mayor/minor X:Y menjadi 1MB/s. Seperti yang Anda lihat, batas ini per perangkat. Yang harus Anda lakukan sekarang adalah memasukkan beberapa proses ke dalam grup itu dan itu harus dibatasi:
echo $PID > /sys/fs/cgroup/blkio/limit1M/tasks
Saya tidak tahu apakah/bagaimana ini bisa dilakukan di sistem operasi lain.