Estou executando um benchmark de gravação aleatória diretamente em alguns discos (HDD e SDD) e estou recebendo alguns dados de saída estranhos no monitor iostat. Além da taxa de gravação usual, há uma taxa de leitura que não consigo entender porque está lá.
Este é o programa de benchmark de gravação que fiz em C para o teste (o código principal apenas para a questão):
fd=open("/dev/sda", O_WRONLY|O_CREAT|O_TRUNC, 0666);
for (;;) {
offset2=DLIMIT * (double)random() / RAND_MAX;
retval = lseek64(fd, offset2, SEEK_SET);
handle("lseek64", retval == (off64_t) -1);
retval = write(fd, buffer, BLOCKSIZE);
handle("write", retval < 0);
}
Por exemplo, durante um teste de 60 segundos, o iostat mostra esses resultados médios:
54467,27 (rkB / s) | 38147,37 (wkB / s)
Eu fiz strace no programa em execução e ele mostra apenas os de write e lseek ..
Outra boa informação, se eu rodar este programa em um arquivo (sistema de arquivos montado do SDA), ele não mostrará nenhuma taxa de leitura ... apenas nesta situação "/ dev / sda".
Alguma idéia ou explicação para essa taxa de leitura fantasma?