0

我编写了一个应用程序,该应用程序使用 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
4

1 回答 1

0

啊哈!

raw(8) 如下所示:

https://superuser.com/questions/242928/disable-linux-read-and-write-file-cache-on-partition/464382#464382

写:

# 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
于 2014-07-31T14:01:59.523 回答