Como ordenar a saída do ps para encontrar a prioridade dos processos em tempo real e identificar a fila de execução processess atualmente ocupada

6

Como identificar corretamente os processos em tempo real ocupados atualmente na fila da CPU e contá-los usando ps? Eu sei que há um monte de fileds como prio, rtprio, pri, bom, mas não sei usar corretamente. Parece que preciso usar algo como ps -eo rtprio,prio,cpu,cmd --sort=+rtprio para obter a lista completa, mas isso não parece certo para mim, já que muitos processos ficaram com - na coluna RTPRIO. Por exemplo, tenho 48 núcleos de sistema executando o Oracle Linux e tento identificar as seguintes questões:

  1. Quais processos ocuparam a fila de execução? O que é uma contagem deles?
  2. Como identificar processos que são executados no modo em tempo real ou com maior prioridade?
por user3417815 15.01.2016 / 20:39

1 resposta

5

Uma lista de processos com CPU% diferente de zero:

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'

Para contá-los

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1' | wc -l

Para ver isso continuamente atualizado, mas eles em um arquivo chamado processes.sh :

#!/bin/bash
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'

e torne-o executável com chmod +x processes.sh . Agora execute-o com o relógio para atualização ao vivo:

watch ./processes.sh
    
por 15.01.2016 / 21:04