Tenho muita dúvida de que você pode obter benchmarks significativos de dd
. dd
mostra apenas como grandes leituras sequenciais ou grandes gravações assíncronas seqüenciais executam entre vários dispositivos. Contanto que sua carga de trabalho consista principalmente na cópia de arquivos grandes entre esses sistemas de arquivos, você está bem. Eu duvido que essa seja sua carga de trabalho.
Sua melhor aposta é fazer o perfil do uso do disco e usar uma verdadeira suíte de benchmarking de E / S (link bonnie++
ou algo assim) para testar quanto efeito a alteração de vários tunables tem. Para um banco de dados, eu esperaria muitas leituras aleatórias. Definir noatime
e fazer data=writeback
em seus arquivos de dados principais (com backups regulares sendo feitos) é provavelmente o melhor que você pode fazer com as informações que temos até agora.
Para responder ao que parece ser a sua maior questão, é porque as gravações assíncronas (como as feitas por dd
) podem ser armazenadas em buffer na memória e confirmadas no disco. Eles são kind de I / O ligado na medida em que filas e buffers podem preencher e você teria que esperar que eles se tornassem disponíveis novamente (ao se comprometer em disco) antes que você pudesse empilhar mais.
As leituras, por outro lado, são definidas como E / S limitadas, portanto, você não costuma executar a mesma ação assíncrona. Você pode brincar com read_ahead_kb
e afins para que mais dados sequenciais sejam lidos na memória antes de serem solicitados pela carga de trabalho no futuro próximo.
Isso é tudo o que posso pensar em responder com o que sabemos até agora. Deixe-me saber se você tem alguma dúvida.