Linux'ta gerçek zamanlı işlemler


24

Bazı zamanlama kavramlarını öğrendim. Şu anda benim anlayış şimdiye kadar.

  • Gerçek zamanlı süreçler ve gerçek zamanlı olmayan süreçler vardır.
  • Gerçek zamanlı olmayan işlemler niceöncelik sırasına göre -20 ila +20 aralığında değerlere sahip olabilir . Yüksek pozitif değer, işlemin daha düşük önceliğe sahip olduğunu gösterir.
  • Gerçek zamanlı süreçler, -bu cevapta burada açıklandığı gibi listelenen bir hoşluğa sahip olacaktır . Bunun nedeni, gerçek zamanlı işlemlerin gerçek zamanlı olmayan işlemlerden daha yüksek öncelikleri olması ve bunlar için nezaket değeri için geçerli olmamasıdır.
  • Şimdi chrtbir sürecin gerçek zamanlı özelliklerini görmek için kullanabilirim .

Gerçek zamanlı bir süreç için chrt, çıktı verir,

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

İşlem 5 için görebileceğimiz gibi , öncelik en yüksek olan 99'dur. Ayrıca, zamanlama politikasıSCHED_FIFO

Şimdi, gerçek zamanlı olmayan bir süreç için, aşağıdaki chrtgibi çıktılar verir:

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

22383 işleminde görebileceğimiz gibi, öncelik 0, zamanlama politikası ise SCHED_OTHER.

Sorular

  1. Herhangi bir işlemi gerçek zamanlı işlem olarak yapabilmem mümkün mü?
  2. SCHED_OTHERGerçek zamanlı olmayan bir işlem dışında başka bir zamanlama algoritması ayarlamam mümkün mü ?
  3. Gönderen burada , Ben de bir çalışan süreç için niteliğini değiştirebilir görüyoruz,

    chrt -p prio pid
    

    Ayrıca, chrt -mbana zamanlama algoritmalarının listesini verir. Komut bana çıktısını verir.

    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
    

    Şimdi, yukarıda önerildiği gibi, chrt -p 55 22383hangi algoritmanın kullanılacağını ayarlarsam ?

Yanıtlar:


19

Soru 1

Bir kullanıcının bir işlem için de gerçek zamanlı önceliği kullanması mümkündür. Bu yapılandırma /etc/security/limits.confdosyadan ayarlanabilir . Bu dosyada aşağıdaki içerikleri görüyorum.

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

Öğe bölümünü kontrol edersek, kullanıcılar için gerçek zamanlı bir öncelik belirleyen aşağıdaki girişi görüyoruz.

#        - rtprio - max realtime priority

Soru 2 ve Soru 3

Zamanlama politikasını ayarlamak için şunu SCHED_FIFOgirin:

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

Zamanlama politikasını ayarlamak için şunu SCHED_RRgirin:

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

Bu nedenle, 3. soruyu cevaplamak için, mevcut programlama algoritmalarını ve chrt -mkomutu kullanarak öncelikleri doğrulamalı ve sonra ihtiyacımıza uyan herhangi bir programlama algoritmasını kullanmalıyız. Farklı öncelikler belirlemek için yukarıdaki komutları kullanabiliriz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.