Por que minha E / S sincronizada é tão ruim em comparação com a direta?

1

Eu tenho dois discos de 3 TB em uma configuração de software RAID 1 e o SO host é de 64bit Debian wheezy.

Emissão:

dd if=/dev/zero of=test bs=64k count=3k oflag=direct && rm test

Rendimentos:

201326592 bytes (201 MB) copied, 1.423 s, 141 MB/s

Se eu alterar o comando dd para usar chamadas IO sincronizadas (alterando a opção de roteador de "direto" para "sincronizar"), escreva a queda de desempenho no chão:

201326592 bytes (201 MB) copied, 76.0286 s, 2.6 MB/s

Obviamente, o IO sincronizado resulta em um impacto no desempenho, mas eu esperava que o throughput de gravação caísse para talvez metade ou um terceiro (pior caso) do equivalente direto. 2,6MB / s parece extremo e me faz pensar que há um problema em algum lugar.

    
por corford 09.05.2013 / 12:06

1 resposta

2
O p / p sincronizado pára até que o bloco seja gravado no disco e confirmado pelo controlador, assim você acaba esperando pelo menos um tempo de busca entre os blocos. Você está obtendo cerca de 40 64k blocos por segundo, ou um a cada 25 milissegundos. Isso é consistente com o gasto de um tempo de pesquisa de 10ms para gravar os dados e outro para atualizar os metadados no inode, além de um pouco de sobrecarga do SO.

É por isso que você não quer usar IO sincronizado, a menos que você realmente precise de consistência strong.

    
por 09.05.2013 / 12:34

Tags