Linux secara real time





Sistem operasi waktu nyata diperlukan ketika persyaratan waktu diberlakukan pada prosesor atau aliran data. Jadi, sering memainkan peran sebagai unit kontrol di perangkat khusus. Eksperimen ilmiah, aplikasi pencitraan medis, perangkat kontrol industri adalah sistem waktu nyata. Mekanisme injeksi bahan bakar mesin mobil, pengontrol peralatan rumah tangga dan militer juga merupakan sistem waktu nyata.



Selain itu, acara yang berbeda memiliki persyaratan waktu yang berbeda. Misalnya, persyaratan latensi untuk sistem rem anti-lock bisa 3-5 milidetik. Artinya, sejak roda pertama kali mendeteksi bahwa ia tergelincir, sistem yang mengontrol rem anti-lock memiliki waktu 3-5 milidetik untuk bereaksi dan memperbaiki situasi.



Kemampuan kernel waktu nyata telah ada selama lebih dari satu dekade di ekosistem open source. Dukungan Red Hat Enterprise Linux (RHEL) untuk kernel real-time telah tersedia untuk jumlah waktu yang sama. Namun, banyak administrator sistem yang salah menafsirkan konsep dasar dan perilaku pengoperasian yang sebenarnya. Pada artikel ini, saya akan menjelaskan beberapa fitur utamanya, perbedaan dari kernel standar, dan langkah-langkah instalasi.



Penjadwal CPU waktu nyata



Untuk kelas masalah yang berbeda, seseorang dapat menunjuk sistem soft real-time dan sistem hard real-time . Yang pertama tidak menjamin waktu yang tepat kapan proses kritis akan dijadwalkan secara real time. Mereka hanya menjamin bahwa proses tersebut akan lebih disukai daripada proses non-kritis. Yang terakhir memiliki persyaratan yang lebih ketat dan tugas diselesaikan dalam jangka waktu yang ditentukan, atau dianggap tidak selesai.



Kami menyebutnya waktu tunda acara yang berlalu dari saat peristiwa terjadi hingga saat itu dilayani. Ada dua jenis penundaan yang mempengaruhi kinerja OS real-time.



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





    . 1 .
  • , , . , . .





    . 2 .






Fitur terpenting dari sistem operasi real-time adalah segera merespons proses kritis yang memerlukan akses ke sumber daya CPU. Akibatnya, penjadwal untuk sistem operasi real-time harus mendukung algoritma preemption. Algoritme ini menetapkan prioritas untuk setiap proses berdasarkan tingkat kepentingannya. Jika penjadwal juga mendukung preemption, proses saat ini pada CPU akan didahului sesuai permintaan untuk mendukung proses dengan prioritas yang lebih tinggi.





Angka: 3 Klasifikasi perencana.



Ada beberapa algoritma untuk penjadwal waktu-nyata.



  • 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 β€” ; - .




Menginstal dan menggunakan RHEL Real Time



Pertama, Anda perlu menghubungkan repositori Red Hat Enterprise Linux Real Time dan menginstal grup paket RT.



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


RT mencakup komponen-komponen ini:



  • kernel-rt - kernel dengan fungsionalitas real-time;
  • rt-setup - instalasi lingkungan Red Hat Enterprise Linux Real Time;
  • rt-tes - utilitas pengujian fungsi RT;
  • rt-eval - untuk mengevaluasi kemungkinan menggunakan RT pada sistem tertentu;


Setelah menginstal RT dan reboot, pastikan kernel-rt sudah dimuat.



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


Mari kita lihat beberapa perbedaan antara kernel-rt dan kernel standar.



  • Pada beban tinggi, prioritas tugas diperiksa (1-99).
  • Tugas dengan prioritas tinggi (99) diberikan preferensi saat mengakses sumber daya CPU.
  • Tidak memberlakukan kebijakan Penjadwalan yang Sepenuhnya Adil (CFS) .
  • Menggunakan kebijakan SCHED_FIFO , atau SCHED_RR .




Angka: 5 Membandingkan kernet_rt dengan kernel standar.





Grafik menunjukkan contoh waktu respons jutaan pengulangan untuk sistem yang masing-masing menggunakan kernel RHEL Linux 7 dan RHEL Real Time. Titik biru dalam grafik ini mewakili waktu respons (dalam mikrodetik) sistem dengan kernel RHEL 7 standar, dan titik hijau mewakili Waktu Nyata RHEL 7. Dapat dilihat dari grafik bahwa fitur kernel-rt memiliki varian yang jauh lebih rendah dan, karenanya, lebih dapat diprediksi dari waktu respons sistem.



Menyiapkan dan menguji



Setelah RT diinstal, penyetelan dan penyesuaian tambahan mungkin diperlukan untuk mencapai waktu respons sistem yang paling konsisten. Persyaratan tersebut dapat diajukan oleh perusahaan di sektor keuangan atau telekomunikasi. Penyiapannya sendiri adalah proses berulang dan Anda harus bersabar di awal proses. Tidak mungkin untuk mengubah beberapa variabel dan memahami bahwa hasil terbaik telah dicapai.



Utilitas hwlatdetect dari paket rt-tes akan menunjukkan latensi yang disebabkan oleh perangkat keras dan firmware dengan mengumpulkan sumber jam dan mencari celah yang tidak jelas.



[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


Dalam contoh ini, parameter menunjukkan penundaan dan metode deteksi. Ambang batas latensi default ditetapkan ke 10 mikrodetik (10 ΞΌs).



RT juga memiliki utilitas yang disebut rteval untuk menguji kinerja sistem waktu nyata di bawah beban. Program menempatkan beban berat pada sistem menggunakan penjadwal SCHED_OTHER dan kemudian mengukur respons waktu nyata pada setiap CPU yang aktif. Tujuannya agar berbagai tugas terus berjalan, seperti mengalokasikan / membebaskan memori, I / O disk, komputasi, menyalin memori, dan lainnya.



Setiap utas pengukur mengambil stempel waktu, mati untuk interval tertentu, lalu mengambil stempel waktu lain saat bangun. Penundaan pengukuran sama dengan t1 - (t0 + i), dimana



  • t1 - waktu pengukuran aktual;
  • t0 - waktu bangun teoritis dari cap waktu pertama;
  • saya adalah interval tunggu.


Laporan utilitas rteval terlihat seperti ini.



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


Bahan bekas












All Articles