Linux IO Scheduller

Hari ini melakukan konfigurasi kernel lagi. Beberapa catatan saat konfigurasi dibuat. Yang menarik adalah tentang Linux IO Scheduler. Bagaimana memilih scheduler yang cocok untuk kebutuhan sistem Linux kita. IO scheduler ini akan mengefisienkan akses ke storage disk, misalnya harddisk.

Tanpa I/O scheduller ini, kernel akan langsung mengirimkan tiap request ke disk ketika ia menerimanya. Hal ini dapat menimbulkan Harddisk trashing, yaitu jika satu proses sedang membaca suatu bagian dari disk, dan proses lain menulis ke bagian lain, maka head dari disk harus seek back dan bolak-balik untuk setiap operasi. Fungsi utama dari scheduler ini adalah untuk mengoptimasi waktu akses disk.

Teknik yang digunakan oleh I/O scheduler ini untuk meningkatkan performansinya adalah:

  • Request merging
    Scheduler ini akan menggabungkan request-request yang berdekatan untk mengurangi disk seeking
  • Elevator
    Scheduler ini akan mengurutkan request berdasarkan lokasi fisiknya di block device, dan akan berusaha untuk seek dalam satu arah sebanyak mungkin
  • Prioritisation
    Scheduler ini mempunyai kontrol yang lengkap dalam memberikan prioritas terhadap request

Di Linux 2.6 tersedia 4 pilihan scheduler: yaitu 1) No-op: request merging, 2) Anticipatory I/O atau AS : request merging, one-way elevator, read and write request batching dan berusaha untuk mengantisipasi pembacaan dengan menunggu setelah read batch jika menganggap user akan meminta data lagi serta optimisasi physical disk dengan menghindari perpindahan head jika mungkin, 3) Deadline: request merging, one-way elevator, dan memberikan deadline ke semua operasi dan 4) CFQ (Complete Fair Queueing): request merging, elevator, dan memberikan semua user sejumlah request IO dengan jumlah sama. Masing-masing mempunyai kelebihan dan kekurangannya masing-masing di sistem tertentu. Misalnya, di apache web server anticipatory scheduller lebih efisien, di sistem database lebih baik menggunakan deadline, sedangkan sistem desktop dengan multiuser sebaiknya menggunakan CFQ seperti yang ada di ubuntu, dll

Biasanya scheduler ini terinstall di kernel, bisa juga sebagai modul. Saat runtime pertama kali (loading kernel), scheduler yang digunakan dapat dipilih dengan memasukkan opsi kernel “elevator”, yang dapat diset “as”, “cfq”, “deadline” atau “noop” untuk menggunakan scheduler yang diinginkan.

Referensinya ada di sini.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: