このトピックでは、次の問題の原因と解決方法について説明します。freeコマンド出力は、Alibaba Cloud Linux 3ホストで実行されているコンテナのメモリ使用量がホストのメモリ使用量よりも多いことを示しています。
問題の説明
Alibaba Cloud Linux 3を実行しているホストにデプロイされているコンテナーのメモリ使用率は、ホストのメモリ使用率よりも高くなっています。
原因
メモリ使用量は、次の式を使用して計算されます。mem_used = kb_main_total - kb_main_free - kb_main_cached - kb_main_buffers。 結果として、コンテナの計算されたメモリ使用量は不正確である。
共有メモリは、匿名ページとページキャッシュのプロパティを持つメモリ領域であり、スワップ領域が構成されていない場合は空きメモリとして再利用できません。 上記の式のkb_main_freeパラメーターの値に含まれる空きメモリではなく、共有メモリ (shmem) を使用中のメモリと見なす必要があります。 使用中のメモリの正確な量 (mem_used) を取得するには、数式のkb_main_freeパラメーターの値から共有メモリを除外します。
解決策
ホストで次のコマンドを実行して、procps-ngをバージョン3.3.15-14.0.3.al8またはそれ以降に更新します。
sudo yum update procps-ng説明
procps-ngを更新して、メモリ使用量の計算に使用される新しい数式を有効にし、上記の問題を解決します。 procpsについては、「procps-ng>procps」をご参照ください。