O tempo para ler um setor depende do ângulo de rotação do disco quando você tenta ler, e seu tamanho de amostra é muito pequeno para evitar flutuações estatísticas desse processo aleatório. Você está lendo todos os setores apenas uma vez, em média. Isso é bom quando bytes
é grande e você está obtendo muitas amostras, mas não é tão bom quando bytes
é pequeno. Para obter dados mais interessantes, você deve sempre ler um grande número fixo de setores, independentemente da magnitude de bytes
.
Em algum ponto, pode-se esperar um salto no tempo de acesso, quando bytes
excede o tamanho de um cilindro, e o cabeçote tem que se mover de pista em trilha, em vez de apenas esperar que o setor correto voe. (o que também leva tempo, mas menos tempo). Mas esse efeito pode ser melhor visto quando se lê uma partição bruta, em vez de um sistema de arquivos (que é livre para mapear os setores de arquivos não linearmente para os setores de dispositivos).
Os tamanhos dos cilindros dos discos modernos são, é claro, variáveis, já que mais setores podem se encaixar nos trilhos mais longos do que nos trilhos internos menores, mais próximos do eixo.
Tentar medir tudo isso é ainda mais complicado pelo fato de que você provavelmente tem um pequeno cache de memória no próprio disco, que não é desativado somente usando O_DIRECT
.