No comando “top” do Linux, quais são nós, sy, ni, id, wa, hi, si e st (para uso da CPU)?

178

Quando emito $ top no linux, recebo um resultado semelhante a este ( veja aqui ).

Uma das linhas tem informações de uso da CPU representadas da seguinte forma:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Embora eu conheça as definições de cada uma delas (muito abaixo), não entendo exatamente o que essas tarefas significam.

  • hi - o que significa interrupção de hardware de manutenção?
  • si - o que significa interrupção do software de manutenção?
  • st - eles dizem que é o tempo em espera involuntária por cpu virtual enquanto o hipervisor está atendendo a outro processador (ou) Tempo roubado de uma máquina virtual. Mas o que isso realmente significa? alguém pode ser mais claro?

{Eu listei todos (nós, sy, ni, etc) porque ajudaria outras pessoas procurando pelo mesmo. Esta informação não está nas páginas man.}

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
    
por its_me 17.08.2011 / 20:27

2 respostas

88

hi é o tempo gasto no processamento de interrupções de hardware. As interrupções de hardware são geradas por dispositivos de hardware (placas de rede, controlador de teclado, temporizador externo, senadores de hardware, ...) quando precisam sinalizar algo para a CPU (os dados chegaram, por exemplo).

Como isso pode acontecer com muita frequência, e como eles basicamente bloqueiam a CPU atual enquanto estão em execução, os manipuladores de interrupção de hardware do kernel são escritos para serem o mais rápido e simples possível.

Se for necessário processamento longo ou complexo, essas tarefas serão adiadas usando uma chamada de mecanismo softirqs . Estes são programados de forma independente, podem ser executados em qualquer CPU, podem até ser executados simultaneamente (não se aplica a manipuladores de interrupção de hardware).

A parte sobre hard IRQs bloqueando a CPU atual, e a parte sobre softirqs sendo capaz de rodar em qualquer lugar não está exatamente correta, pode haver limitações, e alguns hard IRQs podem interromper outros.

(Como exemplo, uma interrupção de hardware de "dados recebidos" de uma placa de rede poderia simplesmente armazenar as informações "a placa ethX precisa ser atendida" em algum lugar e programar um software. O software seria o acionador do roteamento de pacotes atual. .)

si representa o tempo gasto nesses softirqs.

Uma boa leitura sobre o mecanismo de softirq (com um pouco de história também) é a Vou fazer mais tarde: Softirqs, Tasklets, Metades Inferiores, Filas de Tarefas, Filas de trabalho e cronômetros (PDF, 64k).

st , "steal time", só é relevante em ambientes virtualizados. Ele representa o tempo em que a CPU real não estava disponível para a máquina virtual atual - foi "roubada" dessa VM pelo hypervisor (para executar outra VM ou para suas próprias necessidades).

O documento contabilidade de tempo da CPU da IBM tem mais informações sobre tempo de furto e Contabilidade de CPU em ambientes virtualizados. (Destina-se ao hardware do tipo zSeries, mas a ideia geral é a mesma para a maioria das plataformas.)

    
por 17.08.2011 / 20:53
11
  • us - Tempo gasto no espaço do usuário
  • sy - Tempo gasto no espaço do kernel
  • ni - Tempo gasto na execução de processos do usuário (prioridade definida pelo usuário)
  • id - Tempo gasto em operações ociosas
  • wa - Tempo gasto na espera de periféricos de E / S (por exemplo, disco)
  • hi - Tempo gasto com rotinas de interrupção de hardware. (Sempre que uma unidade periférica deseja atenção da CPU, ela literalmente puxa uma linha, para sinalizar a CPU para atendê-la)
  • si - Tempo gasto lidando com rotinas de interrupção de software. (um pedaço de código, chama uma rotina de interrupção ...)
  • st - Tempo gasto em esperas involuntárias por cpu virtual enquanto o hipervisor está atendendo a outro processador (roubado de uma máquina virtual)
por 11.01.2017 / 21:11

Tags