De onde vêm essas leituras de disco?
-
21-12-2019 - |
Pergunta
Eu escrevi um aplicativo que funciona usando gravações de bloco único em disco usando O_WRONLY|O_SYNC|O_DIRECT.
Há algo que preciso fazer para desativar o cache do buffer deste dispositivo?
Durante o teste não há leitores.Posso simular da seguinte maneira:
# dd of=/dev/sda1 bs=512 count=1 if=/dev/zero oflag=direct,dsync
Por "iostat 1", algo está sendo lido no dispositivo toda vez que escrevo.
O comportamento não muda se eu adicionar "skip=1000", etc.
O comportamento muda um pouco se eu usar /dev/sda ou /dev/sda1:
sda:
Linux 2.6.32-431.5.1.el6.x86_64 (wiley) 07/31/2014 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.07 0.01 0.07 0.04 0.00 99.80
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 86.00 672.00 1.00 672 1
sda1:
sda 83.00 648.00 1.00 648 1
Solução
Ah!
raw(8) como visto aqui:
escrever:
# dd of=/dev/raw/raw1 bs=512 count=1 if=/dev/zero oflag=direct,dsync
iostat:
sda 2.00 0.00 1.00 0 1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow