全部产品
Search
文档中心

Alibaba Cloud Linux:Fitur Identitas Grup

更新时间:Jun 28, 2025

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

Catatan
  • Pada Alibaba Cloud Linux 2 dengan versi kernel 4.19.91-26, 4.19.91-26.1, 4.19.91-26.2, atau 4.19.91-26.3, fitur identitas grup dinonaktifkan di kernel. Jalankan perintah uname -r untuk 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, atau 5.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.al7 hingga 4.19.91-25.5.al7, downtime akan terjadi. Untuk menghindari hal ini, tingkatkan versi kernel ke 4.19.91-25.6.al7 atau 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.al8 pada arsitektur x86_64, jalankan perintah berikut untuk mengaktifkan fitur identitas grup:

    yum makecache
    sudo yum install scheduler-group-identity.x86_64 -y
  • Pada Alibaba Cloud Linux 2 dengan versi kernel 4.19.91-26.4 atau yang lebih baru dan Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-13.al8 atau yang lebih baru, antarmuka /proc/sys/kernel/sched_group_identity_enabled ditambahkan untuk mengaktifkan fitur identitas grup. Sebelum menggunakan fitur ini, jalankan perintah sudo 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

ID_HIGHCLASS

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:

  • Jika tugas prioritas tinggi bangun saat tugas prioritas rendah sedang berjalan, tugas prioritas tinggi dapat secara tanpa syarat merebut sumber daya dari tugas prioritas rendah.

  • Jika tugas prioritas tinggi bangun saat tugas prioritas normal sedang berjalan dan waktu proses virtual (vruntime) tugas prioritas tinggi lebih pendek daripada vruntime tugas prioritas normal, tugas prioritas tinggi dapat mengabaikan kebijakan penjadwalan asli dan merebut sumber daya. Kebijakan penjadwalan asli menetapkan bahwa tugas tidak dapat merebut sumber daya ketika waktu proses tugas pada CPU lebih pendek daripada waktu proses minimum.

  • Jika tugas prioritas rendah atau normal sedang berjalan saat tugas-tugas lain mengantri untuk berjalan, tugas prioritas tinggi yang vruntime-nya lebih pendek daripada vruntime tugas yang sedang berjalan dapat mengabaikan kebijakan penjadwalan asli dan merebut sumber daya. Kebijakan penjadwalan asli menetapkan bahwa tugas tidak dapat merebut sumber daya ketika waktu proses tugas pada CPU lebih pendek daripada waktu proses minimum.

ID_NORMAL

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:

  • Jika tugas prioritas normal bangun saat tugas prioritas rendah sedang berjalan, tugas prioritas normal dapat secara tanpa syarat merebut sumber daya dari tugas prioritas rendah.

  • Jika tugas prioritas rendah sedang berjalan saat tugas-tugas lain mengantri untuk berjalan, tugas prioritas normal yang vruntime-nya lebih pendek daripada vruntime tugas yang sedang berjalan dapat mengabaikan kebijakan penjadwalan asli dan merebut sumber daya. Kebijakan penjadwalan asli menetapkan bahwa tugas tidak dapat merebut sumber daya ketika waktu proses tugas pada CPU lebih pendek daripada waktu proses minimum.

ID_UNDERCLASS

Mengidentifikasi tugas prioritas rendah.

Saat CFS menjadwalkan tugas prioritas rendah, skenario berikut mungkin terjadi:

Jika tugas ID_SMT_EXPELLER berjalan pada CPU SMT peer, tugas prioritas rendah dikeluarkan dari CPU saat ini.

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_UNDERCLASS atau ID_NORMAL mungkin tidak mencapai nilai minimum.

Identitas lainnya

Identitas

Deskripsi

ID_SMT_EXPELLER

Mengidentifikasi tugas pengusir SMT. Saat tugas pengusir SMT berjalan pada CPU SMT, tugas tersebut mengeluarkan tugas-tugas yang diidentifikasi oleh identitas ID_UNDERCLASS dari CPU peer.

ID_IDLE_SEEKER

Menentukan bahwa saat tugas bangun, tugas tersebut mencoba menemukan CPU yang idle dalam batas kebijakan penjadwal.

ID_IDLE_SAVER

Digunakan bersama dengan parameter kernel sched_idle_saver_wmark. Anda dapat menggunakan sched_idle_saver_wmark untuk mengonfigurasi watermark untuk waktu idle CPU. Saat tugas yang diidentifikasi oleh identitas ID_IDLE_SAVER bangun, tugas tersebut mencoba menemukan CPU yang waktu idle-nya melebihi watermark yang ditentukan.

Antarmuka

  • Antarmuka untuk Mengonfigurasi Identitas

    Fitur identitas grup menyediakan antarmuka berikut untuk mengonfigurasi identitas tugas: /sys/fs/cgroup/cpu/$cg/cpu.identity dan /sys/fs/cgroup/cpu/$cg/cpu.bvt_warp_ns. Variabel $cg menentukan node direktori cgroup anak tempat tugas berjalan. Sebelum menggunakan antarmuka ini, perhatikan hal berikut:

    • Antarmuka cpu.bvt_warp_ns adalah antarmuka konfigurasi cepat. Nilai yang ditulis pada antarmuka ini dikonversi menjadi nilai identitas.

    • Anda dapat menggunakan antarmuka cpu.identity dan cpu.bvt_warp_ns untuk mengubah identitas cgroups.

    • Nilai identitas yang ditulis menggunakan antarmuka cpu.identity menimpa nilai identitas yang sebelumnya ditulis menggunakan antarmuka cpu.bvt_warp_ns, tetapi nilai antarmuka cpu.bvt_warp_ns tetap tidak berubah.

    • Nilai identitas yang ditulis menggunakan antarmuka cpu.bvt_warp_ns menimpa nilai identitas yang sebelumnya ditulis menggunakan antarmuka cpu.identity, tetapi nilai antarmuka cpu.identity tetap 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.identity

    Nilai 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_NORMAL digunakan.

    • 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_HIGHCLASS dan ID_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 perintah echo 18 > /sys/fs/cgroup/cpu/$cg/cpu.identity untuk menulis 18 ke antarmuka cpu.identity.

    cpu.bvt_warp_ns

    Nilai default adalah 0, yang menentukan identitas ID_NORMAL. Nilai valid:

    • 2: menentukan identitas ID_SMT_EXPELLER, ID_IDLE_SEEKER, dan ID_HIGHCLASS. Nilai yang sesuai di antarmuka cpu.identity adalah 22.

    • 1: menentukan identitas ID_HIGHCLASS dan ID_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_UNDERCLASS dan ID_IDLE_SAVER. Nilai yang sesuai di antarmuka cpu.identity adalah 9.

    • -2: menentukan identitas ID_UNDERCLASS dan ID_IDLE_SAVER. Nilai yang sesuai di antarmuka cpu.identity adalah 9.

    Catatan

    Secara default, Alibaba Cloud Linux mendukung antarmuka cgroup v1. Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-13 dan yang lebih baru dalam seri kernel 5.10 juga mendukung antarmuka cgroup v2 berikut untuk fitur identitas grup:

    /sys/fs/cgroup/$cg/cpu.identity dan /sys/fs/cgroup/$cg/cpu.bvt_warp_ns. Variabel $cg menentukan 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_features

    Tabel berikut menggambarkan fitur penjadwalan kernel.

    Fitur Penjadwalan Kernel

    Deskripsi

    Nilai Default

    ID_IDLE_AVG

    Fitur ini digunakan bersama dengan identitas ID_IDLE_SAVER untuk menghitung waktu proses tugas ID_UNDERCLASS menuju waktu idle. Ini memastikan bahwa tidak ada CPU yang tetap idle saat hanya tugas ID_UNDERCLASS yang berjalan, dan mencegah pemborosan sumber daya.

    ID_IDLE_AVG: menunjukkan bahwa fitur diaktifkan.

    ID_RESCUE_EXPELLEE

    Fitur ini digunakan dalam skenario penyeimbangan beban. Jika tugas tidak dapat menemukan sumber daya CPU yang tersedia, CPU yang sedang mengeluarkan tugas ID_UNDERCLASS digunakan untuk menyeimbangkan beban. Fitur ini membantu memindahkan tugas ID_UNDERCLASS keluar dari status dikeluarkan secepat mungkin.

    ID_RESCUE_EXPELLEE: menunjukkan bahwa fitur diaktifkan.

    ID_EXPELLEE_NEVER_HOT

    Setelah 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_UNDERCLASS keluar dari status dikeluarkan secepat mungkin.

    NO_ID_EXPELLEE_NEVER_HOT: menunjukkan bahwa fitur dinonaktifkan.

    ID_LOOSE_EXPEL

    Setelah 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_STAY

    Setelah fitur ini diaktifkan, tugas ID_HIGHCLASS terakhir yang berjalan pada CPU tidak dapat dimigrasikan ke CPU lain.

    ID_LAST_HIGHCLASS_STAY: menunjukkan bahwa fitur diaktifkan.

    ID_EXPELLER_SHARE_CORE

    • Jika fitur ini diaktifkan, tugas ID_SMT_EXPELLER dapat diprioritaskan berjalan pada core fisik tempat tugas ID_SMT_EXPELLER sudah berjalan.

    • Jika fitur ini dinonaktifkan, tugas ID_SMT_EXPELLER didistribusikan di seluruh core fisik. Dengan cara ini, tugas ID_SMT_EXPELLER tidak saling mengganggu.

    ID_EXPELLER_SHARE_CORE: menunjukkan bahwa fitur diaktifkan.

    ID_ABSOLUTE_EXPEL

    Pada Alibaba Cloud Linux 3, fitur ini diperkenalkan dalam versi kernel 5.10.134-16.3 dan dapat digunakan dalam versi kernel 5.10.134-16.3 dan yang lebih baru dalam seri kernel 5.10. Setelah fitur ini diaktifkan, tugas ID_UNDERCLASS sepenuhnya ditekan dan tidak dapat dijadwalkan jika tugas ID_NORMAL atau ID_HIGHCLASS ada dalam antrian tugas untuk dijalankan. Dalam skenario terburuk, tugas ID_UNDERCLASS kelaparan. Dalam skenario penyebaran hybrid, evaluasi beban tugas dengan identitas berbeda sebelum mengaktifkan fitur ini.

    NO_ID_ABSOLUTE_EXPEL: menunjukkan bahwa fitur dinonaktifkan.

    ID_LOAD_BALANCE

    Pada Alibaba Cloud Linux 3, fitur ini diperkenalkan dalam versi kernel 5.10.134-16.3 dan dapat digunakan dalam versi kernel 5.10.134-16.3 dan yang lebih baru dalam seri kernel 5.10. Setelah fitur ini diaktifkan, penjadwal mempertimbangkan CPU tempat hanya tugas ID_UNDERCLASS berjalan sebagai idle dan mencoba memigrasikan tugas ID_HIGHCLASS ke CPU idle tersebut saat penjadwal menyeimbangkan beban. Selama migrasi, penjadwal mencoba mendistribusikan tugas ID_HIGHCLASS di antara CPU. Ini mencegah perebutan sumber daya CPU dan inferensi Hyper-Threading (HT) antara tugas ID_HIGHCLASS dan memastikan bahwa setiap tugas ID_HIGHCLASS memperoleh sumber daya CPU yang cukup.

    NO_ID_LOAD_BALANCE: menunjukkan bahwa fitur dinonaktifkan.

  • Antarmuka yang Digunakan oleh sysctl untuk Mengonfigurasi Parameter Kernel

    Kemampuan 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_interval

    Interval pembaruan status pengeluaran secara otomatis ketika CPU memilih tugas. Parameter kernel ini hanya berlaku jika fitur ID_LOOSE_EXPEL diaktifkan.

    ms

    10

    /proc/sys/kernel/sched_expel_idle_balance_delay

    Interval minimum idle balance ketika CPU sedang mengeluarkan tugas. Nilai -1 menentukan bahwa idle balance tidak diizinkan.

    Jika hanya tugas ID_UNDERCLASS yang ada pada CPU dan tugas-tugas tersebut sedang dikeluarkan, CPU dianggap idle. Idle balance dilakukan pada CPU untuk meningkatkan efek penyeimbangan beban. Namun, ini dapat merusak tugas ID_UNDERCLASS. Anda dapat menentukan parameter sched_expel_idle_balance_delay untuk mengurangi masalah ini.

    ms

    -1

    /proc/sys/kernel/sched_idle_saver_wmark

    Watermark untuk waktu idle CPU. Saat tugas ID_IDLE_SAVER bangun, tugas tersebut mencoba menemukan CPU idle yang waktu idle-nya melebihi watermark yang ditentukan.

    ns

    0

    /proc/sys/kernel/sched_group_identity_enabled

    Mulai dari versi kernel 4.19.91-26.4, antarmuka /proc/sys/kernel/sched_group_identity_enabled ditambahkan untuk memungkinkan Anda mengaktifkan fitur identitas grup. Sebelum Anda dapat menggunakan fitur identitas grup, Anda harus menjalankan perintah echo 1 > /proc/sys/kernel/sched_group_identity_enabled untuk mengaktifkan fitur tersebut.

    Setelah fitur identitas grup diaktifkan, data tidak dapat ditulis ke antarmuka /proc/sys/kernel/sched_group_identity_enabled jika nilai antarmuka cpu.bvt_warp_ns atau cpu.identity cgroup bukan nol.

    Catatan

    Jika versi kernel Anda adalah 4.19.91-26.4.al7, 4.19.91-26.5.al7, atau 4.19.91-26.6.al7, antarmuka sched_group_identity_enabled disetel 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 kernel 4.19.91-27.al7 dan 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_debug

Tabel berikut menggambarkan parameter output.

Parameter

Deskripsi

nr_high_running

Jumlah tugas ID_HIGHCLASS yang sedang berjalan pada CPU saat ini.

nr_under_running

Jumlah tugas ID_UNDERCLASS yang sedang berjalan pada CPU saat ini.

nr_expel_immune

Jumlah tugas non-ID_UNDERCLASS yang sedang berjalan pada CPU saat ini.

smt_expeller

Menunjukkan apakah tugas ID_SMT_EXPELLER sedang berjalan pada CPU saat ini. Nilai 1 menunjukkan bahwa tugas ID_SMT_EXPELLER sedang berjalan pada CPU saat ini. Nilai 0 menunjukkan bahwa tidak ada tugas ID_SMT_EXPELLER yang sedang berjalan pada CPU saat ini.

on_expel

Menunjukkan apakah tugas ID_SMT_EXPELLER sedang berjalan pada CPU SMT peer. Nilai 1 menunjukkan bahwa tugas ID_SMT_EXPELLER sedang berjalan pada CPU SMT peer. Nilai 0 menunjukkan bahwa tidak ada tugas ID_SMT_EXPELLER yang sedang berjalan pada CPU SMT peer.

high_exec_sum

Total waktu proses tugas ID_HIGHCLASS pada CPU saat ini.

under_exec_sum

Total waktu proses tugas ID_UNDERCLASS pada CPU saat ini.

h_nr_expel_immune

Jumlah tugas non-ID_UNDERCLASS yang sedang berjalan pada cfs_rq.

expel_start

Perbedaan antara vruntime minimum dari dua red-black tree saat CPU mulai mengeluarkan tugas.

expel_spread

Total perbedaan antara vruntime minimum dari dua red-black tree yang disebabkan oleh status pengeluaran CPU.

min_under_vruntime

vruntime minimum dari red-black tree prioritas rendah.