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

Alibaba Cloud Linux:cgroup v1インターフェイスはmemcg QoS機能をサポートし、メモリ使用量を最適化します

最終更新日:Oct 23, 2024

メモリ制御グループ (memcg) サービス品質 (QoS) 機能は、Linuxオペレーティングシステムでメモリリソースを管理し、メモリ使用量を最適化するように設計されています。 memcg QoS機能を使用して、重要なサービスまたはアプリケーションの要件を満たすために特定の量のメモリをロックできます。 この機能を使用して、メモリ使用量の上限を指定し、メモリ消費タスクによるシステムの不安定性を防ぐこともできます。 Linuxカーネルのコミュニティバージョンでは、memcg QoS機能はcgroup v2インターフェイスでのみサポートされます。 カーネルバージョン4.19.91-18.al7から始まるAlibaba Cloud Linux 2およびAlibaba Cloud Linux 3では、memcg QoS機能もcgroup v1インターフェイスでサポートされています。

背景情報

デフォルトでは、Alibaba Cloud Linuxカーネルのcgroup v1インターフェイスでmemcg QoS機能が有効になっています。 memcg QoS機能の詳細については、「ドキュメント /管理者ガイド /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内のプロセスが指定された最小量のメモリを取得できることを保証し、サービスパフォーマンスの低下を防ぎます。 このインターフェイスは、パフォーマンス要件を満たすために最低限の常駐メモリを保証する必要があるサービスに適しています。

インターフェイスで次の読み取りおよび書き込み操作を実行できます。

  • インターフェイスからロックされたメモリのサイズを読み取ります。

  • ロックされたメモリのサイズをインターフェイスに書き込みます。

memory.low

特定のメモリ量を相対的にロックします。 このインターフェースによってロックされたメモリは、システムが他に回収すべきメモリを持たない場合、部分的に回収される。 このように、システムは、リソースが不十分であるとき、より合理的な方法でメモリ割り当てを調整することができる。 このインターフェイスは、重要でないビジネスアプリケーションやバックグラウンドタスクなど、基本的な保護を必要とするが絶対的な保護を必要としないサービスに適しています。

インターフェイスで次の読み取りおよび書き込み操作を実行できます。

  • インターフェイスからロックされたメモリのサイズを読み取ります。

  • ロックされたメモリのサイズをインターフェイスに書き込みます。

memory.high

メモリ使用量を制限します。 インターフェイスで次の読み取りおよび書き込み操作を実行できます。

  • インターフェイスからメモリ使用量の上限を読み取ります。

  • メモリ使用量の上限をインターフェイスに書き込みます。

Alibaba Cloud Linux 3では、メモリを割り当てるか、memcgマウントディレクトリのメモリ使用量の上限 (/sys/fs/cgroup/memory/ など) を指定します。

説明

rootユーザーとしてのみ次のコマンドを実行します。

サンプルコマンド:

  1. 次のコマンドを実行して、test_memcgディレクトリを作成します。

    mkdir /sys/fs/cgroup/memory/test_memcg
  2. 特定のメモリ量を絶対にロックします。

    1. 次のコマンドを実行して、200 MBのメモリを完全にロックします。

      echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.min
    2. 次のコマンドを実行して、200 MBのメモリが完全にロックされているかどうかを確認します。

      cd /sys/fs/cgroup/memory/test_memcg
      cat memory.min
  3. 特定のメモリ量を相対的にロックします。

    1. 次のコマンドを実行して、200 MBのメモリを比較的ロックします。

      echo 209715200 > /sys/fs/cgroup/memory/test_memcg/memory.low
    2. 次のコマンドを実行して、200 MBのメモリが比較的ロックされているかどうかを確認します。

      cd /sys/fs/cgroup/memory/test_memcg
      cat memory.low
  4. メモリ使用量の上限を指定します。

    1. 次のコマンドを実行して、メモリ使用量の上限を1 GBに設定します。

      echo 1073741824 > /sys/fs/cgroup/memory/test_memcg/memory.high
    2. 次のコマンドを実行して、メモリ使用量の上限が1 GBに設定されているかどうかを確認します。

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