我已经写了一个应用程序,即使用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
.

有帮助吗?

解决方案

aha!

原始(8)如图所示:

https://superuser.com/问题/ 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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top