(-) nezaket değeri ne anlama gelir?


20

Man sayfasına ve wikipedia'ya göre; nice-20 ila 20 arasındadır.

Ancak aşağıdaki komutu çalıştırdığımda, bazı işlemlerin (-) gibi sayısal olmayan bir değere sahip olduğunu görüyorum. Soldan 'NI' başlıklı altıncı sütuna bakın.

(-) 'nin güzelliği neyi gösterir?

 ps axl 
 F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0  19356  1548 poll_s Ss   ?          0:00 /sbin/init
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2 -100  -      0     0 migrat S    ?          0:03 [migration/0]
1     0     4     2  20   0      0     0 ksofti S    ?          0:51 [ksoftirqd/0]
1     0     5     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/0]
5     0     6     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/0]
1     0     7     2 -100  -      0     0 migrat S    ?          0:08 [migration/1]
1     0     8     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/1]
1     0     9     2  20   0      0     0 ksofti S    ?          1:03 [ksoftirqd/1]
5     0    10     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/1]
1     0    11     2 -100  -      0     0 migrat S    ?          0:05 [migration/2]

Çalışmakta olan 3 sunucuyu kontrol ettim: Ubuntu 12.04 ve CentOs 6.5 ve Mac OsX 10.9. Yalnızca Ubuntu ve CentOs makinelerinin rakam olmayan özellik değerleri vardır.


Bilginize: İsimleri içinde bulunan [brackets]tüm süreçler aslında kthreads (çekirdek konuları).
Jonathon Reinhart

Yanıtlar:


19

(-) 'nin güzelliği neyi gösterir?

Bunların PRI puanı -100 olduğuna dikkat edin ; bu, sürecin gerçek zamanlı bir süreç olarak planlandığını gösterir . Gerçek zamanlı süreçler hoş skorlar kullanmaz ve her zaman normal olanlardan daha yüksek önceliğe sahiptir, ancak yine de birbirinden farklıdır.

İşlem başına ayrıntıları chrtkomutla (örn. chrt -p 3) Görüntüleyebilirsiniz. -100'ünüzden biri muhtemelen 99'luk bir "geçerli zamanlama önceliği" rapor edecektir - aksine nice, burada yüksek değerler daha yüksek önceliğe sahiptir, bu da muhtemelen en üstteki -100sayıyı oluşturduğu yerdir . Gerçek zamanlı olmayan süreçler chrt, hoş bir değerden bağımsız olarak her zaman 0'ın "güncel çizelgeleme önceliği" ni ve linux altında "güncel çizelgeleme politikası" nı gösterir SCHED_OTHER.

Yalnızca Ubuntu ve CentOs makinelerinin rakam olmayan özellik değerleri vardır.

Bazı sürümleri topile gerçek zamanlı işlemleri rapor görünmektedir rtaltında PRI ve ardından 0altında NI .


Harika cevap. Bununla ilgili bir şey olduğunu biliyordum -100ama anlayamadım :)
Ramesh

7

@ Goldlilock'un cevabı beni araştırmayı doğru yolda yapmaya yöneltti. Bu benim araştırma detayları.

İşlemler için kullanılabilir Zamanlama Algoritmaları

Linux 3 zamanlama ilkesini destekler. SCHED_FIFO,, SCHED_RRve SCHED_OTHER. SCHED_OTHERçoğu işlem tarafından kullanılan varsayılan evrensel zaman paylaşımı zamanlayıcı ilkesidir; SCHED_FIFOve SCHED_RRçalıştırılabilir işlemlerin yürütme için seçilme yolu üzerinde hassas kontrol gerektiren özel, zaman açısından kritik uygulamalar için tasarlanmıştır.

Öncelikler mevcut

Çalıştırılacak bir işlem seçmek için, Linux zamanlayıcı her işlemin önceliğini dikkate almalıdır. Aslında, iki çeşit öncelik vardır.

Her işleme bir statik öncelik değeri atanır ve zamanlama bu statik önceliğe bağlıdır. İle planlanan işlemlerin SCHED_OTHERstatik önceliği 0'dır; altında planlanan süreçler SCHED_FIFOveya SCHED_RRaralıkta statik bir önceliğe sahip olabilir 1için 99(99 en yüksek).

sys_sched_get_priority_max( )Rutin dönüş sürecinin statik önceliği, döndürür 0olmayan gerçek zamanlı işlemleri için.

Dinamik öncelik, gerçek zamanlı olmayan uygulamalar için kullanılır.

Tüm gerçek zamanlı süreçler normal süreçlerden daha yüksek önceliğe sahiptir. Linux POSIX uyarınca gerçek zamanlı öncelikleri uygular. Aşağıdaki grafik, süreçlerin öncelikleriyle nasıl planlandığına dair bir genel bakış verebilir.

HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19

Şimdi, bir sürecin gerçek zamanlı önceliğini kontrol etmek için aşağıdaki komutu verebiliriz. Burada - olarak listelenen güzel bir değeri olduğu için bekçi köpeği kullanıyorum.

ps -e -o class,rtprio,pri,nice,cmd | grep watchdog

Bu yukarıdaki komutun çıktısıdır. Gördüğümüz gibi, gerçek zamanlı öncelik 99, mümkün olan en yüksek önceliktir.

FF      99 139   - [watchdog/0]
FF      99 139   - [watchdog/1]
TS       -  21   0 grep watchdog

Anladığım kadarıyla, gerçek zaman önceliği maksimum 99 değeri alabilir ve bu yüzden üzerinde güzel bir değer olamaz. Bu nedenle, bekçi köpeği ve diğer sistem süreçleri için hoş bir çıktı elde ediyoruz.

Referanslar

http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/

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.