Configure Scheduling Class and Priority Disk I/O in Linux

Aktivitas I/O disk yang tiba-tiba tinggi dapat membuat service mysql, web dan email di server Anda down. Sehingga sebagai Administrator system, Anda perlu mencari tahu penyebab naiknya aktivitas I/O disk lalu mengatur penjadwalan I/O dan prioritas program atau script agar tidak menganggu service yang sedang berjalan.

Untuk itu Anda dapat menggunakan utilitas ionice agar dapat mengantur penjadwalan I/O dan prioritas suatu program.

Terdapat 3 scheduling classes:

  • Idle: Program yang berjalan dengan prioritas idle IO hanya akan mendapatkan waktu disk ketika tidak ada program lain yang meminta disk IO untuk masa tenggang yang ditentukan.
  • Best-effort: Ini merupakan default scheduling class untuk setiap proses yang meminta disk IO dengan prioritas yang ditentukan. Direkomendasikan untuk sebagian besar aplikasi.
  • Realtime: Membuat program atau script diberikan akses pertama ke disk terlepas dari apapun yang terjadi pada system. Karena itu class ini perlu digunakan secara hati-hati.
Scheduling class Number Possible priority
Realtime 1 8 priority levels are defined denoting how big a time slice a given process will receive on each scheduling window
Best-effort 2 0-7, with lower number being higher priority
Idle 3 Nil ( does not take a priority argument)

Syntax

ionice options  PID
ionice options -p PID
ionice -c1 -n0  PID

Examples

Menampilkan class and priority pada PID 89 and 91.

ionice -p 89 91

Atur proses pada PID 89 sebagai proses I/O idle.

ionice -c 3 -p 89

Untuk mengatur script sebagai proses I/O best-effort dengan prioritas 7

ionice -c2 -n7 /root/script/backup.sh

Menjalankan bash sebagai proses I/O best-effort dengan prioritas tertinggi.

ionice -c 2 -n 0 bash

Selain itu, Anda juga dapat meningkatkan performa I/O disk dengan cara:

  1. Gunakan hardware RAID controller.
  2. Gunakan fast SCSI / SA-SCSI / SAS 15k speed disk.
  3. Gunakan SSD storage.
  4. Gunakan slave / passive server untuk backup.