De acordo com a página do manual, e wikipedia; nice
varia de -20 a 20.
No entanto, quando executo o seguinte comando, encontro alguns processos com um valor não numérico, como (-). Veja a sexta coluna da esquerda com o título 'NI'.
O que indica uma gentileza de (-)?
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 3 servidores em execução: Ubuntu 12.04 e CentOs 6.5 e Mac OsX 10.9. Somente as máquinas Ubuntu e CentOs têm valores de nicho sem dígito.
[brackets]
verdadekthread
s (threads do kernel).Respostas:
Observe que eles também têm uma pontuação PRI de -100; isso indica que o processo está agendado como um processo em tempo real . Os processos em tempo real não usam pontuações agradáveis e sempre têm uma prioridade mais alta que a normal, mas ainda diferem entre si.
Você pode visualizar detalhes por processo com o
chrt
comando (por exemplochrt -p 3
). Um dos seus -100 provavelmente reportará uma "prioridade de agendamento atual" de 99 - ao contrárionice
, aqui os valores altos são de prioridade mais alta, provavelmente o local de onde o-100
número foi criado . Os processos não em tempo real sempre mostram uma "prioridade de agendamento atual" de 0,chrt
independentemente do valor agradável, e no linux uma "política de agendamento atual" deSCHED_OTHER
.Algumas versões do
top
parecem relatar processos em tempo realrt
no PRI e depois0
no NI .fonte
-100
, mas não conseguiu descobrir isso :)A resposta de @ Goldlilock me direcionou 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 três políticas de agendamento.
SCHED_FIFO
,,SCHED_RR
eSCHED_OTHER
.SCHED_OTHER
é a política padrão do planejador universal de compartilhamento de tempo usada pela maioria dos processos;SCHED_FIFO
eSCHED_RR
destinam-se a aplicativos críticos de tempo especiais 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 de prioridade estática é atribuído a cada processo e o planejamento depende dessa prioridade estática. Processos agendados com
SCHED_OTHER
prioridade estática 0; processos agendados sobSCHED_FIFO
ouSCHED_RR
podem ter uma prioridade estática no intervalo1
de99
(99 é o mais alto).A
sys_sched_get_priority_max( )
rotina retorna a prioridade estática do processo, retorna0
para processos não em tempo real.A prioridade dinâmica é usada para aplicativos em tempo não real.
Todos os processos em tempo real têm uma prioridade mais alta 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 agendados com suas prioridades.
Agora, podemos emitir o comando abaixo para verificar a prioridade em tempo real de um processo. Aqui estou usando o watchdog, pois tinha um bom valor listado como -.
Esta é a saída do comando acima. Como podemos ver, a prioridade em tempo real é 99, que é a maior prioridade possível.
Portanto, de acordo com meu entendimento, a prioridade em tempo real pode ter um valor máximo de 99 e, portanto, não pode haver nenhum valor legal sobre ela. Essa é a razão, obtemos uma boa saída como - para watchdog e outros processos do sistema.
Referências
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/
fonte