Como obter todos os processos atualmente em execução no modo kernel?

2

Como posso listar processos que estão ocupados em uma chamada de sistema? Existe uma maneira de descobrir isso com o comando top ? Não encontrei nenhuma opção apropriada nas páginas do manual.

    
por jam 25.03.2016 / 18:45

2 respostas

2

Um processo atualmente em execução no modo kernel, ou seja, ocupado em uma chamada de sistema, está no estado D (em oposição a R para execução no modo de usuário ou S para suspensão, ou seja, em uma chamada de sistema mas bloqueada em algo ).

Isso não faz distinção entre um processo que está fazendo computação na CPU enquanto está no modo kernel e um processo que está aguardando algum hardware com sinais desabilitados (a definição estrita de sono ininterrupto). Eu não acho que o Linux expõe essa distinção em qualquer lugar. A computação na CPU enquanto está no modo kernel raramente dura muito tempo.

A versão superior em procps do Linux lista o estado do processo. Não parece ter uma opção para listar apenas processos no estado D, mas você pode usar a opção i ou a linha de comando -i para ocultar todos os processos que permaneceram ociosos desde a última atualização de tela, que normalmente deixe menos que uma tela cheia.

Se você quiser apenas listar os PIDs, você pode filtrar a saída de ps .

ps -o state=,pid= | sed -n 's/^D //p'

Em um sistema que não está fazendo E / S pesada, é de se esperar que na maioria das vezes isso liste zero processos.

    
por 26.03.2016 / 14:00
-1

De acordo com o código-fonte , não é possível fazer isso com o topo.

No entanto, o top tem um parâmetro -p , que permite que você informe apenas alguns PIDs. Infelizmente, este também está limitado a 20 parâmetros e o kernel pode facilmente ter mais de 20 processos em execução.

Eu criei um script de duas linhas para testar:

kprocs=$(ls -l /proc/*/exe | grep -v " -> " | cut -d "/" -f 3)
top -c -p $(echo ${kprocs} | sed 's/ /,/g')

Caso você esteja vagando, estou detectando os processos do kernel observando quais links não estão apontando para um binário no disco.

    
por 25.03.2016 / 19:47

Tags