Em primeiro lugar, sou novo em discos, só sei o básico. Estou tentando melhorar o desempenho de um software com E/S pesada e preciso entender como meus discos SAS funcionam em termos de velocidade de leitura e gravação.
Eu fiz testes muito básicos de leitura/gravação e notei o que parece ser um 'penhasco de gravação'. Os discos têm vários TB de capacidade de armazenamento e a máquina à qual estão conectados possui 630 GB de RAM. Meus testes mostram que, após ~ 200 GB de gravação intensiva, a velocidade de gravação cai de ~ 2.000 MBps para ~ 300 MBps.
Eu acho que há algum tipo de buffer ou cache grande que enche em algum momento e isso causa a diminuição na velocidade de gravação. Como isso realmente funciona? Como posso calcular o tamanho dela? É configurável?
300M/s é uma velocidade de gravação perfeitamente normal para um array SAS conectado diretamente. Tudo acima disso é um artefato de cache do sistema operacional.
É difícil dizer sem saber o que seu aplicativo faz, mas, em muitos casos, usar o
O_DIRECT
sinalizador ao abrir um arquivo fornecerá um comportamento mais realista: faz com que o sistema ignore o cache e vá diretamente para o controlador de disco, removendo assim os artefatos do cache e o penhasco de gravação.É claro que isso tem o custo de reduzir seu desempenho de gravação para o nível real de seu hardware de E/S - mas esse é exatamente o ponto: você não pode gravar mais rápido do que o seu subsistema de disco permite de maneira sustentável: o cache ajudará muito com cargas de gravação em rajadas, mas não pode superar as limitações do hardware subjacente para sempre.