システムによって割り当てられたメモリの使用量がmemcgに指定された上限に達すると、システムはmemcgレベルの直接メモリ再利用をトリガーします。 直接メモリ再利用は、メモリ割り当てのコンテキストで発生する同期再利用であり、現在のプロセスのパフォーマンスに影響を与えます。 この問題を解決するために、Alibaba Cloud Linuxはmemcgsのバックエンド非同期再利用機能を提供しています。 この機能は、カーネルバージョン4.19.81-17.al7
以降のAlibaba Cloud Linux 2とカーネルバージョン5.10.134-12.al8
以降のAlibaba Cloud Linux 3でサポートされています。 この機能は、cgroupのメモリ使用量を動的かつ効率的に管理し、リソースの枯渇を防ぎます。
既存のmemcgにおけるメモリ割り当ては、親cgroupのバックエンド非同期再利用を再帰的にトリガすることができる。
バックエンド非同期再利用がトリガーされると、機能がトリガーされたmemcgから開始され、cgroup階層の上から下へのmemcgで継続的に実行されます。
memory.high
インターフェイスがmemory.limit_in_bytes
インターフェイスの値より小さい値に指定されている場合、memory.wma rk_high
およびmemory.wma rk_low
インターフェイスの値は、memory.limit_in_bytes
インターフェイスではなく、memory.high
インターフェイスに基づいて計算されます。
インターフェイス説明
インターフェイス | 説明 |
| memcgバックエンド非同期再利用機能と、非同期メモリ再利用をトリガーするmemcgメモリ透かしを有効にするかどうかを指定します。 単位: 有効値: 0~100。
|
| memcgメモリ使用量がこのインターフェイスの値を超えると、バックエンドの非同期再利用がトリガーされます。 読み取り専用インターフェイス。
|
| memcgメモリ使用量がこのインターフェイスの値より小さい場合、バックエンド非同期リクラメーションは終了します。 読み取り専用インターフェイス。
|
|
単位: memcgメモリ上限の0.01パーセント ( 有効な値: 1 ~ 1000
|
設定例
テストファイルを作成します。
sudo mkdir /sys/fs/cgroup/memory/test/
memory.limit_in_bytes
インターフェイスの値を指定します。この例では、値は1 GBに設定されています。
sudo sh -c 'echo 1G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes'
memory.wma rk_ratio
インターフェイスの値を指定します。この例では、値は95% に設定されています。 非同期再利用機能の
memcg
のメモリ透かしは、memcgメモリの上限 (memcg limit
) の95% です。sudo sh -c 'echo 95 > /sys/fs/cgroup/memory/test/memory.wmark_ratio'
memcgのインターフェイスの値を表示します。
memory.wma rk_scale_factor
インターフェイスの値を表示します。cat /sys/fs/cgroup/memory/test/memory.wmark_scale_factor
デフォルト値はmemcgメモリ制限 (
memcg limit
) の0.50% です。 サンプル戻り値: 50。memory.wma rk_high
インターフェイスの値を表示します。cat /sys/fs/cgroup/memory/test/memory.wmark_high
memory.wma rk_low
インターフェイスの値を表示します。cat /sys/fs/cgroup/memory/test/memory.wmark_low