2 puan yazan GN⁺ 2023-11-17 | 1 yorum | WhatsApp'ta paylaş

Linux'ta gerçek zamanlı preemption desteğinin varış noktası

  • Linux'a gerçek zamanlı destek ekleme çalışmaları 2004'te başladı ve artık son aşamaya girmiş durumda.
  • Gerçek zamanlı preemption'ın amacı, en yüksek öncelikli sürecin en az gecikmeyle çalışabilmesini sağlamaktır; bunun için çekirdek mümkün olduğunca çok durumda preempt edilebilir hale getirildi.
  • Bu çalışma, çekirdeğin temel bölümlerinin yeniden yazılmasıyla sonuçlandı ve gerçek zamanlı kullanım senaryolarının ötesine geçen faydalar sağladı.

printk() sorununun çözümü

  • Çekirdekte sistem konsoluna ve günlüklere mesaj göndermek için kullanılan printk() fonksiyonu eşzamanlı çalışır; yani yapılandırılmış tüm hedeflere mesaj iletilene kadar geri dönmez.
  • Gerçek zamanlı geliştiricileri, printk() çıktısını ayrı bir iş parçacığına taşıyarak onu eşzamansız hale getirdi, ancak bu yalnızca geçici bir çözümdü.
  • 2018'den beri ciddi biçimde ele alınan printk() sorunu, yaklaşık 300 yama üzerinden çözülme yolunda; ancak hâlâ çözülmesi gereken birkaç karmaşık mesele kaldı.

Gerçek zamanlı preemption kodunun ana dala entegrasyonu beklentisi

  • Gerçek zamanlı preemption kodunun kalan kısmının, 2024 sonunda 20. yılını doldurmadan önce ana dala entegre edileceğine dair umut dile getirildi.
  • printk() kodunda son dönemde bir değişiklik olmasa da, konsol sürücülerinin tek tek güncellenebilmesini sağlamak için handover kodu değiştirildi.
  • Önemli mesajların, ilk satır yazdırılmadan önce tamamen mesaj arabelleğine kopyalanması için kod değiştirildi; ayrıca hatalı konsol sürücülerinin sistemi çökertmesini önlemek amacıyla mesajlar önce güvenli konsola yazılıyor.

GN⁺ görüşü

  • Linux çekirdeğine gerçek zamanlı preemption desteği ekleme çalışması neredeyse tamamlanma aşamasında ve bu, gerçek zamanlı iş yüklerine ihtiyaç duyan sistemler için büyük fayda sağlayacak.
  • printk() fonksiyonunun eşzamansız hale getirilmesi, sistemin tepkiselliğini artırıyor ve gerçek zamanlı preemption hedeflerine ulaşmada önemli bir rol oynuyor.
  • Bu makale, Linux çekirdeği geliştirmesindeki önemli bir ilerlemeyi gösteriyor ve çekirdek geliştirmeyle ilgilenenler için ilgi çekici içerik sunuyor.

1 yorum

 
GN⁺ 2023-11-17
Hacker News görüşü
  • QNX mikroçekirdeğinin avantajları

    • QNX mikroçekirdeği, güvenilirliği garanti etmek için onlarca yıldır tüm işlemlere üst sınır koyuyor.
    • Mikroçekirdek kodu yalnızca on binlerce satırdan oluşur ve sadece bellek ayırma, CPU dispatch, süreçler arası mesaj iletiminden sorumludur.
    • Sürücüler ve logger dahil diğer tüm işlevler kullanıcı alanındadır ve yüksek öncelikli thread'ler tarafından preempt edilebilir.
    • QNX çekirdeği hiçbir şekilde string işlemi yapmaz; bu yüzden string parsing, formatting ve mesaj iletiminde ortaya çıkan sorunlar yoktur.
  • Linux'un gerçek zamanlı işleme sorunları

    • Linux, gerçek zamanlı işleme için uygun olmayan bir yapıya sahiptir; çekirdek kodu milyonlarca satıra ulaşır ve tüm kodun preempt edilebilir hale getirilmesi gerekir.
    • Gerçek zamanlı bir mimari olarak uygun olmaması nedeniyle bunu düzeltmek onlarca yıl almıştır.
    • Yalnızca çekirdek sorunlarına odaklanmak, CPU düzeyindeki sorunları gözden kaçırmak olabilir.
  • Çekirdeğin loglama işlevi ve gerçek kullanım örnekleri

    • Sistemin çöktüğü durumlarda bile log mesajı yazdırmak için çekirdeğin ne kadar çaba gösterdiğine dair örneklerin gerçek dağıtımlarda nasıl kullanıldığını anlatıyor.
  • Gerçek zamanlı donanım/yazılım kombinasyonlarının ikame edilebilirliği

    • Gerçek zamanlı işleme gerektiren donanım/yazılım kombinasyonlarının ucuz, düşük güç tüketimli, yüksek saat hızlı ARM ve x86 çiplerle değiştirilip değiştirilemeyeceğini sorguluyor.
    • Saat hızları arttıkça kusursuz gerçek zamanlı işlemenin öneminin azalabileceğini belirtiyor.
  • "Hard" ve "soft" gerçek zamanlı uygulamalar ayrımı

    • "Hard" gerçek zamanlı uygulamalarda Linux gibi genel amaçlı bir OS kullanmamak tercih edilir.
    • "Soft" gerçek zamanlı uygulamalarda (ör. video konferans, ses oynatma) küçük gecikmeler veya kare kayıpları büyük sorun yaratmaz.
    • Linux'u gerçek zamanlı bir OS haline getirme tartışmaları, zaten mümkün olan "soft" gerçek zamanlı kullanım senaryolarına odaklanır.
    • Çekirdeği tamamen preempt edilebilir hale getirmek ve scheduling üzerindeki kontrolü artırmak, gerçek zamanlı OS veya bare-metal kodun yerini almaktan çok sistemin sağlıklı yönetimi açısından daha anlamlıdır.
  • Linux çekirdeğinin gerçek zamanlı işleme yetenekleri ve donanımın sınırları

    • Linux çekirdeği gerçek zamanlı işlemeyi desteklese bile, cache ve CPU içindeki karmaşık özellikler nedeniyle donanım gerçek zamanı desteklemeyebilir.
    • Gerçek anlamda gerçek zamanlı işleme için karmaşık donanım yerine basit CPU mimarileri tercih edilir.
  • Senkron loglamanın sorunları

    • GLOG (Google'ın loglama kütüphanesi) gibi senkron loglamanın disk I/O üzerinde bloklanarak hizmette gecikmeye yol açtığı deneyimlenmiştir.
  • Belirli bir sürecin yanıt verebilirliğini garanti etme yöntemleri

    • Belirli bir sürecin yanıt verebilirliği önemliyse, o sürece özel bir CPU çekirdeği ve bitişik bir bellek alanı tahsis edilmeli, ayrıca OS'nin geri kalanından ayrılmış bir ağ kartına doğrudan erişebilmesi sağlanmalıdır.
  • Linux'un gerçek zamanlı preemption özelliği ve geçmiş deneyimler

    • Geçmişte Linux çekirdeğine RT_PREEMPT yaması uygulanarak bilimsel cihazlarda kullanıldığı ve bunun sonucunda gecikme ile jitter'ın iyileştiğine dair etkileyici bir deneyim paylaşılıyor.
  • Genel kullanıcıya etkisi

    • Gerçek zamanlı işleme özelliklerinin genel kullanıcı için ne anlama geldiği; bunun yalnızca belirli durumlarda mı etkinleştirileceği, yoksa sistemin genel yanıt verebilirliğini artırmaya da yardımcı olup olmayacağı sorgulanıyor.