İşlem 'hoşluk' ile 'öncelikli'

72

top çalıştırırken, bu (kısaltılmış) örnek çıktısını görebilirim:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 4586 ipc-adm+  20   0 1303900 605152  92844 S  30,6 29,3   3:52.88 firefox
 3985 ipc-adm+  20   0  258588 124508  63072 S  12,2  6,0   0:40.04 compiz
 3092 root      20   0  172392  56164  25980 S   6,1  2,7   0:30.13 Xorg

İlgilendiğim iki değer var: PR (Öncelik) ve NI (Niceness).

Zaten doğru bir şekilde öğrendiklerimi anladım, hem bir işlemin ne kadar CPU zamanını diğer süreçlerin tersine alacağını belirler. Peki bu değerler arasındaki fark nedir?

Ayrıca, bir sürecin bu değerlerini nasıl değiştirebileceğinizi ve hangi durumlarda yararlı olabileceğini de açıklayabilir misiniz?

    
sordu Byte Commander 05.08.2015 11:17

2 cevap

72

nice değer bir kullanıcı alanıdır ve öncelikli PR, işlemin Linux çekirdeği tarafından kullanılan gerçek önceliğidir. Linux sistemindeki öncelikler 0 ila 139 arasında gerçek zamanlı olarak 0 ila 99 arasında ve kullanıcılar için 100 ila 139 arasındadır. nice değer aralığı -20 ile +19 arasındadır, -20 en yüksek, 0 varsayılanı ve +19 ise en düşüktür. nice değer ve öncelik arasındaki ilişki:

PR = 20 + NI

Yani, PR = 20 + (-20 to +19) değerinin değeri 0 ile 39 arasında olan 100 ile 139 arasındadır.

Üst kılavuza göre:

  

PR - Öncelik Görevin zamanlama önceliği. Eğer görürsen   Bu alanda 'rt', görev 'gerçek zamanlı' altında çalışıyor demektir   zamanlama önceliği.

NI, görevin güzel bir değeridir.

  

NI - Güzel Değer Görevin güzel değeri. Olumsuz bir güzel   değer, daha yüksek önceliği ifade ederken, pozitif bir değer daha düşük demektir   priority.Zero sadece bu alanda öncelik ayarlanmayacak demektir   bir görevin gönderim kabiliyetini belirlerken

Düzenleme: Linux'ta bir program başlatıldığında, varsayılan olarak '0' önceliği ile başlatılır. Ancak, programlarınızın önceliklerini aşağıdaki yöntemlerden biriyle değiştirebilirsiniz.

  1. kullanarak,

    kullanarak önceliğinize sahip bir program başlatabilirsiniz.
    nice -n nice_value program_name
    
  2. zaten çalışan bir işlemin önceliğini

    kullanarak da değiştirebilirsiniz.
    renice -n nice_value -p process_id
    
verilen cevap pl_rock 05.08.2015 11:51
19

Öncelik nedir ve neden önemsemeliyim?

İşlemler hakkında konuşurken öncelik, işlemci zamanını yönetmektir. İşlemci veya CPU aynı anda birden fazla görevi hokkabaz yapan bir insan gibidir. Bazen birden fazla proje üstlenmek için yeterli alanımız olabilir. Bazen tek seferde sadece bir şeye odaklanabiliriz. Diğer zamanlarda önemli bir şey ortaya çıkıyor ve tüm enerjimizi bu problemi çözerek, arka yakıcıya daha az önemli görevler koyarken ayırmak istiyoruz.

Linux'ta, CPU'nun yapması gereken tüm görevlere bakıldığında takip etmesi için yönergeler belirleyebiliriz. Bu yönergelere hoş veya güzel değer denir. Linux hoşluk ölçeği -20'den 19'a gider. Sayı ne kadar düşük olursa, bu görev o kadar öncelikli olur. Eğer nicelik değeri 19 gibi yüksek sayıdaysa, görev en düşük önceliğe ayarlanacak ve bir şans olduğunda CPU işleyecektir. Varsayılan değer sıfırdır.

Bu ölçeği kullanarak CPU kaynaklarımızı daha uygun şekilde ayırabiliriz. Önemsiz olan daha düşük öncelikli programlar daha yüksek bir değere ayarlanabilirken, daha yüksek CPU'lar ve servisler gibi yüksek öncelikli programlar, CPU'nun odağını daha fazla alacak şekilde ayarlanabilir. Belirli bir kullanıcıya tüm süreçleri için daha düşük bir değer verebilir, böylece bilgisayarınızın ana hizmetlerini yavaşlatma yeteneklerini sınırlayabilirsiniz.

Kaynak

Yeni işlemler için önceliği nice ile ayarlayın, örn.

nice -n 10 firefox

Mevcut işlemler için

renice 10 -p $(pgrep firefox)

Önceliği belirlemek için <0 'ye ihtiyacınız var sudo , örn .:

renice -1 -p $(pgrep firefox)
renice: failed to set priority for 2769 (process ID): Permission denied

ancak öncelik >=0

için değil

Örnek

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          19   0

% renice 10 -p 2769     # note, we don't need sudo here
2769 (process ID) old priority 0, new priority 10

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox           9  10

% sudo renice -19 -p 2769                    
 2769 (process ID) old priority 10, new priority -19

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          38 -19

Diğer örnek

Belirli bir kullanıcı için tüm çalışan işlemleri yeniden boyutlandırmak için

renice 20 -u user_name
    
verilen cevap A.B. 05.08.2015 13:06

Etiketlerdeki diğer soruları oku