Estou vendo o desempenho de E / S do disco de uma hospedagem na Web VPS (servidor virtual) e gostaria de ajudar a entender os números que o 'iostat' está me dando.
Esta é minha leitura seqüencial muito simples do disco virtual único com 'dd':
# dd if=/dev/sda1 of=/dev/null bs=16k count=102400
6400+0 records in
6400+0 records out
104857600 bytes (105 MB) copied, 7.91767 s, 13.2 MB/s
(13,2MB / s não é um IMO muito quente).
O teste foi realizado quando o sistema estava bem silencioso, mas ainda haveria uma carga normal "quiescente" enquanto eu estava executando o dd.
Eu corri 'iostat -ktxz 5' durante o teste; essa foi a saída do comando em que a amostra de 5 segundos estava totalmente dentro do tempo em que 'dd' estava em execução:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 12030.60 8.00 103.40 1.40 12135.20 36.00 232.27 2.60 23.77 9.54 99.96
Isso é o que eu trabalhei para mim:
é essencialmente 100% ocupado atendendo as leituras seqüenciais do disco;
rkB / s é muito próximo dos 13.2MB / s que o dd reportou;
rkB / s dividido por r / s é 117kB, que é o mesmo que a figura avgrq-sz (que está em setores); Ouso dizer que o iostat faz o mesmo cálculo.
a 'blockdev --getra / dev / sda' informa que o dispositivo tem um set de 256 setores; isso é bem próximo do tamanho médio de solicitações de 117kB.
Então, estou assumindo que:
dd está lendo em blocos de 16KB;
mas o Linux está prontamente fazendo leituras antecipadas de 128 KB.
Mas coisas que não entendo incluem:
1000ms divididos pelo aguardo de 23,77ms me dá um número de 42 pedidos por segundo; ainda o r / s é 103.40?
Por que o avgqu-sz seria diferente de 1? Meu dd era um processo single-threaded, o kernel estaria apenas invocando readahead um de cada vez?
Por outro lado, o avgqu-sz * 1000ms / 23.77ms me dá 109 r / s, muito próximo dos r / s relatados.
O que são todas essas solicitações mescladas? rrqm / s é 12.030?!?! Não consigo entender isso em blocos de leitura de 128kB ou nas leituras de 16kB em nível de usuário que o dd estava fazendo.
Eu acho que há algumas coisas básicas sobre discos modernos e Linux, dos quais eu sou totalmente ignorante. :( O avgqu-sz é provavelmente a chave - por que você deve ter mais de uma solicitação na fila a qualquer momento?
Tags iostat