Eu gostaria de fazer uma pergunta sobre a saída do sar -q
. Agradeço se alguém puder me ajudar com a compreensão runq-sz
.
Eu tenho um sistema em que os threads da CPU estão 8 cpu threads
ativados RHEL 7.2
.
[ywatanabe@host2 ~]$ cat /proc/cpuinfo | grep processor | wc -l
8
Abaixo está sar -q
o resultado do meu sistema, mas runq-sz
parece ser baixo em comparação com o ldavg-1
.
runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
05:10:01 PM 0 361 0.29 1.68 2.14 0
05:11:01 PM 0 363 1.18 1.61 2.08 2
05:12:01 PM 0 363 7.03 3.15 2.58 1
05:13:01 PM 0 365 8.12 4.15 2.96 1
05:14:01 PM 3 371 7.40 4.64 3.20 1
05:15:01 PM 2 370 7.57 5.26 3.51 1
05:16:01 PM 0 366 8.42 5.90 3.84 1
05:17:01 PM 0 365 8.78 6.45 4.16 1
05:18:01 PM 0 363 7.05 6.40 4.28 2
05:19:02 PM 1 364 8.05 6.74 4.53 0
05:20:01 PM 0 367 7.96 6.96 4.74 1
05:21:01 PM 0 367 7.86 7.11 4.93 1
05:22:01 PM 1 366 7.84 7.31 5.14 0
A partir do man sar
, eu estava pensando que runq-sz
representa o número de tarefas dentro da fila de execução cujos estados são TASK_RUNNING que corresponde ao R sate in ps
.
runq-sz
Run queue length (number of tasks waiting for run time).
O que runq-sz
realmente representa?
Esta página de manual tem uma explicação mais detalhada desta propriedade:
Interpretando resultados
Como é o caso de muitos "indicadores", você deve usá-los em combinação uns com os outros para interpretar se há um problema de desempenho ou não. Este indicador específico indica se o seu sistema está com falta de tempo de CPU.
Já o load1,5,15 indica processos que estão na fila de execução, mas estão sendo forçados a aguardar o tempo de execução. A variedade load1,5,15 informa a tendência geral do sistema e se ele tem muitos processos esperando (aumento de carga) versus tendência de queda. Mas os processos podem esperar por uma variedade de coisas com carga1,5,15, normalmente é a E/S que está bloqueando quando você vê carga alta1,5,15 vezes.
Com runq-sz, você está esperando o tempo em uma CPU.
Referências
Esta postagem é a primeira que aparece no Google e a última resposta acima está marcada como aceita.
A resposta fornece uma referência e cita o texto de uma página de manual do Solaris . A pergunta do OP foi, no entanto, em relação ao RHEL 7 . O tratamento de relatórios de processos executáveis no Solaris e no Linux é diferente.
O Solaris tende a usar a média de carga/fila como um indicador de quantos processos estão esperando para serem executados.
O Linux tende a usar a média de carga/fila como um indicador de quantos processos estão em execução + quantos processos estão esperando para serem executados.
runq-sz
É mais provável que a representação de in do Linuxsar -q
indique o número de processos em execução atuais + o número de processos enfileirados.Para fazer referência ao exemplo original de OPs de uma instância de 8 threads, um
runq-sz
menor que 8 indica desempenho ideal nesse sentido.Eu concordaria que o baixo
runq-sz
versus altoloadavg
provavelmente indica algum tipo de processo bloqueado ou adormecido. Você pode ver parcialmente isso na saída sar de exemplo do OP, nablocked
coluna.Você diz para Linux:
Isso significa que load avg e runq-sz incluem os processos em execução
Então, qual é a diferença entre processos em espera e processos em fila, por favor?
Por exemplo, você pode interpretar isso por favor (a primeira linha com runq-sz=10)?
Isto é para um servidor de 20 núcleos (40 threads)
O ldavg-1 > runq-sz significa que muitos processos estão aguardando recursos (E/S, por exemplo)?
o uso da CPU do meu servidor é baixo: 80% ocioso.
Saudações,