Linux系統採用預讀(readahead)技術以加速檔案快取訪問(buffer IO)模式。同時,系統還支援上下文預讀(context readahead),旨在最佳化多個交錯順序資料流情境下的檔案訪問效能。然而,在某些隨機訪問情境中,上下文預讀演算法可能出現誤判,導致讀取過多實際不需要的頁面。在這類情境下,關閉上下文預讀演算法能顯著提升應用效能。本文將介紹Alibaba Cloud Linux 2/3系統中通過vm.enable_context_readahead參數配置來調整檔案系統的上下文預讀功能。
使用限制
作業系統:
Alibaba Cloud Linux 2(核心
4.19.91-18
及以上版本)。Alibaba Cloud Linux 3。
enable_context_readahead配置說明
通過設定/proc/sys/vm/enable_context_readahead
系統配置參數,可以開啟或關閉檔案系統的context readahead預讀功能。配置參數說明如下:
1:開啟context readahead預讀。
0:關閉context readahead預讀。
查詢當前context readahead預讀狀態。
通過讀參數檔案查詢當前context readahead預讀狀態。
cat /proc/sys/vm/enable_context_readahead
通過sysctl介面查詢當前context readahead預讀狀態。
sysctl -n vm.enable_context_readahead
配置context readahead預讀狀態。
開啟context readahead預讀狀態。
通過寫參數檔案開啟context readahead預讀狀態。
sudo sh -c 'echo 1 > /proc/sys/vm/enable_context_readahead'
通過sysctl介面開啟context readahead預讀狀態。
sudo sysctl -w vm.enable_context_readahead=1
關閉context readahead預讀狀態。
通過寫參數檔案關閉context readahead預讀狀態。
sudo sh -c 'echo 0 > /proc/sys/vm/enable_context_readahead'
通過sysctl介面關閉context readahead預讀狀態。
sudo sysctl -w vm.enable_context_readahead=0