Apa efek, jika ada, dari prioritas penjadwalan dan kebijakan untuk utas di cpuset yang tidak dikontrol?

12

Saya memiliki sistem Linux di mana kami telah menggunakan cgroup untuk membuat dua cpu_exclusive cpusets, A dan B, dan di mana kami telah memigrasikan semua utas pengguna dan semua utas kernel tidak terikat ke cgroup yang melekat pada cpuset A. Hal-hal yang berjalan di cpuset A memiliki berbagai kebijakan penjadwal dan berbagai prioritas, dan ada lebih banyak utas berjalan di cpuset A daripada ada core di cpuset A.

Ada juga sejumlah kecil proses yang sangat aktif yang melekat pada cpuset B, di mana jumlah utas pengguna di seluruh proses ini tidak pernah lebih besar dari jumlah inti yang tersedia secara eksklusif di cpuset B. Tujuannya adalah untuk melindungi tugas-tugas penting ini yang berjalan di cpuset B dari aktivitas lain pada mesin dan untuk meminimalkan latensi pemrosesan.

Dalam pengaturan seperti itu, apakah kebijakan penjadwalan / prioritas utas pengguna yang berjalan di cpuset B memiliki efek yang dapat diamati? Dinyatakan secara berbeda: apakah akan mengubah kebijakan penjadwalan utas cpuset B dari SCHED_OTHER default menjadi SCHED_FIFO atau SCHED_RR memiliki konsekuensi, baik atau buruk?

Sepertinya jawabannya harus 'tidak', karena penjadwal harus dapat menetapkan setiap utas berjalan di cpuset B inti yang didedikasikan, sehingga tidak ada yang memprioritaskan atau menjadwalkan, sehingga kebijakan dan prioritas relatif dari B utas cpuset tidak masalah. Di sisi lain, ada beberapa thread kernel terikat dan aspek 'domain penjadwal' yang perlu dikhawatirkan, dan mungkin hal-hal lain yang belum saya pertimbangkan.

Apakah kebijakan penjadwalan dan prioritas utas berjalan dalam masalah cpuset eksklusif yang terlalu banyak tersedia dalam arti praktis?

acm
sumber

Jawaban:

4

Irisan waktu yang digunakan akan berpengaruh pada pekerjaan intensif CPU yang membutuhkan persistensi cache, kecuali jika Anda mengunci inti tertentu untuk setiap PID. Anda dapat meningkatkan irisan waktu dengan kebijakan penjadwal SCHED_BATCH dan meningkatkan kinerja hingga 300% dalam beberapa kasus, sekaligus mengurangi respons interaktif. Efek sebaliknya dari irisan waktu yang lebih kecil terjadi dengan SCHED_RR (yang akan mengurangi throughput tetapi meningkatkan respons waktu nyata).

Anda dapat menggunakan schedtool untuk menetapkan kebijakan PID tertentu untuk semua PID di set B sebagai perintah tunggal. Itu juga dapat digunakan untuk mengunci PID tertentu ke inti tertentu, yang akan menjadi solusi optimal sejak itu persistensi cache tidak lagi tergantung pada irisan waktu, tetapi ini membutuhkan lebih banyak usaha karena Anda harus menjalankan perintah schedtool terpisah untuk setiap PID.

Thomas Anantharaman
sumber
1

Jika setiap proses memiliki intinya sendiri maka tidak ada kendala prioritas.

Namun, jika Anda menjadwalkan proses yang memakan waktu 30 menit untuk berjalan setiap 15 menit, Anda akan mulai perlu memprioritaskan karena proses akan mulai tumpang tindih.

Namun tidak ada kebijakan penjadwalan "terbaik".

Mereka benar-benar bergantung pada apa yang ingin Anda capai. Tetapi pada awalnya, saya akan menyerahkannya ke SCHED_OTHER, default dan amati untuk beberapa waktu sebelum saya mencoba hal-hal yang lebih khusus.

Nicolas de Fontenay
sumber