【发布时间】:2013-11-26 11:13:12
【问题描述】:
在一个课堂项目中,我的老师告诉我们进行一些代码评估(C 语言),为此我们需要在测试期间禁用磁盘缓存。
目前我使用的是 Ubuntu 12.04,我该怎么做?
谢谢。
【问题讨论】:
-
如果你在一个单独的分区上工作,你可以用
-o sync挂载它
标签: c linux caching ubuntu-12.04
在一个课堂项目中,我的老师告诉我们进行一些代码评估(C 语言),为此我们需要在测试期间禁用磁盘缓存。
目前我使用的是 Ubuntu 12.04,我该怎么做?
谢谢。
【问题讨论】:
-o sync挂载它
标签: c linux caching 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 参数。
【讨论】:
system():sudo hdparm -W 0 /dev/sda1
echo 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 刷新到磁盘
【讨论】:
sync,这是一个有风险的操作。
我认为你需要告诉你的老师,现在已经不是 1984 年了。现代计算机系统有几十个缓存,没有好的方法可以全部禁用:
所以问题是您要测试什么以及要为此禁用哪些缓存。
【讨论】:
libc 缓冲。对于学校任务,我希望老师的真正意思是libc 级别缓冲。