我正在编写带有一些实时约束的 C 代码。我测试了我可以用 dd 写入磁盘的速度:
dd if=/dev/zero of=/dev/sdb bs=32K count=32768 oflag=direct
这会将 1GB 的零以 32K 块大小写入 /dev/sdb
我达到了大约 103 MB/s
现在我以编程方式做类似的事情:
open("/dev/sdb",O_WRONLY|O_CREAT|O_DIRECT|O_TRUNC, 0666);
我将时间戳值从 32K 缓冲区写入 /dev/sdb 10,000 次(在 for 循环中)获得另一个时间戳值 进行一些数字运算以获得以 MB/s 为单位的速率,大约为 49 MB/s
为什么我不能达到和dd一样的速度?strace 显示了我使用的相同打开命令。