小编vah*_*hid的帖子

禁用 Linux 页面缓存读取

有没有办法在 Linux 中关闭读取的页面缓存?更具体地说,我希望我的进程直接从磁盘读取。

我的问题的设置:我正在 Postgres 中尝试新的查询处理技术并测量它们的运行时间。为了准确比较不同方法的运行时间,我需要关闭从操作系统缓存的读取。

我已阅读以下方法,但它们都不适用于我的情况:

  1. 使用清除缓存echo 1 > /proc/sys/vm/drop_caches:我需要在查询的每次迭代时调用它,这会弄乱我的最终测量时间。
  2. O_DIRECT在程序内使用:我无法控制 Postgres 如何读取文件
  3. 使用 挂载我的设备-o sync。我在这里读到它将关闭写入缓冲,但我不确定它是否也会禁用从缓存的读取?
  4. 使用hdparm -W 0 /dev/sda1:同样,这只会禁用写入缓存。
  5. 使用此处解释的应用程序特定脚本:如果我有一个应用程序,那么这将起作用,但在我的设置中,我有一个 Postgres 服务器作为服务(具有许多线程)和一个客户端。我不是 100% 确定,但该脚本似乎适用于常规应用程序,而不适用于 Postgres 等服务。

linux postgresql cache hard-drive-cache

7
推荐指数
0
解决办法
1663
查看次数

标签 统计

cache ×1

hard-drive-cache ×1

linux ×1

postgresql ×1