Contexto: Estou escrevendo um script que calcula o uso de E / S de um serviço no histórico do último nos últimos 2 minutos (onde a amostragem do topo está configurada para ser por 1 minuto).
Estou usando o seguinte comando para gerar o arquivo de histórico:
atop -P DSK,PRD -b [time] -e [time] -r > somefile_to_read_from
Estou usando a opção de saída analisável atop
( -P
) e os rótulos DSK
e PRD
.
Na página de manual de atop
, está escrito sobre DSK
:
For every logical volume/multiple device/hard disk one line is shown.
Subsequent fields: name, number of milliseconds spent for I/O, number of reads issued, number of sectors transferred
for reads, number of writes issued, and number of sectors
transferred for write.
Enquanto para PRD
, diz:
For every process one line is shown.
Subsequent fields: PID, name (between brackets), state, obsoleted kernel patch installed ('n'), standard io statistics
used ('y' or 'n'), number of reads on disk, cumulative
number of sectors read, number of writes on disk, cumulative number of sectors written, cancelled number of written
sectors, TGID (group number of related tasks/threads) and
is_process (y/n).
Eu assumi que eles seriam a mesma coisa. No entanto, quase sempre obtenho valores muito acima de 100% para o uso de E / S (por exemplo, ao executar ab
para o apache). Eu pensei que seria um problema vindo da minha lógica de programação e algoritmo, no entanto, eu bati minha cabeça na parede por horas e não conseguia pensar em um erro que eu poderia ter feito, tentei várias maneiras diferentes de calculá-lo , ainda obtendo os mesmos resultados.
Então eu abri e comecei a ler o arquivo de histórico que eu criei linha por linha depois de filtrar para mostrar apenas o processo que eu monitorei para ter esse uso de I / O (apache neste caso, desde que executei benchmarks em isto). E notei algo, que era o fato de que os números de gravações emitidas por eram muito menores do que a soma de todas as gravações em disco do apache DSK
lines ' .
Não sei se entendi algo errado ou o que estou fazendo de errado. O arquivo de histórico é muito grande para mostrar, no entanto, posso fazer o upload para algo como pastebin, se necessário.
Minhas perguntas são, o que os números de gravações / leituras emitidas de PRD
referem, não é o mesmo que o número de leituras / gravações de DSK
? no disco ? E se não, qual seria uma maneira de calcular o uso de I / O para um único processo usando o histórico do topo?