Penjadwal proses mana yang digunakan sistem linux saya?

10

Saya tidak yakin apakah stackoverflow atau serverfault adalah forum yang digunakan untuk pertanyaan ini, tetapi coba di sini.

Apakah ada perintah yang bisa saya gunakan atau file yang bisa saya periksa untuk mengetahui penjadwal proses yang saya gunakan pada sistem Linux saya? Saya tidak mencari penjadwal I / O, tetapi penjadwal proses, dan tolong, jangan merujuk ke panduan atau howtos untuk apa penjadwal, apa yang saya tanyakan adalah apakah ada perintah atau file yang dapat saya jalankan / periksa untuk melihat ini. Saya dapat memeriksa doc untuk kernel saya tetapi sekali lagi saya hanya ingin tahu apakah ada perintah atau file yang dapat saya periksa.

Saya mungkin sedikit berlebihan di atas tetapi itu karena posting yang saya lihat orang tampaknya membingungkan penjadwal proses dengan penjadwal i / o, dan mereka tampaknya tidak menjawab pertanyaan yang sebenarnya, hanya memberikan tautan ke penjadwal apa yang bukan itu yang saya kejar di sini, jadi minta maaf jika komentar di atas terdengar kasar.

melebihi
sumber
2
Anda menyiratkan bahwa Linux entah bagaimana harus memiliki algoritma penjadwal yang berbeda yang dapat dipilih. Apa yang membuat Anda berpikir bahwa ini masalahnya?
Stéphane Chazelas
Saya tidak, dan saya tidak berpikir Anda dapat mengubah penjadwal proses secara real time. Yang saya tanyakan adalah apakah ada perintah untuk memeriksa atau file untuk membaca konten untuk dapat melihat mana yang aktif. Tetapi jika Anda mau, saya pikir Anda bisa memilih O (1) atau O (n) jika Anda benar-benar menginginkannya.
melebihi
1
AFAIK di kernel Linux 2.6.23 kami mengubah penjadwal proses dari O (1) ke CFS, dan kami tidak memiliki penjadwal lain untuk proses yang secara dinamis diubah seperti untuk penjadwal blok I / O.
Artur Szymczak
2
@ZanLynx Sarankan untuk menutup pertanyaan yang lebih lama sebagai duplikat dari pertanyaan ini, karena pertanyaannya sudah mendapatkan perawatan yang lebih baik di sini.
goldilocks

Jawaban:

7

Apakah ada beberapa perintah yang dapat saya gunakan atau file yang dapat saya periksa untuk mengetahui proses scheduler yang saya gunakan pada sistem linux saya?

Tidak, karena tidak seperti WRT ke penjadwal I / O, hanya ada satu kemungkinan : CFS ("Penjadwal Sepenuhnya Adil"), yang mencakup kemampuan waktu nyata. CFS dinamai sebagian untuk membedakannya dari scheduler "O (1)" , yang sebagaimana disebutkan dalam artikel itu digantikan dalam versi 2.6.23.

Jadi jika Anda memiliki kernel di mana Anda tidak yakin, cukup periksa nomor versi.

goldilocks
sumber
Terima kasih atas jawaban Anda, maka saya kira tidak ada file yang dapat saya periksa untuk mengetahui ini tanpa berkonsultasi dengan dokumentasi, akan sangat berguna untuk dapat dengan cepat mengetahui penjadwal yang digunakan untuk memiliki gambaran yang lebih baik tentang rincian parameter. sedang digunakan dalam kernel yang digunakan sistem.
melebihi
1
Saya tidak berpikir ada hal seperti itu karena tidak mencerminkan segala jenis opsi konfigurasi atau "parameter yang digunakan" dll. Hanya ada satu kemungkinan penjadwal, penjadwal; saat ini, ini disebut "scheduler sepenuhnya adil", dan ini adalah masalah desain abstrak, salah satu dari banyak yang berkontribusi pada kernel. Umumnya mereka didokumentasikan dalam sumber, dll. Jadi pertanyaannya adalah mubazir uname -r.
goldilocks
0

Mencoba:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Lihat di sini: Bab 14: Tuning

eyoung100
sumber
Saya tidak punya file konfigurasi kernel, maka saya bisa memeriksanya seperti itu. Saya menggunakan sistem redhat dengan rpm biner yang menginstal kernel.
melebihi
1
Saat menelusuri, satu-satunya variabel yang terkait dengan penjadwal proses tampaknya adalah CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y dan CONFIG_NET_SCHED = y yang tidak terlalu banyak memberi tahu saya
melebihi
1
CONFIG_SCHED_SMT = y Penjadwal Hyperthreading aktif, CONFIG_SCHED_MC = y Dukungan MultiCore AKTIF, CONFIG_NET_SCHED = y QoS / FairQueing AKTIF untuk Jaringan. Sebagai Goldilocks Disinggung atas jawabannya sudah benar.
eyoung100
4
Kenapa tidak adil zgrep SCHEDULE /proc/config.gz?
terdon
1
Saya menyadari, maksud saya adalah bahwa Anda menggunakan pendekatan berbelit-belit yang tidak perlu.
terdon
0

cat /proc/config.gz | gunzip | nano -(atau cat /proc/config.gz | gunzip | gedit -, dalam hal ini) adalah alternatif yang lebih baik untuk jawaban eyoung100 yang tidak memerlukan "gunzipping" ke file sementara.
Sunting: Lebih sederhana - zcat /proc/config.gz | nano -atauzcat /proc/config.gz | gedit -

Atau, seperti yang disarankan @terdon dalam komentar di bawah jawaban itu, gunakan zgrep. Saya hanya merekomendasikan string pencarian yang berbeda:

zgrep "CONFIG_SCHED_" /proc/config.gz

Jika Anda melihat, misalnya CONFIG_SCHED_y:, kernel dikonfigurasi untuk menggunakan penjadwal MuQSS. Namun , itu bukan jaminan bahwa itu adalah . The Arch Wiki menyarankan :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
Marc.2377
sumber