日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Memcg OOM優先級策略功能

Alibaba Cloud Linux 2(內核版本4.19.91-18.al7開始)和Alibaba Cloud Linux 3(內核版本5.10.60-9.al8開始)新增內存子系統(memcg)內存溢出OOM(Out Of Memory)優先級策略功能。本文主要介紹實現memcg OOM優先級策略功能的接口,以及接口的示例說明。

背景信息

在現有內核系統中,內存緊張情況下內核會遍歷cgroup,選擇耗用內存較多的cgroup進行內存回收,甚至在回收失敗的情況下直接OOM,并停止當前cgroup下的所有任務。這對于當前cgroup包含的核心業務來說,會造成很大的影響。為此我們希望這類包含核心業務的cgroup占有的內存不被回收,或者cgroup下的任務在OOM中可以存活下來,以便讓內核去選擇其他的cgroup進行內存回收或者OOM。

為了解決這個問題,Alibaba Cloud Linux增加了memcg OOM優先級配置功能。該功能在進行OOM操作時,會首先判定cgroup的優先級,選擇低優先級的cgroup進行OOM操作。

memcg OOM優先級接口功能說明

接口

說明

memory.use_priority_oom

該接口用于設置是否啟用memcg OOM優先級策略功能,取值為0或者1。該接口不會繼承,默認值為0。

  • 取值為0時,表示禁用memcg OOM優先級策略功能。

  • 取值為1時,表示開啟memcgOOM優先級策略功能。

memory.priority

該接口提供13個級別的memcg優先級以支持不同重要程度的業務。取值范圍為0~12,數值越大表示優先級越高。該接口不會繼承,默認值為0。

  • 實現一定程度的內存QoS,此處需要說明的優先級值非全局變量,只能在同父cgroup下的兄弟節點進行比較。

  • 對于優先級相等的兄弟節點來說,會按照組的內存使用量來排序選擇內存使用最大的進行OOM操作。

接口配置示例

按如下所示創建6個cgroup子節點A、 B、 C、 D、 E、 F,開啟memory.use_priority_oom接口,并通過memory.priority接口設置OOM的優先級。

                root
                /  \
               A    B
              / \  /  \
             C   D E   F

則各層級設置的接口值,對應關系如下所示:

  • A:10

  • B:8

  • C:5

  • D:6

  • E:7

  • F:8

  1. 遠程連接ECS實例。

    具體操作,請參見通過密碼或密鑰認證登錄Linux實例

  2. 運行以下命令創建兩個cgroup節點 A、B,并開啟memcg OOM優先級策略功能。

    mkdir /sys/fs/cgroup/memory/A
    cd /sys/fs/cgroup/memory/A
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B
    cd /sys/fs/cgroup/memory/B
    echo 1 >memory.use_priority_oom
  3. 運行以下命令分別設置A、B節點的memcg OOM優先級值為10、8。

    cd /sys/fs/cgroup/memory/A
    echo 10 > memory.priority
    cd /sys/fs/cgroup/memory/B
    echo 8 > memory.priority
  4. 運行以下命令分別在A節點下創建C、D子節點,在B節點下創建E、F子節點, 并開啟memcg OOM優先級策略功能。

    mkdir /sys/fs/cgroup/memory/A/C
    cd /sys/fs/cgroup/memory/A/C
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/A/D
    cd /sys/fs/cgroup/memory/A/D
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B/E
    cd /sys/fs/cgroup/memory/B/E
    echo 1 >memory.use_priority_oom
    mkdir /sys/fs/cgroup/memory/B/F
    cd /sys/fs/cgroup/memory/B/F
    echo 1 >memory.use_priority_oom
  5. 運行以下命令分別設置C、D、E、F子節點的memcg OOM優先級值為5、6、7、8。

    cd /sys/fs/cgroup/memory/A/C
    echo 5 > memory.priority
    cd /sys/fs/cgroup/memory/A/D
    echo 6 > memory.priority
    cd /sys/fs/cgroup/memory/B/E
    echo 7 > memory.priority
    cd /sys/fs/cgroup/memory/B/F
    echo 8 > memory.priority

當在root中進行OOM操作時,它首先迭代查找它的兩個子節點A和B,由于B的優先級值低于A,所以會選擇B節點作為下一個迭代cgroup繼續進行迭代,最終會在子節點E上進行OOM操作,因為它的優先級比其他的兄弟節點低。