메모리가 무제한/무제한인 경우 cgroup의limit_in_bytes 값은 무엇입니까?

메모리가 무제한/무제한인 경우 cgroup의limit_in_bytes 값은 무엇입니까?

무한 도커 컨테이너의 값을 인쇄하면 9223372036854771712 값을 얻습니다. 이는 0x7FFFFFFFFFFFF000입니다(이 값은 XUbuntu 호스트와 동일합니다). 무제한 메모리 리소스를 나타내는 Docker 또는 Linux의 기본값임을 나타내는 참조를 찾을 수 없습니다.

이 가치는 어디에서 오는가? 컨테이너 가상화와 Linux distro/bitness 사이에 차이가 있나요?

답변1

이 값은 기본적으로 메모리 관리 계층의 cgroup 설정에서 가져옵니다.설정PAGE_COUNTER_MAX,지금 바로LONG_MAX / PAGE_SIZE64비트 플랫폼에서PAGE_SIZE읽을 때 다시 곱하기.

이는 확인합니다이르카초~의설명하다: 값은 최대 64비트 부호 있는 정수이며 가장 가까운 페이지로 반올림됩니다(마지막 비트 제거).

답변2

이는 가장 큰 양수 부호 64비트 정수(2 63 -1)이며 x86 시스템에서 가장 일반적인 페이지 크기인 4096(2 12 ) 의 배수로 내림됩니다 . 부호 있는 것과 부호 없는 것 사이에 발생할 수 있는 혼동을 피하면서 더 높은 값을 얻는 것은 어려운 것으로 보이므로 적어도 무한대에 대한 합리적인 근사처럼 보입니다.

즉, 잘 모르겠습니다. 단지 추측일 뿐입니다.

관련 정보