在Linux中禁用磁盘caching

在一个课堂项目中,我的老师让我们做一些代码评估(C语言),为此我们需要在testing期间禁用磁盘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参数。

男子hdparm , 人系统

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

我想你需要告诉你的老师,现在不再是1984年了。现代计算机系统有几十个缓存,没有好的方法来禁用它们:

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

所以问题是你想测试什么,以及你想禁用哪个缓存。