
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
- Abraham Silberschatz, Peter Baer Galvin, Konsep Sistem Operasi Greg Gagne edisi ke-9.
- Apa keuntungan menjalankan Red Hat Enterprise Linux untuk Real Time?
- Bekerja dengan kernel real-time untuk Red Hat Enterprise Linux
- Prosedur penyetelan lanjutan untuk mengoptimalkan latensi di RHEL untuk Real Time
