LXCコンテナ内の「隠し」メモリ使用量は非常に高いです。

LXCコンテナ内の「隠し」メモリ使用量は非常に高いです。

私たちはLXCを使用していくつかのITサービスを実行するProxmox VE(カーネル5.3)クラスタを持っています。そのうちの1つはイントラネット全体のゲートウェイとして機能します。設定にはDebianイメージを使用し、転送とNATにはiptablesを使用します。私たちはしばしばこのコンテナでとんでもなく高いメモリ使用量を見ることができます。

htop合計メモリ使用量が報告されますが、リストされているプロセス(RES列)の合計は100MiB未満です。

トップ

ホストcgroupコントローラは、次の完全な使用を報告しますmemory.usage_in_bytes

root@proxmox:/sys/fs/cgroup/memory/lxc/100# cat memory.kmem.usage_in_bytes
47140864
root@proxmox:/sys/fs/cgroup/memory/lxc/100# cat memory.usage_in_bytes
1066528768

ホストに3を書き込むと、/proc/sys/vm/drop_cachesコンテナに顕著な影響はありません。

「追加」メモリはどこにありますか?この問題を解決するには?

答え1

同様の問題が発生しました。
私のLXDコンテナで実行されているすべてのcronjobは、次の新しい一時的なユーザースライスを作成します。

● session-c48037.scope - Session c48037 of user apache
   Loaded: loaded (/run/systemd/transient/session-c48037.scope; transient)
Transient: yes
   Active: active (abandoned) since Tue 2023-05-02 16:24:02 CEST; 13min ago
    Tasks: 0
   Memory: 352.0K
   CGroup: /user.slice/user-48.slice/session-c48037.scope

May 02 16:24:02 pos34 systemd[1]: Started Session c48037 of user apache.

まだ理解できないため、cronjobが完了した後にセッションはクリーンアップされません。で説明した
ように、時間の経過とともにキロバイトのメモリが増え、カーネル自体が非常に多くのメモリを消費します。したがって、これは「この問題をどのように解決しますか?」への答えではありませんが、「追加のメモリはどこにありますか?」への答えかもしれません。SUnreclaim/proc/meminfo

これは、RockyLinux 8.7 LXDゲストを搭載したUbuntu 20.04ホストシステムで観察されました。 Snap経由でLXDバージョン4.0.9をインストールします。

関連情報