在linux中禁用磁盘缓存

时间:2013-11-26 11:13:12

标签: c linux caching ubuntu-12.04

在课堂项目中,我的老师告诉我们进行一些代码评估(C语言),为此我们需要在测试期间禁用磁盘缓存。

目前我正在使用Ubuntu 12.04,我该怎么做?

感谢。

3 个答案:

答案 0 :(得分:12)

您需要root权限才能执行此操作。您可以运行hdparm -W 0 /dev/sda命令来禁用写入缓存,您必须将/dev/sda替换为驱动器的设备:

#include <stdlib.h>
...
system("hdparm -W 0 /dev/sda1");

您还可以选择性地禁用对各个分区的写入缓存,如下所示:hdparm -W 0 /dev/sda1

要重新启用缓存,只需使用-W 1参数。

man hdparmman system

答案 1 :(得分:5)

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刷新到磁盘

答案 2 :(得分:2)

我认为你需要告诉你的老师它不再是1984年。现代计算机系统有几十个缓存,没有好办法让它们全部禁用:

  • 在硬盘上自动缓存
  • I / O硬件子系统中的缓存
  • 虚拟文件系统中的缓存
  • CPU中的几个级别的缓存

所以问题是你想要测试什么以及你想为此禁用哪些缓存。