Você pode postar iostat -xdk 1 50 quando o problema ocorre. Veja a man page do iostat em qual switch você pode usar para obter nomes de partições listados). Pastebin isto junto com um poutput de topo levado ao mesmo tempo.
Ok, então aqui quando o seu disco parece estar muito carregado em determinados momentos da sua carga de trabalho.
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 85.00 5.00 249.00 11.00 6040.00 64.00 46.95 10.73 44.23 3.85 100.00
sda 3.00 0.00 275.00 0.00 7764.00 0.00 56.47 7.63 23.27 3.64 100.00
sda 125.00 29.00 221.00 3.00 5508.00 128.00 50.32 7.49 41.08 4.46 100.00
sda 14.00 65.00 224.00 28.00 5940.00 372.00 50.10 1.97 8.05 3.52 88.80
Comparando com as outras iterações, a solicitação de leitura se torna muito esporadicamente grande às vezes. E então espere aumentos. No entanto, o tamanho médio da fila observado no avgqu-sz ainda é bastante baixo. Isso significa que a maior parte do tempo de espera é gasto enquanto o armazenamento atende às solicitações. Não está no lado do linux, não estou no lado do agendador.
Grosso modo, existem duas filas. Um no agendador e outro no lado do hardware. O tempo de espera é medido com base em cada IO desde o momento em que atinge o agendador de IO até o momento em que é atendido pelo armazenamento, ou seja, disco. O avgqu-sz é o número médio de I / O contido no planejador IO e na fila lun de armazenamento. Se o avgqu-sz for muito menor que a profundidade da fila do armazenamento, isso significa que pouco tempo é gasto na fila do planejador. O Scheduler passará esses IOs para o armazenamento e, até que eles sejam atendidos pelo armazenamento, o tempo de espera continuará aumentando.
Para encurtar a história, na minha opinião, em momentos específicos, o armazenamento está se tornando lento e isso aumenta a latência.