
다음 리소스가 포함된 사이드카 컨테이너가 있습니다.
resources:
limits:
memory: 512Mi
requests:
memory: 64Mi
그러나 실행하면 top
다음과 같은 내용이 표시됩니다.
- 특사 및 파일럿 에이전트는 각각 ~ 363MB 및 61MB를 사용하는 것 같습니다.
- 상단에 사용된 메모리는 54.6MB입니다.
- 실행하면
free -m
다음이 제공됩니다. 상관관계가 없어 보이는 답변
$ free -m
total used free shared buff/cache available
Mem: 385307 47140 315018 292 23148 336021
Swap: 0 0 0
여기서 정확히 무슨 일이 일어나고 있으며 해당 프로세스가 얼마나 많은 메모리를 소비하고 있습니까?
답변1
해당 무료 및 최고 출력은 총 메모리가 약 385,000MiB인 호스트 중 약 50,000MiB가 사용된 것으로 표시됩니다.
컨테이너는 커널을 공유하므로 호스트 측정항목은 일반적으로 노드 전체 숫자를 표시합니다. 네임스페이스에는 프로세스와 파일만 표시되지만. 이는 운영 체제가 애플리케이션을 지원하기 위해서만 존재하는 전용 VM 또는 물리적 호스트와 다릅니다.
컨테이너 수당 cgroups 번호를 쿼리해야 합니다. Stack Overflow에서 이를 수행하는 몇 가지 방법을 확인하세요.Kubernetes Pod CPU 및 메모리 확인. 그 중 다수에는 메트릭 서버가 필요합니다.
프로세스의 상주 메모리를 추가하고 이것이 시스템의 정확한 메모리 사용량이 될 것으로 예상하는 것을 주의하십시오. 여기에는 공유 메모리나 캐시가 포함되지 않습니다. 그리고 커널은 메모리에 대해 이상한 회계 트릭을 수행합니다. 유효숫자 3자리가 정답입니다. 비록 소수의 프로세스가 주로 개인 메모리를 사용하는 간단한 경우에는 좋은 추정치입니다.