Penjadwalan proses waktu nyata di Linux

24

Saya telah mempelajari beberapa konsep penjadwalan. Saat ini pemahaman saya sejauh ini adalah seperti di bawah ini.

  • Ada proses waktu nyata dan proses waktu tidak nyata.
  • Proses non real time dapat memiliki nicenilai untuk prioritas mereka di kisaran -20 hingga +20 . Nilai positif yang lebih tinggi menunjukkan bahwa proses memiliki prioritas yang lebih rendah.
  • Proses waktu nyata akan memiliki nilai kebaikan terdaftar -seperti yang dijelaskan dalam jawaban ini di sini . Ini terutama karena proses waktu nyata memiliki prioritas lebih tinggi daripada proses waktu tidak nyata dan nilai kebaikan tidak berlaku untuk mereka.
  • Sekarang, saya dapat menggunakan chrtuntuk melihat atribut waktu nyata dari suatu proses.

Untuk proses waktu nyata, chrtmemberikan output sebagai,

chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99

Seperti yang dapat kita lihat untuk proses 5 , prioritasnya adalah 99 yang merupakan yang tertinggi. Juga, kebijakan penjadwalan adalahSCHED_FIFO

Sekarang, untuk proses non-real time, chrtmemberikan output sebagai,

chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0

Seperti yang dapat kita lihat untuk proses 22383 , prioritasnya adalah 0 dan kebijakan penjadwalannya adalah SCHED_OTHER.

Pertanyaan

  1. Apakah mungkin bagi saya untuk membuat proses apa pun sebagai proses waktu nyata?
  2. Apakah mungkin bagi saya untuk mengatur beberapa algoritma penjadwalan lain selain SCHED_OTHERuntuk proses non-real time?
  3. Dari sini , saya juga melihat bahwa saya dapat memodifikasi atribut untuk proses yang berjalan seperti,

    chrt -p prio pid
    

    Juga, saya melihat chrt -mmemberi saya daftar algoritma penjadwalan. Perintah memberi saya output sebagai,

    SCHED_OTHER min/max priority    : 0/0
    SCHED_FIFO min/max priority     : 1/99
    SCHED_RR min/max priority       : 1/99
    SCHED_BATCH min/max priority    : 0/0
    SCHED_IDLE min/max priority     : 0/0
    

    Sekarang, seperti yang disarankan di atas, jika saya menetapkan chrt -p 55 22383algoritma mana yang akan digunakan?

Ramesh
sumber

Jawaban:

19

pertanyaan 1

Dimungkinkan bagi pengguna untuk menggunakan prioritas waktu nyata untuk suatu proses juga. Konfigurasi ini dapat diatur dari /etc/security/limits.conffile. Saya melihat konten di bawah ini di file itu.

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>

Jika kami memeriksa bagian item, kami melihat entri di bawah ini yang memungkinkan untuk menetapkan prioritas waktu nyata bagi pengguna.

#        - rtprio - max realtime priority

Pertanyaan 2 dan Pertanyaan 3

Untuk mengatur kebijakan penjadwalan SCHED_FIFO, masukkan:

chrt -f -p [1..99] {pid}

Untuk mengatur kebijakan penjadwalan SCHED_RR, masukkan:

chrt -r -p [1..99] {pid}

Jadi untuk menjawab pertanyaan 3, kita harus memverifikasi algoritma penjadwalan yang tersedia dan prioritas menggunakan chrt -mperintah dan kemudian menggunakan algoritma penjadwalan yang sesuai dengan kebutuhan kita. Untuk menetapkan prioritas yang berbeda, kita dapat menggunakan perintah seperti di atas.

Ramesh
sumber