我使用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:
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
答案 0 :(得分:0)
啊哈!
raw(8)如下所示:
写:
# 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