レイテンシーに敏感なタスクとリソースを消費するタスクをLinuxオペレーティングシステムに一緒に展開すると、リソースを消費するタスクは即座に大量のメモリを要求します。 これにより、オペレーティングシステムの空きメモリがグローバル最小ウォーターマーク (global wmark_min) に達し、レイテンシに敏感なタスクでパフォーマンスのジッターが発生します。 memcgグローバル最小透かし評価機能は、カーネルバージョン4.19.91-18.al7
以降のAlibaba Cloud Linux 2およびカーネルバージョン5.10.134-12.al8
以降のAlibaba Cloud Linux 3でサポートされています。 さまざまなレベルのメモリ使用量のしきい値 (ウォーターマーク) を指定して、レイテンシに敏感なタスクやリソースを消費するタスクのメモリ要件を満たし、不要なメモリの再利用がシステムに影響しないようにすることができます。
インターフェイス説明
memcgグローバル最小透かしレーティング機能は、memory.wma rk_min_adj
インターフェイスに実装されています。 このインターフェイスの値は、グローバル最小透かしに対する調整の割合を示します。 有効値: -25 ~ 50。
インターフェイスが作成されると、インターフェイスは親グループから値0を継承します。 したがって、デフォルト値は0です。
負の値は、
[0, WMARK_MIN]
範囲にわたる調整のパーセンテージであり、WMARK_MIN
は、global WMARK_MIN
の値を表す。 例:memory.wmark_min_adj=-25, memcg WMARK_MIN is "WMARK_MIN + (WMARK_MIN - 0) * (-25%)"
説明負の値は、グローバル最小透かしの減少を示す。 これにより、待ち時間に敏感なタスクのメッククオリティオブサービス (QoS) を向上させることができる。
正の値は、
[WMARK_MIN, WMARK_LOW]
範囲にわたる調整のパーセンテージであり、WMARK_MINおよびWMARK_LOW
は、global WMARK_MIN
およびglobal WMARK_LOW
の値を表す。 例:memory.wmark_min_adj=50, memcg WMARK_MIN is "WMARK_MIN + (WMARK_LOW - WMARK_MIN) * 50%"
説明正の値は、
global wmark_min
の増加を示す。 これにより、リソース消費タスクのmemcg QoSが低下する可能性があります。オフセットグローバル最小ウォーターマーク (
global wmark_min
) がトリガーされると、スロットリングが実行されます。 スロットリング時間は、過剰なメモリ使用量に線形に関連する。 スロットリング時間の有効値: 1 ~ 1000 単位:マイクロ秒。説明インタフェースファイルはmemcgルートディレクトリに格納されていません。
注意事項
マルチレベルmemcgには、memory.wma rk_min_adj
が含まれます。これは、memory.wma rk_min_adj
の最終的な有効値です。 すべてのレベルにおけるmemory.wma rk_min_adjの値は、最大値を得るためにトラバースされる。 デフォルト値が0の中間ノードは除外されます。 次の階層は、マルチレベルmemcgの例を示しています。
root
/ \
A D
/ \
B C
/ \
E F
次の表は、各レベルのmemory.wma rk_min_adjの値と最終的な有効値との間のマッピングを示しています。
レベル | 各レベルの値 | 最終実効値 |
A | -10 | -10 |
B | -25 | -10 |
C | 0 | 0 |
D | 50 | 50 |
E | -25 | -10 |
F | 50 | 50 |
cat /sys/fs/cgroup/memory/<Memcg path>/memcy.wma rk_min_adj
コマンドの出力に表示される値が最終的な有効値です。 コマンドでは、<Memcg path>
はmemcgのルートパスを示します。グローバル最小透かし評価機能と高いグローバル最小透かしを併用することを推奨します。 たとえば、
global wmark_min
を2 GB以上に設定できます。 グローバル最小透かしは、/proc/sys/vm/min_free_kbytes
パラメーターを使用して指定できます。
設定例
memcg QoSへの不適切な変更は、ネットワークの輻輳、転送待ち時間の増加、パケット損失などのネットワークパフォーマンスの問題を引き起こす可能性があります。 これは、ビジネスの品質と可用性に影響します。 作業は慎重に行ってください。
rootユーザーとしてのみ次のコマンドを実行します。
例1: レイテンシに敏感なタスクのmemcgに対するグローバル最小透かし評価の設定
テストファイルを作成します。
mkdir /sys/fs/cgroup/memory/test-lc
グローバル最小透かしに対する調整の割合を-25に設定します。
echo -25 > /sys/fs/cgroup/memory/test-lc/memory.wmark_min_adj
例2: リソース消費タスクのmemcgに対するグローバル最小透かし評価の設定
テストファイルを作成します。
mkdir /sys/fs/cgroup/memory/test-be
グローバル最小透かしに対する調整の割合を25に設定します。
echo 25 > /sys/fs/cgroup/memory/test-be/memory.wmark_min_adj