Algoritma penjadwalan seperti apa yang digunakan dalam 15.04? Apakah mungkin untuk mengubahnya?

12

Ingin tahu mekanisme penjadwalan apa yang digunakan pada 15,04, pembagian waktu atau waktu nyata, saya cukup yakin FIFO-nya, Round Robin, SJF?

PS: Baru ke Linux

leslie_lyj
sumber

Jawaban:

14

Penjadwal proses

Penjadwal proses menangani alokasi sumber daya CPU untuk menjalankan proses, dan bertujuan untuk memaksimalkan pemanfaatan CPU secara keseluruhan sambil juga memaksimalkan kinerja interaktif.

Sejak kernel 2.6.23 (yang akan seperti pada Hardy 8.04 LTS) Penjadwal Sepenuhnya Adil (CFS) berdasarkan "Batas Waktu Tangga Berputar". Gambaran umum dari kernel.org :

CFS adalah singkatan dari "Completely Fair Scheduler," dan merupakan penjadwal proses "desktop" baru yang diimplementasikan oleh Ingo Molnar dan digabung dalam Linux 2.6.23. Ini adalah pengganti untuk kode interaktivitas SCHED_OTHER penjadwal vanili sebelumnya.

80% dari desain CFS dapat disimpulkan dalam satu kalimat: CFS pada dasarnya memodelkan "CPU multi-tasking yang ideal dan tepat" pada perangkat keras nyata.

"CPU ideal multi-tasking" adalah CPU (tidak ada :-)) yang memiliki kekuatan fisik 100% dan yang dapat menjalankan setiap tugas pada kecepatan yang sama, secara paralel, masing-masing pada kecepatan 1 / nr_running. Sebagai contoh: jika ada 2 tugas yang berjalan, maka itu berjalan masing-masing dengan kekuatan fisik 50% --- yaitu, sebenarnya secara paralel.

Pada perangkat keras nyata, kita hanya dapat menjalankan satu tugas sekaligus, jadi kita harus memperkenalkan konsep "runtime virtual." Runtime virtual dari suatu tugas menentukan kapan kutu waktu berikutnya akan mulai dieksekusi pada CPU multi-tasking ideal yang dijelaskan di atas. Dalam praktiknya, runtime virtual suatu tugas adalah runtime aktual yang dinormalisasi ke jumlah total tugas yang berjalan.


  • Kernel 2.4: O (n) scheduler ; tidak ada rilis Ubuntu dengan kernel itu.
  • Kernel 2.6.0 hingga 2.6.22: O (1) scheduler . Warty 4.10 (rilis pertama) menggunakan 2.6.8. Gutsy 7.10 adalah yang terakhir yang menggunakan 2.6.22 atau lebih rendah.

Penjadwal I / O

Penjadwalan input / output adalah metode yang digunakan sistem operasi untuk memutuskan urutan operasi I / O blok yang akan dikirimkan ke volume penyimpanan.

Artikel Phoronix tentang penjadwalan : Linux 3.16: Tenggat I / O Scheduler Umumnya Memimpin Dengan SSD.


Anda dapat mengubah penjadwal I / O dengan menambahkan opsi "elevator =" ke "GRUB_CMDLINE_LINUX_DEFAULT =" di grub.

Mungkin lebih mudah (dengan asumsi sda dan tenggat waktu) untuk melakukannya seperti ini:

  • Untuk menampilkan daftar penjadwal yang tersedia:

    cat /sys/block/sda/queue/scheduler
    
  • Dan untuk mengubah penjadwal (dapat dilakukan dengan cepat):

    echo deadline > /sys/block/sda/queue/scheduler
    

Dari kernel / git / torvalds / linux.git


Anda dapat memeriksa dengan apa yang digunakan (dengan asumsi sda sebagai produk utama):

cat /sys/block/sda/queue/scheduler
Rinzwind
sumber
Apakah ini berarti mekanisme penjadwalan yang digunakan di Ubuntu 15.04 secara default adalah algoritma pembagian waktu, CFS? Atau dilengkapi dengan LAIN, RR, dan FIFO? Saya mendapatkan informasi saya di sini: manpages.ubuntu.com/manpages/hardy/man2/…
leslie_lyj
Anda melihat halaman manual untuk Hardy. Itu agak tua;) 'cfq' adalah default. Lihat tautan yang ditambahkan ke kernel / git / torvalds / linux.git.
Rinzwind
1
... bukankah ini membingungkan antara penjadwal disk dan cpu ? Mereka adalah binatang yang sangat berbeda. Penjadwal CPU memutuskan proses mana yang akan dijalankan berikutnya, dan penjadwal disk memutuskan bagaimana blok data dalam disk diakses. Lihat misalnya wiki.archlinux.org/index.php/Maximizing_performance
Rmano
Yah, tidak juga, poin utama dari pertanyaan ini adalah untuk mengklarifikasi mekanisme penjadwalan proses apa yang dijalankan oleh Ubuntu 15.04. (Maaf jika saya tidak jelas)
leslie_lyj
2
@Rmano Saya berasumsi ini untuk informasi yang tidak khusus untuk menggunakannya. Tapi neurotik dalam diriku
mati