Panduan chrt Linux: Kontrol Prioritas Proses Real-Time

Gambaran Umum

Bagi seorang administrator sistem, kemampuan mengatur kebijakan penjadwalan dan prioritas real-time pada proses Linux merupakan teknik krusial demi memangkas latensi beban kerja kritis. Melalui utilitas chrt yang menjadi bagian dari paket util-linux, kita dapat mengeksplorasi serta menerapkan mekanisme penjadwal real-time (seperti FIFO maupun RR) secara presisi ke dalam proses yang berjalan. Tulisan ini menyajikan panduan terstruktur di Ubuntu, mulai dari verifikasi instalasi paket, manipulasi prioritas proses di latar belakang, hingga inspeksi status penjadwalan secara langsung.

Memeriksa Kebijakan Penjadwalan dan Rentang Prioritas yang Didukung chrt

Sebelum bereksperimen, pastikan paket util-linux dan procps telah terpasang serta diperbarui pada sistem Ubuntu Anda.

Pembaruan repositori dan instalasi util-linux serta procps

Utilitas chrt dirancang untuk memanipulasi sekaligus menginspeksi atribut penjadwalan real-time milik suatu proses.
Dengan melewatkan opsi -m, kernel akan menampilkan daftar lengkap skema penjadwalan yang aktif beserta batas nilai prioritas minimum dan maksimumnya.
⚙️ [Opsi Utama]

-m : Menampilkan seluruh kebijakan penjadwalan yang tersedia di sistem beserta rentang prioritas minimum dan maksimumnya.
-p : Menargetkan Process ID (PID) tertentu untuk melihat atau memodifikasi atribut penjadwalannya.
-f : Menerapkan kebijakan real-time First-In, First-Out (SCHED_FIFO).
-r : Menetapkan algoritma real-time Round-Robin (SCHED_RR).
-o : Mengembalikan ke kebijakan time-sharing standar bawaan sistem (SCHED_OTHER).
-b : Mengaktifkan kebijakan pemrosesan bertahap atau batch (SCHED_BATCH).
-i : Menjalankan proses dengan prioritas sangat rendah saat CPU menganggur (SCHED_IDLE).
-d : Mengonfigurasi penjadwalan berbasis tenggat waktu ketat (SCHED_DEADLINE).

Pemeriksaan daftar kebijakan penjadwalan via chrt -m

Memeriksa Status Kebijakan dan Prioritas Awal Proses Aktif

Untuk keperluan demonstrasi, kita jalankan proses sleep 600 & agar sistem memiliki tugas latar belakang dummy yang aktif selama sepuluh menit.

Menjalankan proses sleep di latar belakang

Agar proses tersebut mudah dimanipulasi pada tahapan berikutnya, kita tampung Process ID (PID) terakhir ke dalam variabel shell lewat perintah TARGET_PID=$!.

Menyimpan PID proses latar belakang ke variabel

Selanjutnya, gunakan argumen chrt -p untuk meninjau konfigurasi penjadwalan default yang melekat pada proses target.
Informasi yang muncul menunjukkan bahwa sistem secara otomatis menempatkan proses baru ke dalam kelas time-sharing standar SCHED_OTHER dengan tingkat prioritas 0.

Memeriksa atribut penjadwalan via chrt -p

Kita juga dapat memverifikasi status tersebut menggunakan utilitas ps bersama flag -o untuk menampilkan kolom kelas penjadwalan (CLS), prioritas real-time (RTPRIO), dan prioritas internal kernel (PRI).
Pada laporan keluaran, kolom CLS tercatat sebagai time-sharing (TS), kolom RTPRIO masih kosong (-), serta kolom PRI berada di angka default 19.

Memverifikasi detail penjadwalan dengan ps

Beralih ke Penjadwalan Real-Time (SCHED_FIFO dan SCHED_RR)

Jalankan perintah sudo chrt -f -p 50 $TARGET_PID guna mengalihkan model penjadwalan target ke First-In, First-Out (SCHED_FIFO) sekaligus menyematkan nilai prioritas real-time di angka 50.
Karena pengaturan real-time memengaruhi pembagian alokasi komputasi CPU secara agresif, hak akses superuser (sudo) mutlak dibutuhkan.

Mengubah kebijakan proses menjadi SCHED_FIFO dengan prioritas 50

Lakukan pengecekan ulang melalui chrt -p untuk memastikan perubahan parameter berhasil diterapkan oleh kernel.
Hasil terminal memperlihatkan bahwa mekanisme proses kini beralih menjadi SCHED_FIFO dengan angka prioritas real-time tepat di angka 50.

Memvalidasi penerapan SCHED_FIFO dengan chrt -p

Jika ingin mengganti skema menjadi Round-Robin, eksekusi perintah sudo chrt -r -p 30 $TARGET_PID guna mengubah kebijakan ke SCHED_RR dengan prioritas baru bernilai 30.
Berbeda dari model FIFO murni, skema SCHED_RR membagi beban antrean berprioritas sama menggunakan jatah waktu (time slice) agar setiap proses bergantian memperoleh giliran kerja CPU secara adil.

Mengalihkan kebijakan ke SCHED_RR dengan prioritas 30

Kroscek kembali kondisi proses melalui perintah ps menggunakan flag -o untuk mengamati nilai pada atribut CLS, RTPRIO, serta PRI.
Terlihat jelas kolom penjadwalan kini mengindikasikan kelas RR, prioritas real-time (RTPRIO) berada di angka 30, dan prioritas internal kernel (PRI) disesuaikan menjadi 70.

Konfirmasi status SCHED_RR pada ps

Menjalankan Proses Baru Secara Real-Time dan Membersihkan Resource

Selain mengintervensi proses yang tengah berlangsung, perintah chrt mampu menyuntikkan kebijakan real-time sejak program pertama kali diinisialisasi, seperti pada contoh sudo chrt -r 25 sleep 300 & yang langsung berjalan di latar belakang dengan kebijakan SCHED_RR serta prioritas 25.
Kemampuan ini mempermudah peluncuran daemon atau daemonized worker tanpa perlu mencari PID-nya terlebih dahulu secara manual.

Inisialisasi proses baru langsung dengan SCHED_RR 25

Untuk memantau seluruh proses sleep yang aktif beserta kelas (CLS) dan prioritas real-time miliknya (RTPRIO), eksekusi perintah ps -eo pid,cls,rtprio,comm | grep '[s]leep'.
Hasil penyaringan memperlihatkan kedua proses sleep berjalan tertib di bawah bendera kelas RR dengan alokasi prioritas masing-masing sebesar 30 dan 25.

Inspeksi seluruh proses sleep aktif dengan ps dan grep

Setelah seluruh skenario pengujian tuntas, bersihkan lingkungan sistem dari proses latar belakang yang tersisa dengan perintah kill -9 $TARGET_PID && pkill -f 'sleep 300'.
Langkah ini secara tuntas mematikan proses target awal beserta proses uji kedua, mengembalikan kondisi resource komputasi ke status semula.

Membersihkan proses latar belakang menggunakan kill dan pkill

Demikian eksplorasi praktis mengenai tata cara mengendalikan kebijakan penjadwalan dan prioritas proses real-time di Linux via utilitas chrt.
Trik ini menjadi senjata ampuh dalam menjaga kestabilan latensi layanan penting serta mengoptimalkan efisiensi eksekusi aplikasi di lingkungan produksi.