全部產品
Search
文件中心

Alibaba Cloud Linux:cgroup v1介面整合memcg QoS功能最佳化記憶體

更新時間:Jul 17, 2024

記憶體子系統服務品質(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內的進程能夠獲得設定的最小記憶體的保證,避免服務效能的下降;適用於為了效能需求,需要保證最小常駐記憶體的服務。

讀寫說明如下:

  • 讀該介面可以查看memcg鎖定的記憶體大小。

  • 寫該介面可以設定memcg鎖定的記憶體大小。

memory.low

相對鎖定記憶體:如果系統沒有其他可回收的記憶體,該介面鎖定的記憶體也會被回收一部分,系統在資源緊張的時候能夠做出更合理的記憶體配置策略;適用於需要一定保護但無需絕對保護的服務,比如非關鍵業務的應用程式、背景工作等。

讀寫說明如下:

  • 讀該介面可以查看memcg鎖定的記憶體大小。

  • 寫該介面可以設定memcg鎖定的記憶體大小。

memory.high

限制memcg的記憶體使用量,讀寫說明如下:

  • 讀該介面可以查看memcg的記憶體上限。

  • 寫該介面可以設定memcg的記憶體上限。

介面樣本

在Alibaba Cloud Linux 3作業系統中,memcg的掛載目錄下,例如/sys/fs/cgroup/memory/路徑下,分配或限制記憶體使用量。

說明

操作以下命令僅使用root使用者。

樣本命令如下。

  1. 運行以下命令,建立test_memcg目錄。

    mkdir /sys/fs/cgroup/memory/test_memcg
  2. 設定絕對鎖定記憶體。

    1. 運行以下命令,設定絕對鎖定記憶體為200MB。

      echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.min
    2. 運行以下命令,查看結果。

      cd /sys/fs/cgroup/memory/test_memcg
      cat memory.min
  3. 設定相對鎖定記憶體。

    1. 運行以下命令,設定絕對鎖定記憶體為200MB。

      echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.low
    2. 運行以下命令,查看結果。

      cd /sys/fs/cgroup/memory/test_memcg
      cat memory.low
  4. 設定限制記憶體的上限。

    1. 運行以下命令,設定限制記憶體的上限為1GB。

      echo 1073741824 > /sys/fs/cgroup/memory/test_memcg/memory.high
    2. 運行以下命令,查看結果。

      cd /sys/fs/cgroup/memory/test_memcg
      cat memory.high