2 poin oleh GN⁺ 2023-11-17 | 1 komentar | Bagikan ke WhatsApp

Titik akhir dukungan preemption waktu nyata Linux

  • Pekerjaan untuk menambahkan dukungan waktu nyata ke Linux dimulai sejak 2004, dan kini telah memasuki tahap akhir.
  • Tujuan preemption waktu nyata adalah agar proses dengan prioritas tertinggi dapat berjalan dengan latensi seminimal mungkin; untuk itu, kernel dibuat dapat dipreempt dalam sebanyak mungkin situasi.
  • Pekerjaan ini berujung pada penulisan ulang bagian inti kernel, sekaligus memberi manfaat yang melampaui penggunaan waktu nyata.

Penyelesaian masalah printk()

  • Fungsi printk() yang digunakan di kernel untuk mengirim pesan ke konsol sistem dan log bekerja secara sinkron, sehingga tidak akan kembali sebelum pesan dikirim ke semua tujuan yang dikonfigurasi.
  • Para pengembang waktu nyata memindahkan keluaran printk() ke thread terpisah agar menjadi asinkron, tetapi itu hanyalah solusi sementara.
  • Masalah printk() yang dikerjakan secara serius sejak 2018 sedang menuju penyelesaian lewat sekitar 300 patch, meski masih ada beberapa masalah rumit yang perlu dibereskan.

Prospek integrasi kode preemption waktu nyata ke mainline

  • Disampaikan harapan bahwa sisa kode preemption waktu nyata akan digabungkan ke mainline sebelum mencapai ulang tahun ke-20 pada akhir 2024.
  • Tidak ada perubahan terbaru pada kode printk(), tetapi kode handover telah diubah agar driver konsol dapat diperbarui satu per satu.
  • Kode juga diubah agar pesan penting sepenuhnya disalin ke buffer pesan sebelum baris pertama dicetak, dan untuk mencegah sistem jatuh akibat driver konsol yang bermasalah, pesan lebih dulu dicatat ke konsol yang aman.

Pendapat GN⁺

  • Pekerjaan menambahkan dukungan preemption waktu nyata ke kernel Linux hampir selesai, dan ini akan memberi manfaat besar bagi sistem yang memerlukan operasi waktu nyata.
  • Asinkronisasi fungsi printk() meningkatkan responsivitas sistem dan memainkan peran penting dalam mencapai tujuan preemption waktu nyata.
  • Artikel ini menunjukkan kemajuan penting dalam pengembangan kernel Linux dan menawarkan bacaan menarik bagi mereka yang tertarik pada pengembangan kernel.

1 komentar

 
GN⁺ 2023-11-17
Komentar Hacker News
  • Keunggulan mikrokernel QNX

    • Mikrokernel QNX telah menjamin keandalan selama puluhan tahun dengan menetapkan batas atas untuk setiap pekerjaan.
    • Kode mikrokernel hanya terdiri dari puluhan ribu baris, dan hanya menangani alokasi memori, dispatch CPU, serta pengiriman pesan antarproses.
    • Semua fungsi lainnya, termasuk driver dan logger, berada di ruang pengguna sehingga dapat dipreempt oleh thread dengan prioritas lebih tinggi.
    • Kernel QNX sama sekali tidak melakukan operasi string, sehingga tidak ada masalah yang timbul dari parsing string, formatting, atau pengiriman pesan.
  • Masalah pemrosesan real-time di Linux

    • Linux memiliki struktur yang tidak cocok untuk pemrosesan real-time, dengan kode kernel yang mencapai jutaan baris dan mengharuskan seluruh kode dapat dipreempt.
    • Karena tidak cocok sebagai arsitektur real-time, butuh waktu puluhan tahun untuk memperbaikinya.
    • Berfokus hanya pada masalah kernel bisa jadi mengabaikan masalah di tingkat CPU.
  • Fitur logging kernel dan contoh penggunaan nyata

    • Dijelaskan bagaimana upaya kernel untuk tetap mencetak pesan log bahkan saat sistem sedang crash dimanfaatkan dalam deployment nyata.
  • Kemungkinan penggantian kombinasi hardware/software real-time

    • Muncul pertanyaan apakah kombinasi hardware/software yang memerlukan pemrosesan real-time bisa digantikan oleh chip ARM dan x86 yang murah, hemat daya, dan berclock tinggi.
    • Disebutkan bahwa seiring meningkatnya kecepatan clock, pentingnya pemrosesan real-time yang sempurna bisa berkurang.
  • Perbedaan aplikasi real-time "hard" dan "soft"

    • Untuk aplikasi real-time "hard", sebaiknya tidak menggunakan OS umum seperti Linux.
    • Pada aplikasi real-time "soft" (misalnya video conference, pemutaran audio), sedikit latensi atau frame yang hilang bukan masalah besar.
    • Pembahasan tentang menjadikan Linux sebagai OS real-time berfokus pada kasus penggunaan real-time "soft" yang memang sudah memungkinkan.
    • Membuat kernel sepenuhnya dapat dipreempt dan meningkatkan kontrol atas scheduling lebih bermakna untuk pengelolaan sistem yang sehat daripada untuk menggantikan RTOS atau kode bare-metal.
  • Pemrosesan real-time di kernel Linux dan keterbatasan hardware

    • Meski kernel Linux mendukung pemrosesan real-time, hardware mungkin tetap tidak mendukung real-time karena cache dan fitur kompleks di dalam CPU.
    • Untuk pemrosesan real-time sejati, arsitektur CPU yang sederhana lebih disukai daripada hardware yang kompleks.
  • Masalah logging sinkron

    • Pernah mengalami masalah ketika logging sinkron seperti GLOG (library logging milik Google) terblokir oleh disk I/O sehingga layanan menjadi terlambat.
  • Cara menjamin responsivitas proses tertentu

    • Jika responsivitas proses tertentu penting, proses itu perlu diberi core CPU khusus dan area memori yang berurutan, serta dibuat bisa mengakses langsung kartu jaringan yang dipisahkan dari bagian OS lainnya.
  • Fitur preemption real-time Linux dan pengalaman masa lalu

    • Dibagikan pengalaman menggunakan patch RT_PREEMPT pada kernel Linux untuk peralatan ilmiah di masa lalu, beserta kesan terhadap peningkatan latensi dan jitter yang dihasilkannya.
  • Dampaknya bagi pengguna umum

    • Muncul pertanyaan tentang apa arti fitur pemrosesan real-time bagi pengguna umum, apakah hanya akan diaktifkan dalam situasi tertentu, atau juga bisa membantu meningkatkan responsivitas sistem secara umum.