~에 따르면RHEL 문서, 시스템에서 사용 가능한 공유 메모리의 총량은 과 같습니다 shmall*PAGE_SIZE
.
RHEL 6 설치를 완료한 후 커널 매개변수의 기본값은 shmall
4294967296입니다. 이는 시스템 전체에서 사용 가능한 총 공유 메모리 페이지 수가 4294967296이고 페이지 크기가 4096B임을 의미합니다. 따라서 공식에 따르면 공유 메모리의 크기는 다음과 같습니다.
4294967296*4096/1024/1024/1024/1024 = 16 TB
...운영 체제의 RAM(8GB) 크기보다 훨씬 큽니다. 운영 체제는 할당할 16TB의 공유 메모리를 어떻게 찾나요?
그렇다면 그 크기는 /dev/shm
공유 메모리의 크기와 같나요? 그렇지 않다면 공유 메모리의 실제 크기를 어떻게 알 수 있습니까?
답변1
당신의 계산은 정확합니다. shmall은 사용 가능한 가상 메모리보다 높게 설정할 수 있습니다. 이들 모두를 사용하려고 하면 shmall이 초과되었기 때문에 실패하는 것이 아니라 다른 이유로 실패할 것입니다.
그런데 이러한 IPC 제한을 찾는 몇 가지 명령도 있습니다.
ipcs -l
lsipc # util-linux>=2.27
Linux의 가상 메모리도 기본적으로 무제한이며 RAM+스왑보다 큽니다. 바라보다
https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work
OOM 킬러는 어떤 프로세스를 먼저 종료할지 어떻게 결정합니까?
반면에 당신은 할 수 있습니다한계각 프로세스에서 사용하는 가상 메모리는 ulimt -v
커널에 영향을 주지 않습니다 /proc/sys/kernel/shmall
.