Cosa significa un valore di gentilezza di (-)?


19

Secondo la pagina man e wikipedia; nicevaria da -20 a 20.

Tuttavia, quando eseguo il comando seguente, trovo che alcuni processi abbiano un valore non numerico come (-). Vedi la sesta colonna da sinistra con il titolo 'NI'.

Cosa indica una gentilezza di (-)?

 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]

Ho controllato 3 server in esecuzione: Ubuntu 12.04 e CentOs 6.5 e Mac OsX 10.9. Solo le macchine Ubuntu e CentOs hanno valori di gentilezza non digitali.


FYI: Tutti quei processi i cui nomi sono in [brackets]realtà sono kthreads (thread del kernel).
Jonathon Reinhart,

Risposte:


18

Cosa indica una gentilezza di (-)?

Si noti che quelli hanno anche un punteggio PRI di -100; questo indica che il processo è pianificato come processo in tempo reale . I processi in tempo reale non usano buoni punteggi e hanno sempre una priorità più alta di quelli normali, ma differiscono comunque l'uno rispetto all'altro.

È possibile visualizzare i dettagli per processo con il chrtcomando (ad es chrt -p 3.). Uno dei tuoi -100 probabilmente segnalerà una "priorità di pianificazione corrente" di 99 - a differenza nice, qui i valori alti hanno una priorità più alta, che è probabilmente da dove ha creato il -100numero. I processi non in tempo reale mostreranno sempre una "priorità di pianificazione corrente" di 0 in chrtindipendentemente dal buon valore, e sotto Linux una "politica di pianificazione corrente" di SCHED_OTHER.

Solo le macchine Ubuntu e CentOs hanno valori di gentilezza non digitali.

Alcune versioni di topsembrano riportare processi in tempo reale con rtsotto PRI e poi 0sotto NI .


Risposta meravigliosa Sapevo che aveva qualcosa a che fare con -100ma non riuscivo a capirlo :)
Ramesh,

6

La risposta di Goldlilock mi ha indirizzato a fare le ricerche sulla strada giusta. Questi sono i miei dettagli di ricerca.

Algoritmi di pianificazione disponibili per i processi

Linux supporta 3 criteri di pianificazione. SCHED_FIFO, SCHED_RRe SCHED_OTHER. SCHED_OTHERè la politica dello scheduler di condivisione del tempo universale predefinita utilizzata dalla maggior parte dei processi; SCHED_FIFOe SCHED_RRsono destinati ad applicazioni speciali che richiedono tempo, che richiedono un controllo preciso sul modo in cui i processi eseguibili sono selezionati per l'esecuzione.

Priorità disponibili

Per selezionare un processo da eseguire, lo scheduler Linux deve considerare la priorità di ogni processo. In realtà, ci sono due tipi di priorità.

Un valore di priorità statica viene assegnato a ciascun processo e la pianificazione dipende da questa priorità statica. I processi pianificati con SCHED_OTHERhanno priorità statica 0; i processi di linea sotto SCHED_FIFOo SCHED_RRpuò avere una priorità statica nel range 1di 99(99 è il più alto).

La sys_sched_get_priority_max( )routine restituisce la priorità statica del processo, restituisce 0per i processi non in tempo reale.

La priorità dinamica viene utilizzata per applicazioni non in tempo reale.

Tutti i processi in tempo reale hanno una priorità più alta rispetto ai processi normali. Linux implementa le priorità in tempo reale secondo POSIX. Il grafico seguente potrebbe fornire una panoramica di come sono pianificati i processi con le loro priorità.

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

Ora, possiamo emettere il comando seguente per verificare la priorità in tempo reale di un processo. Qui sto usando watchdog poiché aveva un buon valore elencato come -.

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

Questo è l'output del comando precedente. Come possiamo vedere, la priorità in tempo reale è 99, che è la massima priorità possibile.

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

Quindi, secondo la mia comprensione, la priorità in tempo reale può assumere un valore massimo di 99 e quindi non può esserci alcun valore piacevole su di esso. Questo è il motivo, otteniamo il risultato piacevole come - per il watchdog e altri processi di sistema.

Riferimenti

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.