O que significa um valor de niceness de (-)?

18

De acordo com a página man e wikipedia; nice varia de -20 a 20.

No entanto, quando executo o seguinte comando, descubro que alguns processos têm um valor não numérico, como (-). Veja a sexta coluna da esquerda com o título 'NI'.

O que um niceness de (-) indica?

 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]

Eu verifiquei três servidores em execução: Ubuntu 12.04 e CentOs 6.5 e Mac OsX 10.9. Apenas as máquinas Ubuntu e CentOs possuem valores de afinidade não dígitos.

    
por spuder 30.04.2014 / 17:35

2 respostas

17

What does a niceness of (-) indicate?

Observe que eles também têm uma pontuação PRI de -100; isso indica que o processo está agendado como um processo realtime . Os processos em tempo real não usam pontuações agradáveis e sempre têm prioridade mais alta que os normais, mas ainda diferem entre si.

Você pode visualizar detalhes por processo com o comando chrt (por exemplo, chrt -p 3 ). Um dos seus -100 provavelmente irá reportar uma "prioridade de agendamento atual" de 99 - ao contrário de nice , aqui os valores altos são prioridade mais alta, que é provavelmente onde top criou o -100 number. Os processos não em tempo real sempre mostrarão uma "prioridade de agendamento atual" de 0 em chrt , independentemente do valor adequado, e sob o Linux uma "política de agendamento atual" de SCHED_OTHER .

Only the Ubuntu and CentOs machines have non digit niceness values.

Algumas versões do top parecem reportar processos em tempo real com rt sob PRI e, em seguida, 0 em NI .

    
por 30.04.2014 / 18:01
6

@ A resposta de Goldlilock me levou a fazer a pesquisa no caminho certo. Estes são os detalhes da minha pesquisa.

Algoritmos de agendamento disponíveis para processos

O Linux suporta 3 políticas de agendamento. SCHED_FIFO , SCHED_RR e SCHED_OTHER . SCHED_OTHER é a política padrão do agendador de compartilhamento de tempo universal usada pela maioria dos processos; SCHED_FIFO e SCHED_RR destinam-se a aplicações especiais de tempo crítico que precisam de controle preciso sobre a maneira como os processos executáveis são selecionados para execução.

Prioridades disponíveis

Para selecionar um processo a ser executado, o planejador do Linux deve considerar a prioridade de cada processo. Na verdade, existem dois tipos de prioridade.

Um valor prioridade estática é atribuído a cada processo e o agendamento depende dessa prioridade estática. Os processos agendados com SCHED_OTHER têm prioridade estática 0; os processos agendados em SCHED_FIFO ou SCHED_RR podem ter uma prioridade estática no intervalo 1 a 99 (99 é o maior).

A rotina sys_sched_get_priority_max( ) retorna a prioridade estática do processo, ele retorna 0 para processos que não são em tempo real.

A prioridade dinâmica é usada para aplicativos não em tempo real.

Todos os processos em tempo real são mais prioritários do que os processos normais. O Linux implementa prioridades em tempo real de acordo com o POSIX. O gráfico abaixo pode fornecer uma visão geral de como os processos são planejados com suas prioridades.

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

Agora, podemos emitir o comando abaixo para verificar a prioridade em tempo real de um processo. Aqui estou usando watchdog desde que tinha um bom valor listado como -.

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

Esta é a saída do comando acima. Como podemos ver, a prioridade em tempo real é 99, que é a maior prioridade possível.

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

Então, de acordo com minha compreensão, a prioridade em tempo real pode levar um valor máximo de 99 e, portanto, não pode haver nenhum valor agradável sobre ela. Essa é a razão, obtemos a saída legal como - para watchdog e outros processos do sistema.

Referências

link link

    
por 30.04.2014 / 18:10