PREEMPT_RT mengubah kernel Linux menjadi sistem operasi waktu nyata, memastikan pengaturan waktu yang tepat untuk tugas-tugas penting. Terintegrasi penuh ke dalam Linux 6.12 (dirilis 20 September 2024), fitur ini memungkinkan kemampuan waktu nyata untuk arsitektur seperti x86, ARM64, dan RISC-V. Berikut yang perlu Anda ketahui:
- Fitur Utama:
- Menggantikan spinlock tradisional dengan sleep lock yang dapat dicegah.
- Mengubah penangan interupsi menjadi thread, sehingga dapat dijadwalkan dan dihentikan sementara.
- Menerapkan pewarisan prioritas untuk mengatasi masalah inversi prioritas.
- Membuat operasi RCU (Read-Copy-Update) sepenuhnya dapat diinterupsi.
- Aplikasi:
- Digunakan dalam industri seperti otomotif, robotika, telekomunikasi, dan perangkat medis di mana ketepatan waktu sangat penting.
- Sistem penggerak seperti alat otomatisasi industri, kontrol penerbangan, dan lingkungan hosting yang membutuhkan server pribadi virtual latensi rendah.
- Pengaturan:
- Memungkinkan
KONFIG_PREEMPT_RTdalam konfigurasi kernel. - Sesuaikan pengaturan seperti
KONFIG_NO_HZ_PENUHdanKONFIG_RCU_BOOSTuntuk kinerja optimal. - Gunakan alat seperti
tes siklikuntuk mengukur latensi dan memvalidasi kinerja.
- Memungkinkan
PREEMPT_RT memprioritaskan ketepatan waktu daripada throughput, sehingga Linux cocok untuk aplikasi di mana tenggat waktu tidak dapat dinegosiasikan. Ini merupakan terobosan bagi industri yang menuntut kinerja deterministik.
Fitur Inti PREEMPT_RT: Bagaimana Linux Mencapai Kinerja Real-Time
Penjelasan PREEMPT_RT: Membangun & Mengoptimalkan Kernel Linux untuk Real-Time dan Latensi Sangat Rendah
sbb-itb-59e1987
Fitur Inti PREEMPT_RT
PREEMPT_RT berfokus pada empat fitur utama yang dirancang untuk mengurangi kode yang tidak dapat diinterupsi dan meningkatkan kontrol atas penjadwalan tugas. Berikut penjelasan lebih detail tentang masing-masing fitur tersebut.
Preemption Kernel Penuh
Salah satu pembaruan terbesar adalah transformasi spinlock standar (spinlock_t) dan kunci pembaca-penulis (rwlock_t) ke dalam spinlock tidur berbasis mutex. Spinlock tradisional dapat menyebabkan penundaan karena menonaktifkan preemption, memaksa tugas untuk menunggu secara aktif (busy-waiting). PREEMPT_RT mengubah hal ini dengan memperkenalkan kunci yang memungkinkan tugas untuk tidur dan di-preempt, bahkan ketika sedang memegang sumber daya.
Ini berarti tugas-tugas prioritas tinggi dapat menginterupsi tugas-tugas prioritas rendah, bahkan jika tugas-tugas prioritas rendah tersebut sedang memegang kunci. Namun, untuk operasi-operasi kritis tertentu – seperti penjadwal atau titik masuk perangkat keras – PREEMPT_RT mempertahankan raw_spinlock_t, yang berperilaku seperti kunci non-preemptible asli. Seperti yang dikatakan Paul McKenney, seorang Insinyur Terkemuka:
“”Inti dari patch PREEMPT_RT adalah untuk meminimalkan jumlah kode kernel yang tidak dapat diinterupsi, sekaligus meminimalkan jumlah kode yang harus diubah untuk menyediakan kemampuan interupsi tambahan ini.””
Selanjutnya, mari kita lihat bagaimana penanganan interupsi mendapatkan manfaat dari pendekatan ini.
Interupsi Berulir
PREEMPT_RT menggeser sebagian besar penangan interupsi perangkat keras dari konteks “hard IRQ” ke dalam thread kernel Berjalan dalam konteks proses. Penyesuaian ini memungkinkan penanganan interupsi untuk diprioritaskan, dihentikan sementara, atau bahkan diblokir.
Pada kernel Linux standar, penanganan interupsi yang berjalan lama dapat menyebabkan latensi tak terbatas karena menghentikan semua eksekusi lainnya. Interupsi berulir (threaded interrupts) mengatasi masalah ini. Secara default, thread interupsi ini berjalan dengan SCHED_FIFO prioritasnya adalah 50, tetapi administrator dapat mengubah prioritas mereka menggunakan alat seperti bagan. Sebagai contoh, Anda dapat memprioritaskan interupsi kartu jaringan untuk kontrol industri sambil menurunkan prioritas untuk I/O disk. Karena thread ini menggunakan spinlock tidur (sleeping spinlock) alih-alih spinlock mentah (raw spinlock), mereka menghindari kebutuhan untuk menonaktifkan interupsi perangkat keras saat memegang kunci.
Sekarang, mari kita jelajahi bagaimana PREEMPT_RT menangani tantangan yang berkaitan dengan prioritas.
Pewarisan Prioritas dan Rtmutex
Pembalikan prioritas Masalah utama yang terjadi adalah ketika tugas berprioritas tinggi terjebak menunggu sumber daya yang dipegang oleh tugas berprioritas rendah, sementara tugas berprioritas menengah (yang tidak membutuhkan sumber daya tersebut) mendahului tugas berprioritas rendah. PREEMPT_RT mengatasi masalah ini dengan pewarisan prioritas, untuk sementara meningkatkan prioritas tugas berprioritas rendah agar sesuai dengan prioritas tugas tertinggi yang sedang menunggu sumber daya.
Itu rtmutex Primitive adalah alat yang memungkinkan hal ini. Alat ini memastikan bahwa ketika terjadi konflik, tugas dengan prioritas rendah mendapatkan peningkatan prioritas untuk menyelesaikan bagian kritisnya tanpa gangguan dari tugas dengan prioritas menengah. Jika tugas yang prioritasnya ditingkatkan tersebut terblokir oleh kunci lain, peningkatan prioritas akan berlanjut ke bawah rantai ketergantungan. Seperti yang dijelaskan dalam dokumentasi kernel Linux:
“”Pewarisan prioritas memungkinkan aplikasi yang dirancang dengan baik untuk menggunakan kunci ruang pengguna di bagian-bagian penting dari thread berprioritas tinggi, tanpa kehilangan determinisme.””
Untuk mencapai hal ini, rtmutex menggunakan flag dan pohon yang diurutkan berdasarkan prioritas untuk mengelola tugas yang menunggu, sehingga menjaga overhead tetap rendah pada arsitektur yang didukung.
Terakhir, mari kita lihat bagaimana PREEMPT_RT meningkatkan operasi RCU.
RCU (Baca-Salin-Perbarui) yang Dapat Dihentikan

Read-Copy-Update (RCU) adalah teknik sinkronisasi yang banyak digunakan dalam kernel Linux. Pada kernel standar, bagian baca RCU bersifat non-preemptible, yang dapat menyebabkan penundaan yang tidak terduga. PREEMPT_RT mengubah hal ini dengan membuat bagian baca RCU menjadi preemptible. sepenuhnya dapat dicegah, memastikan bahwa tenggat waktu tugas secara real-time tidak terganggu. Penyesuaian ini merupakan landasan untuk mencapai perilaku yang dapat diprediksi yang dibutuhkan dalam sistem real-time.
Cara Mengkonfigurasi dan Menggunakan PREEMPT_RT
PREEMPT_RT sepenuhnya terintegrasi ke dalam kernel Linux utama, yang berarti patch eksternal tidak lagi diperlukan. Namun, menerapkan antrean patch terbaru tetap merupakan ide yang baik untuk dukungan arsitektur yang lebih baik dan peningkatan grafis. Setelah kernel siap, Anda perlu menyesuaikan pengaturannya untuk memanfaatkan sepenuhnya kemampuannya.
Pengaturan Konfigurasi Kernel
Untuk mengaktifkan kernel yang sepenuhnya dapat diinterupsi, aktifkan KONFIG_PREEMPT_RT. Pada kernel yang lebih baru, pengaturan ini terletak di bawah “Pengaturan Umum”, tetapi Anda mungkin perlu mengaktifkannya. AHLI_KONFIGURASI Pertama, buat agar terlihat di menu konfigurasi.
Untuk produksi server khusus dan lingkungan berkinerja tinggi lainnya, opsi tambahan dapat lebih mengoptimalkan kinerja:
KONFIG_NO_HZ_PENUHMengurangi interupsi penjadwalan waktu pada CPU yang sibuk, yang membantu meminimalkan jitter.KONFIG_RCU_BOOSTMencegah pembaca RCU yang didahului dari menunda masa tenggang.KONFIG_RCU_NOCB_CPU: Mengalihkan penanganan panggilan balik RCU ke CPU tertentu, mengurangi gangguan pada tugas waktu nyata.
Sangat penting juga untuk menonaktifkan opsi debugging yang dapat menyebabkan latensi tinggi. Matikan pengaturan seperti KONFIG_DEBUG_LOCKDEP, KONFIG_DEBUG_PREEMPT, KONFIG_DEBUG_OBJEK, Dan KONFIG_SLUB_DEBUG. Meskipun alat-alat ini berguna untuk pengembangan, alat-alat ini dapat secara signifikan merugikan target latensi. Seperti yang dijelaskan oleh kernelconfig.io:
“”Opsi ini mengubah kernel menjadi kernel waktu nyata dengan mengganti berbagai primitif penguncian (spinlock, rwlock, dll.) dengan varian yang dapat diinterupsi dan sadar akan pewarisan prioritas.””
Setelah kernel Anda berhasil dibangun dan di-boot, pastikan PREEMPT_RT aktif dengan menjalankan perintah berikut: cat /sys/kernel/realtime. Nilai kembalian dari 1 Menunjukkan keberhasilan. Anda juga dapat memverifikasinya dengan memeriksa “PREEMPT_RT” pada output dari uname -a.
Debugging dan Optimasi Kinerja
Penyempurnaan kernel sangat penting untuk mencapai kinerja optimal dengan beban kerja waktu nyata. Salah satu area kunci yang perlu diperhatikan adalah… mekanisme pembatasan waktu nyata, yang secara default mengalokasikan 50ms per detik untuk tugas-tugas non-real-time. Jika beban kerja Anda sepenuhnya real-time, Anda dapat menonaktifkan mekanisme ini dengan menulis -1 untuk /proc/sys/kernel/sched_rt_runtime_us. Seperti yang disampaikan oleh Jan Altenberg, Konsultan Senior Sumber Terbuka di OSADL:
“”Tugas real-time yang ‘berjalan tak terkendali’ dapat menyebabkan sistem kekurangan sumber daya. Sebagai mekanisme perlindungan, waktu eksekusi tugas real-time dapat dibatasi dengan menetapkan nilai dalam mikrodetik di /proc/sys/kernel/sched_rt_runtime_us.”‘
Untuk meningkatkan determinisme, isolasi inti CPU tertentu menggunakan parameter seperti isolcpus=2,3, rcu_nocbs=2,3, nohz_full=2,3, dan menetapkan afinitas irq=0. Ini mengalokasikan inti prosesor tersebut secara eksklusif untuk tugas-tugas waktu nyata.
Untuk mengelola thread interupsi, gunakan bagan alat. Thread ini biasanya berjalan dengan pengaturan default. SCHED_FIFO Prioritasnya adalah 50, tetapi Anda dapat menyesuaikannya untuk menghindari konflik dengan aplikasi Anda. Misalnya, untuk mengatur thread IRQ kartu jaringan ke prioritas 98, gunakan perintah: chrt -p -f 98.
Setelah menyelesaikan konfigurasi, sangat penting untuk menguji dan memvalidasi kinerja latensi. Alat-alat seperti tes siklik dapat mengukur latensi (misalnya, uji siklik -S -m -p98 -i250), ketika rtla (Analisis Linux Real-time) membantu mengidentifikasi dan menganalisis lonjakan latensi. Alat-alat ini memastikan pengaturan Anda memenuhi tuntutan aplikasi real-time.
Aplikasi dan Manfaat PREEMPT_RT
Kasus Penggunaan Aplikasi Waktu Nyata
PREEMPT_RT unggul dalam sistem di mana presisi waktu tidak dapat ditawar. Dalam kedirgantaraan, Hal ini memastikan navigasi dan kontrol penerbangan beroperasi tanpa penundaan mikrodetik, yang jika tidak, dapat membahayakan keselamatan. Telekomunikasi Perusahaan mengandalkannya untuk mengelola perutean data secara real-time, memastikan panggilan suara dan video yang lancar dengan menghilangkan jitter dan lonjakan latensi.
Di dalam industri otomotif, Ini merupakan landasan bagi sistem kontrol kendaraan, dengan pemain utama seperti Continental Automotive mendukung penerapannya. otomatisasi industri, PREEMPT_RT mendukung Programmable Logic Controllers (PLC) dan sistem SCADA, seringkali bekerja bersama protokol seperti EtherCAT untuk menjaga keselamatan dan efisiensi di lantai pabrik. Robotika Teknologi ini juga sangat bergantung pada kontrol aktuator yang presisi dan umpan balik sensor instan, memungkinkan robot untuk merespons perubahan lingkungan dengan segera.
Mungkin aplikasi yang paling penting ada di alat kesehatan, Di mana presisi sangatlah penting. Mulai dari monitor pasien hingga robot bedah, PREEMPT_RT memberikan kinerja deterministik yang dibutuhkan untuk memastikan sistem-sistem penting bagi kehidupan berfungsi dengan sempurna.
Manfaat untuk Lingkungan Hosting
Keunggulan PREEMPT_RT meluas ke lingkungan hosting, di mana responsivitas waktu nyata sama pentingnya. Untuk VPS dan server khusus, Hal ini meminimalkan latensi dengan memungkinkan penjadwal untuk memprioritaskan tugas-tugas berprioritas tinggi daripada tugas-tugas yang kurang penting. Ini memastikan waktu respons yang konsisten, yang secara langsung berdampak pada pengalaman pengguna dan keandalan layanan.
Model interupsi berulir mencegah “badai interupsi” membanjiri sistem selama operasi I/O yang berat. Dengan rt_mutex, Pewarisan prioritas memastikan bahwa tugas latar belakang berprioritas rendah tidak memblokir layanan hosting penting. Timer beresolusi tinggi memungkinkan akurasi penjadwalan tingkat mikrodetik, mengurangi jitter dalam pengaturan virtualisasi. Penyedia hosting, seperti Serverion, menawarkan build kernel kustom dengan PREEMPT_RT, memberikan fleksibilitas kepada administrator untuk menyempurnakan konfigurasi untuk beban kerja tertentu. Dengan menggunakan parameter seperti isolcpus dan afinitas Irak, Dengan demikian, penyedia layanan dapat mengalokasikan inti CPU untuk tugas-tugas yang sangat penting bagi kinerja, sementara operasi sistem rutin tetap terisolasi.
Kesimpulan
Panduan ini telah membahas secara mendalam bagaimana PREEMPT_RT mengubah Linux menjadi sistem operasi waktu nyata dengan memberikan kendali hampir penuh kepada penjadwal. Sejak dimasukkan ke dalam kernel utama mulai dari Linux 6.12 (September 2024), hal ini telah menghilangkan kebutuhan akan patch eksternal di berbagai arsitektur seperti x86, ARM64, dan RISC-V.
Konsepnya sederhana: kurangi kode yang tidak dapat diinterupsi sebanyak mungkin. Dengan mengubah spinlock menjadi sleep lock dan menjalankan penangan interupsi sebagai thread, tugas-tugas prioritas tinggi dapat menginterupsi hampir semua aktivitas kernel. Fitur-fitur seperti pewarisan prioritas mencegah tugas-tugas prioritas rendah menunda operasi kritis, sementara RCU yang dapat diinterupsi memastikan bahkan bagian kritis sisi baca pun tidak menyebabkan penundaan yang signifikan. Sebagai Sebastian Siewior, pengelola PREEMPT_RT, dengan tepat menyatakan:
“”Semua kendali berada di tangan penjadwal.””
Lompatan teknologi ini menawarkan manfaat praktis. Misalnya, Serverion Menggunakan build kernel PREEMPT_RT kustom untuk menyempurnakan isolasi CPU dan mengoptimalkan beban kerja real-time, memastikan waktu respons yang stabil bahkan di bawah tekanan I/O yang intens.
Yang membedakan sistem waktu nyata bukan hanya kecepatan—tetapi juga prediktabilitas. PREEMPT_RT meminimalkan jitter, memastikan tugas dieksekusi tepat saat dibutuhkan. Ini sangat penting untuk aplikasi seperti otomatisasi industri, telekomunikasi, dan layanan hosting yang kritis terhadap kinerja. Ini menghadirkan perilaku deterministik yang tidak dapat diberikan oleh kernel standar.
Dengan integrasinya ke dalam kernel utama dan dukungan dari distribusi perusahaan seperti Ubuntu Pro (Sejak Februari 2023), PREEMPT_RT menjadi lebih mudah diakses oleh penyedia hosting dan administrator sistem. Fitur ini memberikan kinerja yang andal dan latensi rendah yang dibutuhkan untuk lingkungan yang paling menuntut dan sensitif terhadap waktu saat ini.
Tanya Jawab Umum
Apakah saya memerlukan PREEMPT_RT atau Linux standar sudah cukup?
Kernel Linux standar, bila dikombinasikan dengan Patch PREEMPT_RT, memperoleh kemampuan waktu nyata. Hal ini menjadikannya pilihan yang tepat untuk aplikasi di mana latensi rendah dan waktu respons yang konsisten sangat penting. Namun, secara sendirinya, kernel Linux utama mungkin tidak cukup untuk memenuhi tuntutan waktu nyata yang ketat.
Apakah PREEMPT_RT akan mengurangi throughput keseluruhan pada sistem saya?
Untuk mencapai kinerja waktu nyata, PREEMPT_RT Pendekatan ini berfokus pada pengurangan kode kernel yang tidak dapat diinterupsi, yang membantu meningkatkan responsivitas sistem. Pendekatan ini mungkin menyebabkan sedikit penurunan throughput secara keseluruhan, tetapi memastikan perilaku yang konsisten dan dapat diprediksi – sangat penting untuk aplikasi yang sensitif terhadap waktu. Kompromi ini disengaja dan merupakan inti dari pemenuhan tuntutan sistem waktu nyata.
Berapa target latensi yang realistis dengan PREEMPT_RT?
Dengan PREEMPT_RT, Mencapai latensi dalam kisaran milidetik adalah tujuan realistis untuk sistem desktop maupun sistem tertanam. Namun, kinerja aktual sangat bergantung pada seberapa baik sistem dikonfigurasi dan disetel untuk memenuhi persyaratan tertentu. Pengaturan yang tepat adalah kunci untuk memastikan tingkat responsivitas yang diinginkan.
Artikel Blog Terkait
PakarPBN
A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.
In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.
The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.