在我的课程项目中,老师让我们进行一些代码评估(使用C语言),为此我们需要在测试期间禁用磁盘缓存。
目前我正在使用Ubuntu 12.04,我该如何做到这一点?
谢谢。
在我的课程项目中,老师让我们进行一些代码评估(使用C语言),为此我们需要在测试期间禁用磁盘缓存。
目前我正在使用Ubuntu 12.04,我该如何做到这一点?
谢谢。
您需要root访问权限才能执行此操作。您可以运行hdparm -W 0 /dev/sda
命令来禁用写缓存,其中您需要将/dev/sda
替换为您的驱动器设备:
#include <stdlib.h>
...
system("hdparm -W 0 /dev/sda1");
您还可以像这样对单个分区选择性地禁用写缓存:hdparm -W 0 /dev/sda1
。
要重新启用缓存,只需使用-W 1
参数即可。
sudo hdparm -W 0 /dev/sda1
。 - Aaron Digullaecho 100 > /proc/sys/vm/dirty_expire_centisecs
echo 100 > /proc/sys/vm/dirty_writeback_centisecs
这将把从RAM到磁盘的刷新时间减少到1秒。
您可以使用0进行测试。
或者:
echo 1 > /proc/sys/vm/drop_caches
将所有RAM刷新到磁盘。
我认为你需要告诉你的老师现在已经不是1984年了。现代计算机系统有数十个缓存,没有好的方法可以将它们全部禁用:
因此问题是你想要测试什么以及你想要禁用哪些缓存。
libc
缓冲。对于学校任务,我希望老师的真正意思是 libc
级别的缓冲。 - Mikko Rantalainen