Se R (runqueue) for maior que B (waitqueue) no vmstat, será que o I / O está ligado?

4

Se a fila de execução for o número de processos aguardando sua vez na CPU + processos atualmente em execução, e waitqueue é o número de processos aguardando E / S, então B na saída de vmstat seria maior que R significa que há um limite de E / S, não vinculado à CPU? Estou confuso porque o link abaixo diz o contrário ... De link

“Se threads executáveis (r) divididos pelo número de CPU for maior que um - > possível gargalo da CPU (O (r) coulmn deve ser comparado com o número de CPUs (CPUs lógicas como no tempo de atividade) se tivermos CPUs suficientes ou tivermos mais encadeamentos.) Números altos na coluna de processos bloqueados (b) indicam discos lentos. (r) deve sempre ser maior que (b); se não for, normalmente significa que você tem um gargalo na CPU ”

    
por John Alvarez 14.10.2018 / 04:28

2 respostas

4

Um número maior em b do que em r significa que as CPUs geralmente estão inativas, então você está certo em ser confundido. O documento deve ter lido "significa que você tem um afunilamento de E / S".

Tenha em atenção que a página diz que r nunca deve ser superior ao número de CPUs, e r = 16 num sistema de 12 CPUs é um problema "sério". Isso é bastante exagerado. Isso significa apenas CPUs são totalmente utilizadas e alguns segmentos estão esperando. Geralmente não é grande coisa.

Por fim, não confunda encadeamentos e processos, como o documento vinculado às vezes também. As colunas r e b mostram o número de encadeamentos, não os processos. Nem todos os processos são de thread único.

    
por 14.10.2018 / 06:10
0

Eu acho que essa frase é totalmente confusa.

Quando r > num_cpus , faz sentido pensar no sistema como um todo como ligado à CPU (naquele exato instante).

No entanto, não acho que r > b tenha algum significado especial.

Outra fonte sugere "se houver um número diferente de zero na coluna [co_de%] constantemente, você pode investigar mais com b ." Provavelmente, faz mais sentido considerar essa condição como sugerindo um sistema de E / S, a menos que você saiba que tem várias filas de E / S em uso.

iostat inclui uma coluna iostat para cada dispositivo de disco. Ou seja se %util for 100, sugere que sempre haja pelo menos um processo aguardando esse dispositivo. %util mostrará quantas solicitações diferentes estão aguardando de uma vez.

Os programas que usam AIO podem enviar mais de uma solicitação de cada vez. Isso é usado principalmente por bancos de dados, por exemplo, o MySQL InnoDB. A maioria dos programas não usa o Linux AIO, porque não suporta armazenamento em cache.

    
por 14.10.2018 / 10:40

Tags