لينكس في الوقت الحقيقي





هناك حاجة إلى نظام تشغيل في الوقت الحقيقي عندما يتم فرض متطلبات حاسمة للوقت على المعالج أو تدفق البيانات. وبالتالي ، غالبًا ما تلعب دور وحدة التحكم في الأجهزة الخاصة. التجارب العلمية وتطبيقات التصور في الطب وأجهزة التحكم الصناعية هي أنظمة في الوقت الفعلي. آليات حقن الوقود لمحركات السيارات ، وأجهزة التحكم في المعدات المنزلية والعسكرية هي أيضًا أنظمة في الوقت الفعلي.



علاوة على ذلك ، فإن الأحداث المختلفة لها متطلبات زمنية مختلفة. على سبيل المثال ، يمكن أن تكون متطلبات زمن الوصول لنظام الفرامل المانعة للانغلاق 3-5 مللي ثانية. أي منذ اللحظة الأولى التي تكتشف فيها العجلة أنها تنزلق ، فإن النظام الذي يتحكم في المكابح المانعة للانغلاق لديه 3-5 ميلي ثانية للتفاعل وتصحيح الموقف.



لقد كانت قدرات النواة في الوقت الحقيقي موجودة منذ أكثر من عقد في النظام البيئي مفتوح المصدر. يتوفر دعم Red Hat Enterprise Linux (RHEL) للنواة في الوقت الفعلي لنفس الفترة الزمنية. ومع ذلك ، فإن العديد من مسؤولي النظام يسيئون تفسير المفاهيم الأساسية وسلوك التشغيل الفعلي. في هذه المقالة ، سأصف بعض ميزاته الرئيسية والاختلافات عن النواة القياسية وخطوات التثبيت.



جدولة وحدة المعالجة المركزية في الوقت الحقيقي



لفئات مختلفة من المشاكل، يمكن للمرء أن يعين في الوقت الحقيقي لينة نظم و أنظمة الوقت الحقيقي الصعبة . السابق لا يضمن الوقت الدقيق الذي سيتم فيه جدولة العملية الحرجة في الوقت الفعلي. إنهم يضمنون فقط تفضيل العملية على العمليات غير الحرجة. هذا الأخير لديه متطلبات أكثر صرامة والمهمة إما أن تكتمل في غضون الإطار الزمني المحدد ، أو تعتبر غير مكتملة.



نسمي الحدث تأخير الوقت الذي ينقضي من لحظة وقوع الحدث حتى لحظة تقديمه. هناك نوعان من التأخيرات التي تؤثر على أداء نظام التشغيل في الوقت الفعلي.



  • CPU . , . , interrupt service routine (ISR).





    . 1 .
  • , , . , . .





    . 2 .






تتمثل أهم ميزة في نظام التشغيل في الوقت الفعلي في الاستجابة الفورية لعملية حاسمة تتطلب الوصول إلى موارد وحدة المعالجة المركزية. نتيجة لذلك ، يجب أن يدعم المجدول لنظام التشغيل في الوقت الفعلي خوارزمية المقاطعة الوقائية. تعطي هذه الخوارزميات الأولوية لكل عملية بناءً على درجة أهميتها. إذا كان المجدول يدعم أيضًا إجراءات وقائية ، فسيتم استباق العملية الحالية على وحدة المعالجة المركزية عند الطلب لصالح عملية ذات أولوية أعلى.





الشكل: 3 تصنيف المخططين.



هناك عدة خوارزميات لجدولة الوقت الحقيقي.



  • Rate-Monotonic Scheduling — . , . .





    n, ln2 ≈ 0.693147.
  • Earliest-deadline-first (EDF) Scheduling . , , . RMS, EDF , . , , .





    . 4 EDF.



    . 4 T1 T2 , T2. T3 T1, 23.
  • POSIX real-time-scheduling. POSIX.4 . , .



    • SCHED_FIFO — , « — » (FIFO). 32 .
    • SCHED_RR — SCHED_FIFO, ( ) . 32 .
    • SCHED_OTHER — ; - .




تثبيت واستخدام RHEL Real Time



أولاً ، تحتاج إلى توصيل مستودع Red Hat Enterprise Linux Real Time وتثبيت مجموعة حزمة RT.



[root@server ~]# subscription-manager repos --enable rhel-8-for-x86_64-rt-rpms
[root@server ~]# yum groupinstall RT


يشمل RT هذه المكونات:



  • kernel-rt - نواة مع وظائف الوقت الفعلي ؛
  • rt-setup - تثبيت بيئة Red Hat Enterprise Linux Real Time ؛
  • اختبارات rt - أدوات اختبار وظيفة RT ؛
  • rt-Eval - لتقييم إمكانية استخدام RT على نظام معين ؛


بعد تثبيت RT وإعادة التشغيل ، تأكد من تحميل kernel-rt.



[root@server ~]# uname -a
Linux rt-server.example.com 4.18.0-80.rt9.138.el8.x86_64 …


دعنا نلقي نظرة على بعض الاختلافات بين kernel-rt و kernel القياسي.



  • عند التحميل العالي ، يتم تحديد أولوية المهمة (1-99).
  • يتم إعطاء الأفضلية للمهام ذات الأولوية العالية (99) عند الوصول إلى موارد وحدة المعالجة المركزية.
  • لا يفرض سياسة الجدولة العادلة بالكامل (CFS) .
  • يستخدم SCHED_FIFO السياسة ، أو SCHED_RR .




الشكل: 5 مقارنة kernet_rt بالنواة القياسية.





يوضح الرسم البياني عينة من زمن الاستجابة المليون تكرار للأنظمة التي تستخدم نواة RHEL Linux 7 و RHEL Real Time ، على التوالي. تمثل النقاط الزرقاء في هذا الرسم البياني أوقات الاستجابة (بالميكروثانية) للأنظمة ذات نواة RHEL 7 القياسية ، وتمثل النقاط الخضراء RHEL 7 Real Time. يمكن أن نرى من الرسم البياني أن ميزة kernel-rt هي تباين أقل بكثير ، وبالتالي ، مزيد من القدرة على التنبؤ بوقت استجابة النظام.



الإعداد والاختبار



بعد تثبيت RT ، قد يلزم ضبط وتعديل إضافي لتحقيق أكثر أوقات استجابة النظام اتساقًا. يمكن تقديم هذه المتطلبات من قبل الشركات العاملة في القطاع المالي أو قطاع الاتصالات. الإعداد نفسه هو عملية تكرارية وتحتاج إلى التحلي بالصبر في بداية العملية. من غير المحتمل أنه سيكون من الممكن تعديل متغيرين وفهم أنه تم تحقيق أفضل نتيجة ممكنة. ستعرض



الأداة المساعدة hwlatdetect من حزمة اختبارات rt وقت الاستجابة الذي تسببه الأجهزة والبرامج الثابتة من خلال استطلاع مصدر الساعة والبحث عن فجوات غامضة.



[root@server ~]#  hwlatdetect --duration=60s
hwlatdetect:  test duration 60 seconds
	detector: tracer
	parameters:
		Latency threshold: 10us
		Sample window:     1000000us
		Sample width:      500000us
		Non-sampling period:  500000us
		Output File:       None

Starting test
test finished
Max Latency: Below threshold
Samples recorded: 0
Samples exceeding threshold: 0


في هذا المثال ، تشير المعلمات إلى طريقة التأخير والكشف. تم تعيين حد وقت الاستجابة الافتراضي على 10 ميكروثانية (10 ميكرو ثانية).



يحتوي RT أيضًا على أداة مساعدة تسمى rteval لاختبار أداء النظام في الوقت الفعلي تحت الحمل. يضع البرنامج عبئًا ثقيلًا على النظام باستخدام جدولة SCHED_OTHER ثم يقيس الاستجابة في الوقت الفعلي على كل من وحدات المعالجة المركزية النشطة. الهدف هو الحفاظ على تشغيل المهام المختلفة بشكل مستمر ، مثل تخصيص / تحرير الذاكرة ، إدخال / إخراج القرص ، الحساب ، نسخ الذاكرة ، وغيرها.



يأخذ كل مؤشر ترابط قياس طابعًا زمنيًا ، ويكون خاملاً لفترة زمنية معينة ، ثم يأخذ طابعًا زمنيًا آخر عند الاستيقاظ. تأخير القياس يساوي t1 - (t0 + i)، حيث



  • T1 - وقت القياس الفعلي ؛
  • t0 - وقت الاستيقاظ النظري للطابع الزمني الأول ؛
  • أنا هو فترة الانتظار.


يبدو تقرير الأداة المساعدة rteval هكذا.



System:
Statistics:
	Samples:           1440463955
	Mean:              4.40624790712us
	Median:            0.0us
	Mode:              4us
	Range:             54us
	Min:               2us
	Max:               56us
	Mean Absolute Dev: 1.0776661507us
	Std.dev:           1.81821060672us

CPU core 0       Priority: 95
Statistics:
	Samples:           36011847
	Mean:              5.46434910711us
	Median:            4us
	Mode:              4us
	Range:             38us
	Min:               2us
	Max:               40us
	Mean Absolute Dev: 2.13785341159us
	Std.dev:           3.50155558554us


المواد المستعملة












All Articles