すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Linux:Memcgバックエンド非同期再利用

最終更新日:Oct 23, 2024

システムによって割り当てられたメモリの使用量が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インターフェイスに基づいて計算されます。

インターフェイス説明

インターフェイス

説明

memory.wma rk_ratio

memcgバックエンド非同期再利用機能と、非同期メモリ再利用をトリガーするmemcgメモリ透かしを有効にするかどうかを指定します。

単位: memcg制限のパーセント。

有効値: 0~100。

  • デフォルト値は0で、memcgバックエンド非同期再利用機能が無効になっていることを示します。

  • 値が0でない場合、memcgバックエンド非同期再利用機能が有効になり、透かしが設定されます。

memory.wma rk_high

memcgメモリ使用量がこのインターフェイスの値を超えると、バックエンドの非同期再利用がトリガーされます。

読み取り専用インターフェイス。

  • このインターフェイスの値は、次の式を使用して計算されます。memory.wma rk_high =memory.limit_in_bytes × memory.wma rk_ratio/100

  • memcgバックエンド非同期再利用機能が無効になっている場合、memory.wma rk_highインターフェイスのデフォルト値は最大値になります。 これにより、バックエンド非同期再利用機能がトリガーされなくなります。

  • このインタフェースファイルはmemcgルートディレクトリには格納されません。

memory.wma rk_low

memcgメモリ使用量がこのインターフェイスの値より小さい場合、バックエンド非同期リクラメーションは終了します。

読み取り専用インターフェイス。

  • このインターフェイスの値は、次の式を使用して計算されます。memory.wma rk_low =memory.wma rk_high - memory.limit_in_bytes × memory.wma rk_scale_factor/10000

  • このインタフェースファイルはmemcgルートディレクトリには格納されません。

memory.wma rk_scale_ファクター

memory.wma rk_high値とmemory.wma rk_low値の差を制御します。

単位: memcgメモリ上限の0.01パーセント (memcg limit) 。

有効な値: 1 ~ 1000

  • このインターフェイスは、インターフェイスの作成時に親グループの値を継承します。 継承された値は50で、memcgメモリの上限 (memcg limit) の0.50% を示します。 これもデフォルト値です。

  • このインタフェースファイルはmemcgルートディレクトリには格納されません。

設定例

  1. テストファイルを作成します。

    sudo mkdir /sys/fs/cgroup/memory/test/
  2. memory.limit_in_bytesインターフェイスの値を指定します。

    この例では、値は1 GBに設定されています。

    sudo sh -c 'echo 1G > /sys/fs/cgroup/memory/test/memory.limit_in_bytes'
  3. memory.wma rk_ratioインターフェイスの値を指定します。

    この例では、値は95% に設定されています。 非同期再利用機能のmemcgのメモリ透かしは、memcgメモリの上限 (memcg limit) の95% です。

    sudo sh -c 'echo 95 > /sys/fs/cgroup/memory/test/memory.wmark_ratio'
  4. 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