我编写了一个应用程序,该应用程序使用 O_WRONLY|O_SYNC|O_DIRECT 使用单块写入磁盘进行心跳。
我需要做些什么来禁用此设备的缓冲区缓存吗?
在测试期间没有阅读器。我可以模拟如下:
# dd of=/dev/sda1 bs=512 count=1 if=/dev/zero oflag=direct,dsync
根据“iostat 1”,每次我写东西时都会从设备中读取一些东西。
如果我添加“skip=1000”等
,行为不会改变。如果我使用 /dev/sda 或 /dev/sda1,行为会稍微改变:
数据:
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