在linux中禁用磁盘缓存

Fla*_*ops 3 c linux caching ubuntu-12.04

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

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

谢谢.

nio*_*nio 13

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

#include <stdlib.h>
...
system("hdparm -W 0 /dev/sda1");
Run Code Online (Sandbox Code Playgroud)

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

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

男子hdparm,男子系统

  • 注意:这仅禁用写入缓存.读取缓存怎么样? (10认同)
  • 你也可以从shell运行命令,不需要`system()`:`sudo hdparm -W 0/dev/sda1` (4认同)
  • @AaronDigulla,也许这就是hdparm的"-f"选项用于:"在退出时同步并刷新设备的缓冲区缓存."还有一个"-F"选项"刷新驱动器上的写缓存缓冲区" ; 强调"写入"为"-F"表示"-f"刷新读写缓存. (3认同)

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