LXC 컨테이너 내부의 "숨겨진" 메모리 사용량이 매우 높습니다.

LXC 컨테이너 내부의 "숨겨진" 메모리 사용량이 매우 높습니다.

우리는 LXC를 사용하여 일부 IT 서비스를 실행하는 Proxmox VE(커널 5.3) 클러스터를 보유하고 있으며 그 중 하나는 전체 인트라넷의 게이트웨이 역할을 합니다. 설정에는 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를 설치합니다.

관련 정보