禁用 Linux 頁面快取讀取

禁用 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 等服務。

相關內容