GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Throttle Per Proses I/o Hingga Batas Maks?

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.


Linux
  1. Linux – Bagaimana Cara Memantau Disk I/o Di Direktori Tertentu?

  2. Cara Mengaktifkan Pencatatan Sudo I/O

  3. Bagaimana cara menghentikan proses 'tidak terputus' di Linux?

  1. Cara menggunakan iptables atau tc untuk membatasi paket per klien.

  2. Bagaimana cara mengatur swapiness per proses untuk linux?

  3. Bagaimana membatasi total sumber daya (memori) dari suatu proses dan anak-anaknya

  1. Cara mematikan proses zombie di Linux

  2. Cara Membatasi Penggunaan CPU Suatu Proses Di Linux

  3. Linux – Bagaimana Membatasi Proses Ke Satu Cpu Core Di Linux??