記憶體子系統服務品質(memcg QoS)是Linux系統中用來管理和最佳化記憶體資源的功能,支援設定記憶體保障來鎖定特定量的記憶體以保證關鍵服務或應用的運行需求,並設定記憶體上限防止個別任務消耗過多記憶體影響整個系統穩定性。社區版核心中只有cgroup v2
介面支援該功能。在Alibaba Cloud Linux 2(核心版本4.19.91-18.al7
開始)和Alibaba Cloud Linux 3新增cgroup v1
介面支援memcg QoS的相關功能。
背景資訊
在Alibaba Cloud Linux核心中,cgroup v1
介面中預設開啟memcg QoS
功能。關於memcg QoS
的更多資訊,您可以參見核心文檔Documentation/admin-guide/cgroup-v2.rst
。核心文檔通過Alibaba Cloud Linux的Debuginfo包和源碼包擷取,擷取請參見Alibaba Cloud Linux 2使用說明。
注意事項
使用cgroup v1
介面的memcg QoS功能時,建議將任務放置在memcg的葉子節點中,例如,/sys/fs/cgroup/memory/<intermediate node>/<leaf node>/tasks路徑下。
介面說明
本節介紹Alibaba Cloud Linux核心中cgroup v1
介面實現memcg QoS功能的相關介面。
介面 | 描述 |
memory.min | 絕對鎖定記憶體:即使系統沒有可回收的記憶體,也不會回收該介面鎖定的記憶體,使該cgroup內的進程能夠獲得設定的最小記憶體的保證,避免服務效能的下降;適用於為了效能需求,需要保證最小常駐記憶體的服務。 讀寫說明如下:
|
memory.low | 相對鎖定記憶體:如果系統沒有其他可回收的記憶體,該介面鎖定的記憶體也會被回收一部分,系統在資源緊張的時候能夠做出更合理的記憶體配置策略;適用於需要一定保護但無需絕對保護的服務,比如非關鍵業務的應用程式、背景工作等。 讀寫說明如下:
|
memory.high | 限制memcg的記憶體使用量,讀寫說明如下:
|
介面樣本
在Alibaba Cloud Linux 3作業系統中,memcg的掛載目錄下,例如/sys/fs/cgroup/memory/路徑下,分配或限制記憶體使用量。
操作以下命令僅使用root使用者。
樣本命令如下。
運行以下命令,建立test_memcg目錄。
mkdir /sys/fs/cgroup/memory/test_memcg
設定絕對鎖定記憶體。
運行以下命令,設定絕對鎖定記憶體為200 MB。
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.min
運行以下命令,查看結果。
cd /sys/fs/cgroup/memory/test_memcg cat memory.min
設定相對鎖定記憶體。
運行以下命令,設定絕對鎖定記憶體為200 MB。
echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.low
運行以下命令,查看結果。
cd /sys/fs/cgroup/memory/test_memcg cat memory.low
設定限制記憶體的上限。
運行以下命令,設定限制記憶體的上限為1 GB。
echo 1073741824 > /sys/fs/cgroup/memory/test_memcg/memory.high
運行以下命令,查看結果。
cd /sys/fs/cgroup/memory/test_memcg cat memory.high