2 पॉइंट द्वारा GN⁺ 2023-11-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Linux में रियल-टाइम प्रीएम्प्शन समर्थन की मंज़िल

  • Linux में रियल-टाइम समर्थन जोड़ने का काम 2004 से शुरू हुआ था, और अब यह अंतिम चरण में पहुँच रहा है.
  • रियल-टाइम प्रीएम्प्शन का उद्देश्य यह है कि सबसे उच्च-प्राथमिकता वाला प्रोसेस न्यूनतम देरी के साथ चल सके, और इसके लिए kernel को यथासंभव अधिक परिस्थितियों में preemptible बनाया गया.
  • इस काम के परिणामस्वरूप kernel के मुख्य हिस्सों को फिर से लिखा गया, और इससे रियल-टाइम use case से आगे भी लाभ मिले.

printk() समस्या का समाधान

  • kernel में system console और log पर संदेश भेजने के लिए इस्तेमाल होने वाला printk() फ़ंक्शन synchronous तरीके से काम करता है, इसलिए यह तब तक return नहीं करता जब तक संदेश सभी configured destinations तक भेज न दिया जाए.
  • रियल-टाइम डेवलपर्स ने printk() आउटपुट को अलग thread में ले जाकर इसे asynchronous बनाया, लेकिन यह केवल एक अस्थायी समाधान था.
  • printk() समस्या पर 2018 से गंभीरता से काम हो रहा है, और लगभग 300 patches के जरिए इसका समाधान आगे बढ़ रहा है, हालांकि अभी भी कुछ जटिल समस्याएँ बाकी हैं.

रियल-टाइम प्रीएम्प्शन कोड के mainline integration की संभावना

  • यह आशा जताई गई है कि रियल-टाइम प्रीएम्प्शन कोड का बाकी हिस्सा 2024 के अंत में 20वीं वर्षगांठ से पहले mainline में merge हो जाएगा.
  • printk() कोड में हाल में कोई बदलाव नहीं हुआ, लेकिन handover code को इस तरह बदला गया कि console drivers को एक-एक करके update किया जा सके.
  • महत्वपूर्ण संदेशों के लिए code को इस तरह बदला गया कि पहली पंक्ति छपने से पहले संदेश पूरी तरह message buffer में copy हो जाए, और खराब console driver के कारण system crash से बचाने के लिए संदेश पहले safe console पर लिखा जाए.

GN⁺ की राय

  • Linux kernel में रियल-टाइम प्रीएम्प्शन समर्थन जोड़ने का काम लगभग पूरा होने वाला है, और इससे उन systems को बड़ा लाभ मिलेगा जिन्हें रियल-टाइम workloads की ज़रूरत होती है.
  • printk() का asynchronous बनना system responsiveness को बेहतर करता है और रियल-टाइम प्रीएम्प्शन के लक्ष्य को हासिल करने में महत्वपूर्ण भूमिका निभाता है.
  • यह लेख Linux kernel development में एक महत्वपूर्ण प्रगति दिखाता है और kernel development में रुचि रखने वाले लोगों के लिए दिलचस्प सामग्री प्रदान करता है.

1 टिप्पणियां

 
GN⁺ 2023-11-17
Hacker News राय
  • QNX microkernel के फायदे

    • QNX microkernel दशकों से हर काम पर ऊपरी सीमा तय करके reliability सुनिश्चित करता है.
    • microkernel code केवल कुछ दसियों हज़ार लाइनों का है, और यह सिर्फ memory allocation, CPU dispatch, और process के बीच message passing संभालता है.
    • drivers और logger सहित बाकी सभी functions user space में होते हैं, इसलिए उन्हें high-priority threads द्वारा preempt किया जा सकता है.
    • QNX kernel कोई string operations नहीं करता, इसलिए string parsing, formatting, और message passing से जुड़ी समस्याएँ नहीं होतीं.
  • Linux में real-time processing की समस्याएँ

    • Linux की संरचना real-time processing के लिए उपयुक्त नहीं है; kernel code लाखों लाइनों का है और पूरे code को preemptible बनाना पड़ता है.
    • real-time architecture के रूप में इसकी अनुपयुक्तता के कारण इसे ठीक करने में दशकों लग गए.
    • केवल kernel समस्याओं पर ध्यान देना CPU स्तर की समस्याओं को नज़रअंदाज़ करना हो सकता है.
  • kernel की logging functionality और वास्तविक उपयोग के मामले

    • यह बताया गया है कि system down होने की स्थिति में भी log messages आउटपुट करने के लिए kernel कितनी कोशिश करता है, और ऐसे उदाहरण वास्तविक deployments में कैसे उपयोग होते हैं.
  • real-time hardware/software combinations के विकल्प की संभावना

    • यह सवाल उठाया गया है कि real-time processing की ज़रूरत वाले hardware/software combinations को सस्ते, low-power, high-clock ARM और x86 chips से बदला जा सकता है या नहीं.
    • यह भी उल्लेख है कि clock speed बढ़ने के साथ पूरी तरह real-time processing का महत्व कम हो सकता है.
  • "hard" बनाम "soft" real-time applications का अंतर

    • "hard" real-time applications में Linux जैसे general-purpose OS का इस्तेमाल न करना बेहतर है.
    • "soft" real-time applications (जैसे video conferencing, audio playback) में थोड़ी देरी या frame loss बहुत बड़ी समस्या नहीं होती.
    • Linux को real-time OS बनाने की चर्चा उन "soft" real-time use cases पर केंद्रित है जो पहले से संभव हैं.
    • kernel को पूरी तरह preemptible बनाना और scheduling पर नियंत्रण बढ़ाना, real-time OS या bare-metal code को बदलने से ज़्यादा, system के बेहतर प्रबंधन के लिए महत्वपूर्ण है.
  • Linux kernel की real-time processing और hardware की सीमाएँ

    • भले ही Linux kernel real-time processing support करे, caches और CPU के अंदर की जटिल features के कारण hardware खुद real-time support न कर पाए.
    • असली real-time processing के लिए जटिल hardware की बजाय सरल CPU architecture को प्राथमिकता दी जाती है.
  • synchronous logging की समस्याएँ

    • GLOG (Google की logging library) जैसी synchronous logging में disk I/O पर block होने से service के delay होने का अनुभव साझा किया गया.
  • किसी खास process की responsiveness सुनिश्चित करने के तरीके

    • अगर किसी खास process की responsiveness महत्वपूर्ण है, तो उसे dedicated CPU core और contiguous memory region देना चाहिए, और उसे OS के बाकी हिस्सों से अलग network card तक direct access मिलना चाहिए.
  • Linux के real-time preemption feature और पुराना अनुभव

    • अतीत में Linux kernel पर RT_PREEMPT patch लागू करके scientific equipment में इस्तेमाल करने का अनुभव साझा किया गया, और उससे latency तथा jitter में हुए सुधार का ज़िक्र किया गया.
  • आम उपयोगकर्ताओं पर असर

    • यह सवाल उठाया गया है कि real-time processing feature आम उपयोगकर्ताओं के लिए क्या मायने रखता है, क्या इसे केवल खास परिस्थितियों में ही सक्षम करना चाहिए, या क्या यह सामान्य system responsiveness सुधारने में भी मदद कर सकता है.