Alibaba Cloud Linux 2 dengan versi kernel 4.19.91-24.al7 dan yang lebih baru serta Alibaba Cloud Linux 3 dengan versi kernel 5.10.46-7.al8 dan yang lebih baru mendukung fitur identitas grup. Fitur ini memungkinkan Anda mengonfigurasi identitas berbeda untuk grup kontrol CPU (cgroups) guna menentukan prioritas proses dalam cgroups tersebut.
Informasi Latar Belakang
Saat menjalankan tugas sensitif-latensi dan tugas komputasi pada instans yang sama, penjadwal kernel Linux harus memberikan lebih banyak peluang penjadwalan kepada tugas prioritas tinggi untuk meminimalkan latensi penjadwalan dan dampak dari tugas prioritas rendah terhadap kinerja sistem. Dalam skenario ini, Alibaba Cloud Linux menyediakan fitur identitas grup dan menambahkan antarmuka untuk mengonfigurasi prioritas penjadwalan bagi cgroups CPU. Tugas dengan prioritas berbeda memiliki karakteristik sebagai berikut:
Tugas prioritas tinggi memiliki latensi bangun minimal.
Tugas prioritas rendah tidak memengaruhi kinerja tugas prioritas tinggi.
Membangunkan tugas prioritas rendah tidak memengaruhi kinerja tugas prioritas tinggi.
Tugas prioritas rendah tidak berbagi unit perangkat keras dan tidak menyebabkan dampak negatif pada kinerja tugas prioritas tinggi.
Prasyarat
Pada Alibaba Cloud Linux 2 dengan versi kernel
4.19.91-26,4.19.91-26.1,4.19.91-26.2, atau4.19.91-26.3, fitur identitas grup dinonaktifkan di kernel. Jalankan perintahuname -runtuk memeriksa versi kernel Alibaba Cloud Linux 2.Pada Alibaba Cloud Linux 3 dengan versi kernel
5.10.112-11.al8,5.10.112-11.1.al8,5.10.112-11.2.al8,5.10.134-12.al8,5.10.134-12.1.al8, atau5.10.134-12.2.al8, fitur identitas grup juga dinonaktifkan di kernel.
Jika menggunakan fitur identitas grup pada Alibaba Cloud Linux 2 dengan versi kernel dalam rentang
4.19.91-25.1.al7hingga4.19.91-25.5.al7, downtime akan terjadi. Untuk menghindari hal ini, tingkatkan versi kernel ke4.19.91-25.6.al7atau yang lebih baru. Informasi lebih lanjut dapat ditemukan di bagian Tingkatkan Kernel dari topik "Ubah Versi Kernel".Jika menggunakan Alibaba Cloud Linux 3 dengan versi kernel
5.10.134-12.2.al8pada arsitektur x86_64, jalankan perintah berikut untuk mengaktifkan fitur identitas grup:yum makecache sudo yum install scheduler-group-identity.x86_64 -yPada Alibaba Cloud Linux 2 dengan versi kernel
4.19.91-26.4atau yang lebih baru dan Alibaba Cloud Linux 3 dengan versi kernel5.10.134-13.al8atau yang lebih baru, antarmuka/proc/sys/kernel/sched_group_identity_enabledditambahkan untuk mengaktifkan fitur identitas grup. Sebelum menggunakan fitur ini, jalankan perintahsudo sh -c 'echo 1 > /proc/sys/kernel/sched_group_identity_enabled'.
Cara Kerja Fitur Identitas Grup
Fitur identitas grup memungkinkan pengonfigurasian identitas untuk cgroups CPU guna menentukan prioritas tugas dalam cgroups. Fitur ini bergantung pada arsitektur dual red-black tree. Red-black tree prioritas rendah didasarkan pada red-black tree antrian penjadwalan Completely Fair Scheduler (CFS) dan digunakan untuk menyimpan tugas prioritas rendah.
Saat kernel menjadwalkan tugas yang telah dikonfigurasi identitasnya, kernel memproses tugas berdasarkan prioritasnya. Tabel berikut menggambarkan identitas dalam urutan prioritas menurun.
Identitas | Deskripsi |
| Mengidentifikasi tugas prioritas tinggi. Tugas prioritas tinggi memiliki lebih banyak kesempatan untuk merebut sumber daya dibandingkan tugas prioritas normal atau rendah. Saat CFS menjadwalkan tugas prioritas tinggi, skenario berikut mungkin terjadi:
|
| Mengidentifikasi tugas prioritas normal. Tugas prioritas normal memiliki lebih banyak kesempatan untuk merebut sumber daya dibandingkan tugas prioritas rendah. Saat CFS menjadwalkan tugas prioritas normal, skenario berikut mungkin terjadi:
|
| Mengidentifikasi tugas prioritas rendah. Saat CFS menjadwalkan tugas prioritas rendah, skenario berikut mungkin terjadi: Jika tugas |
Identitas sebelumnya berlaku sesuai kebijakan manajemen sumber daya cgroups CPU.
Untuk tugas dalam cgroups CPU tingkat yang sama, prioritas identitas berlaku.
Untuk tugas dalam cgroups CPU tingkat yang berbeda, prioritas identitas tidak berlaku pada tugas dalam cgroups induk tetapi berlaku pada tugas dalam cgroups anak.
Untuk tugas dengan prioritas identitas yang sama, sumber daya diperebutkan sesuai kebijakan CFS. Perhatikan bahwa waktu proses tugas yang diidentifikasi oleh identitas
ID_UNDERCLASSatauID_NORMALmungkin tidak mencapai nilai minimum.
Identitas lainnya
Identitas | Deskripsi |
| Mengidentifikasi tugas pengusir SMT. Saat tugas pengusir SMT berjalan pada CPU SMT, tugas tersebut mengeluarkan tugas-tugas yang diidentifikasi oleh identitas |
| Menentukan bahwa saat tugas bangun, tugas tersebut mencoba menemukan CPU yang idle dalam batas kebijakan penjadwal. |
| Digunakan bersama dengan parameter kernel |
Antarmuka
Antarmuka untuk Mengonfigurasi Identitas
Fitur identitas grup menyediakan antarmuka berikut untuk mengonfigurasi identitas tugas:
/sys/fs/cgroup/cpu/$cg/cpu.identitydan/sys/fs/cgroup/cpu/$cg/cpu.bvt_warp_ns. Variabel$cgmenentukan node direktori cgroup anak tempat tugas berjalan. Sebelum menggunakan antarmuka ini, perhatikan hal berikut:Antarmuka
cpu.bvt_warp_nsadalah antarmuka konfigurasi cepat. Nilai yang ditulis pada antarmuka ini dikonversi menjadi nilai identitas.Anda dapat menggunakan antarmuka
cpu.identitydancpu.bvt_warp_nsuntuk mengubah identitas cgroups.Nilai identitas yang ditulis menggunakan antarmuka
cpu.identitymenimpa nilai identitas yang sebelumnya ditulis menggunakan antarmukacpu.bvt_warp_ns, tetapi nilai antarmukacpu.bvt_warp_nstetap tidak berubah.Nilai identitas yang ditulis menggunakan antarmuka
cpu.bvt_warp_nsmenimpa nilai identitas yang sebelumnya ditulis menggunakan antarmukacpu.identity, tetapi nilai antarmukacpu.identitytetap tidak berubah.Anda dapat menggunakan salah satu antarmuka untuk mengonfigurasi identitas tugas. Namun, kami menyarankan agar Anda tidak menggunakan kedua antarmuka tersebut secara bersamaan.
Jika Anda tidak terbiasa dengan operasi terkait kernel sistem operasi, kami menyarankan agar Anda tidak menggunakan antarmuka
cpu.identity.
Tabel berikut menggambarkan antarmuka tersebut.
Antarmuka
Deskripsi
cpu.identityNilai default adalah 0, yang menentukan identitas
ID_NORMAL.Antarmuka ini adalah bidang 5-bit. Nilai valid setiap bit: 0 dan 1. Nilai 0 menentukan bahwa identitas tidak diasumsikan. Nilai 1 menentukan bahwa identitas diasumsikan. Deskripsi setiap bit:
Jika antarmuka dibiarkan kosong, identitas
ID_NORMALdigunakan.Bit 0: menentukan identitas
ID_UNDERCLASS.Bit 1: menentukan identitas
ID_HIGHCLASS.Bit 2: menentukan identitas
ID_SMT_EXPELLER.Bit 3: menentukan identitas
ID_IDLE_SAVER.Bit 4: menentukan identitas
ID_IDLE_SEEKER.
Sebagai contoh, jika Anda ingin mengatur identitas cgroup menjadi
ID_HIGHCLASSdanID_IDLE_SEEKER, atur bit 1 dan bit 4 menjadi 1 dan bit lainnya menjadi 0 untuk mendapatkan nilai biner 10010, yang dikonversi menjadi nilai desimal 18. Kemudian, jalankan perintahecho 18 > /sys/fs/cgroup/cpu/$cg/cpu.identityuntuk menulis 18 ke antarmuka cpu.identity.cpu.bvt_warp_nsNilai default adalah 0, yang menentukan identitas
ID_NORMAL. Nilai valid:2: menentukan identitas
ID_SMT_EXPELLER,ID_IDLE_SEEKER, danID_HIGHCLASS. Nilai yang sesuai di antarmuka cpu.identity adalah 22.1: menentukan identitas
ID_HIGHCLASSdanID_IDLE_SEEKER. Nilai yang sesuai di antarmuka cpu.identity adalah 18.0: menentukan identitas
ID_NORMAL. Nilai yang sesuai di antarmuka cpu.identity adalah 0.-1: menentukan identitas
ID_UNDERCLASSdanID_IDLE_SAVER. Nilai yang sesuai di antarmuka cpu.identity adalah 9.-2: menentukan identitas
ID_UNDERCLASSdanID_IDLE_SAVER. Nilai yang sesuai di antarmuka cpu.identity adalah 9.
CatatanSecara default, Alibaba Cloud Linux mendukung antarmuka cgroup v1. Alibaba Cloud Linux 3 dengan versi kernel
5.10.134-13dan yang lebih baru dalam seri kernel 5.10 juga mendukung antarmuka cgroup v2 berikut untuk fitur identitas grup:/sys/fs/cgroup/$cg/cpu.identitydan/sys/fs/cgroup/$cg/cpu.bvt_warp_ns. Variabel$cgmenentukan node direktori cgroup anak tempat tugas berjalan.Antarmuka untuk Mengaktifkan atau Menonaktifkan Fitur Penjadwalan Kernel
Anda dapat menjalankan perintah berikut untuk melihat pengaturan default fitur penjadwalan kernel menggunakan antarmuka
sched_features:sudo cat /sys/kernel/debug/sched_featuresTabel berikut menggambarkan fitur penjadwalan kernel.
Fitur Penjadwalan Kernel
Deskripsi
Nilai Default
ID_IDLE_AVGFitur ini digunakan bersama dengan identitas
ID_IDLE_SAVERuntuk menghitung waktu proses tugasID_UNDERCLASSmenuju waktu idle. Ini memastikan bahwa tidak ada CPU yang tetap idle saat hanya tugasID_UNDERCLASSyang berjalan, dan mencegah pemborosan sumber daya.ID_IDLE_AVG: menunjukkan bahwa fitur diaktifkan.ID_RESCUE_EXPELLEEFitur ini digunakan dalam skenario penyeimbangan beban. Jika tugas tidak dapat menemukan sumber daya CPU yang tersedia, CPU yang sedang mengeluarkan tugas
ID_UNDERCLASSdigunakan untuk menyeimbangkan beban. Fitur ini membantu memindahkan tugasID_UNDERCLASSkeluar dari status dikeluarkan secepat mungkin.ID_RESCUE_EXPELLEE: menunjukkan bahwa fitur diaktifkan.ID_EXPELLEE_NEVER_HOTSetelah fitur ini diaktifkan, jika permintaan dimulai untuk memigrasikan tugas yang sedang dikeluarkan ke CPU lain, cache panas tidak menyebabkan permintaan migrasi ditolak. Fitur ini membantu memindahkan tugas
ID_UNDERCLASSkeluar dari status dikeluarkan secepat mungkin.NO_ID_EXPELLEE_NEVER_HOT: menunjukkan bahwa fitur dinonaktifkan.ID_LOOSE_EXPELSetelah fitur ini diaktifkan, CPU tidak memperbarui status pengeluaran setiap kali CPU memilih tugas tetapi secara otomatis memperbarui status berdasarkan waktu yang ditentukan oleh parameter kernel
sched_expel_update_interval. Konfigurasi fitur ini hanya memengaruhi pembaruan status saat CPU memilih tugas. Pembaruan untuk interupsi prosesor antar (IPI) tidak terpengaruh.NO_ID_LOOSE_EXPEL: menunjukkan bahwa fitur dinonaktifkan.ID_LAST_HIGHCLASS_STAYSetelah fitur ini diaktifkan, tugas
ID_HIGHCLASSterakhir yang berjalan pada CPU tidak dapat dimigrasikan ke CPU lain.ID_LAST_HIGHCLASS_STAY: menunjukkan bahwa fitur diaktifkan.ID_EXPELLER_SHARE_COREJika fitur ini diaktifkan, tugas
ID_SMT_EXPELLERdapat diprioritaskan berjalan pada core fisik tempat tugasID_SMT_EXPELLERsudah berjalan.Jika fitur ini dinonaktifkan, tugas
ID_SMT_EXPELLERdidistribusikan di seluruh core fisik. Dengan cara ini, tugasID_SMT_EXPELLERtidak saling mengganggu.
ID_EXPELLER_SHARE_CORE: menunjukkan bahwa fitur diaktifkan.ID_ABSOLUTE_EXPELPada Alibaba Cloud Linux 3, fitur ini diperkenalkan dalam versi kernel
5.10.134-16.3dan dapat digunakan dalam versi kernel5.10.134-16.3dan yang lebih baru dalam seri kernel 5.10. Setelah fitur ini diaktifkan, tugasID_UNDERCLASSsepenuhnya ditekan dan tidak dapat dijadwalkan jika tugasID_NORMALatauID_HIGHCLASSada dalam antrian tugas untuk dijalankan. Dalam skenario terburuk, tugasID_UNDERCLASSkelaparan. Dalam skenario penyebaran hybrid, evaluasi beban tugas dengan identitas berbeda sebelum mengaktifkan fitur ini.NO_ID_ABSOLUTE_EXPEL: menunjukkan bahwa fitur dinonaktifkan.ID_LOAD_BALANCEPada Alibaba Cloud Linux 3, fitur ini diperkenalkan dalam versi kernel
5.10.134-16.3dan dapat digunakan dalam versi kernel5.10.134-16.3dan yang lebih baru dalam seri kernel 5.10. Setelah fitur ini diaktifkan, penjadwal mempertimbangkan CPU tempat hanya tugasID_UNDERCLASSberjalan sebagai idle dan mencoba memigrasikan tugasID_HIGHCLASSke CPU idle tersebut saat penjadwal menyeimbangkan beban. Selama migrasi, penjadwal mencoba mendistribusikan tugasID_HIGHCLASSdi antara CPU. Ini mencegah perebutan sumber daya CPU dan inferensi Hyper-Threading (HT) antara tugasID_HIGHCLASSdan memastikan bahwa setiap tugasID_HIGHCLASSmemperoleh sumber daya CPU yang cukup.NO_ID_LOAD_BALANCE: menunjukkan bahwa fitur dinonaktifkan.Antarmuka yang Digunakan oleh
sysctluntuk Mengonfigurasi Parameter KernelKemampuan spesifik dari fitur identitas grup bergantung pada nilai parameter kernel. Tabel berikut menggambarkan parameter kernel.
Parameter Kernel
Deskripsi
Satuan
Nilai Default
/proc/sys/kernel/sched_expel_update_intervalInterval pembaruan status pengeluaran secara otomatis ketika CPU memilih tugas. Parameter kernel ini hanya berlaku jika fitur
ID_LOOSE_EXPELdiaktifkan.ms
10
/proc/sys/kernel/sched_expel_idle_balance_delayInterval minimum
idle balanceketika CPU sedang mengeluarkan tugas. Nilai -1 menentukan bahwaidle balancetidak diizinkan.Jika hanya tugas
ID_UNDERCLASSyang ada pada CPU dan tugas-tugas tersebut sedang dikeluarkan, CPU dianggap idle.Idle balancedilakukan pada CPU untuk meningkatkan efek penyeimbangan beban. Namun, ini dapat merusak tugasID_UNDERCLASS. Anda dapat menentukan parametersched_expel_idle_balance_delayuntuk mengurangi masalah ini.ms
-1
/proc/sys/kernel/sched_idle_saver_wmarkWatermark untuk waktu idle CPU. Saat tugas
ID_IDLE_SAVERbangun, tugas tersebut mencoba menemukan CPU idle yang waktu idle-nya melebihi watermark yang ditentukan.ns
0
/proc/sys/kernel/sched_group_identity_enabledMulai dari versi kernel
4.19.91-26.4, antarmuka/proc/sys/kernel/sched_group_identity_enabledditambahkan untuk memungkinkan Anda mengaktifkan fitur identitas grup. Sebelum Anda dapat menggunakan fitur identitas grup, Anda harus menjalankan perintahecho 1 > /proc/sys/kernel/sched_group_identity_enableduntuk mengaktifkan fitur tersebut.Setelah fitur identitas grup diaktifkan, data tidak dapat ditulis ke antarmuka
/proc/sys/kernel/sched_group_identity_enabledjika nilai antarmukacpu.bvt_warp_nsataucpu.identitycgroup bukan nol.CatatanJika versi kernel Anda adalah
4.19.91-26.4.al7,4.19.91-26.5.al7, atau4.19.91-26.6.al7, antarmukasched_group_identity_enableddisetel ke 1, dan nilai antarmuka cpu.bvt_warp_ns cgroup bukan nol, kesalahan terjadi saat Anda membaca pengaturan/proc/sys/kernel/sched_group_identity_enabled. Ini adalah bug pembacaan yang tidak memengaruhi penggunaan normal antarmuka. Bug ini diperbaiki dalam versi kernel4.19.91-27.al7dan yang lebih baru.N/A
0
Output Informasi
Saat menggunakan fitur identitas grup, Anda dapat menjalankan perintah berikut untuk melihat berbagai parameter:
cat /proc/sched_debugTabel berikut menggambarkan parameter output.
Parameter | Deskripsi |
| Jumlah tugas |
| Jumlah tugas |
| Jumlah tugas non- |
| Menunjukkan apakah tugas |
| Menunjukkan apakah tugas |
| Total waktu proses tugas |
| Total waktu proses tugas |
| Jumlah tugas non- |
| Perbedaan antara vruntime minimum dari dua red-black tree saat CPU mulai mengeluarkan tugas. |
| Total perbedaan antara vruntime minimum dari dua red-black tree yang disebabkan oleh status pengeluaran CPU. |
| vruntime minimum dari red-black tree prioritas rendah. |