시스템에서 사용 가능한 공유 메모리 크기를 계산하는 방법

시스템에서 사용 가능한 공유 메모리 크기를 계산하는 방법

~에 따르면RHEL 문서, 시스템에서 사용 가능한 공유 메모리의 총량은 과 같습니다 shmall*PAGE_SIZE.

RHEL 6 설치를 완료한 후 커널 매개변수의 기본값은 shmall4294967296입니다. 이는 시스템 전체에서 사용 가능한 총 공유 메모리 페이지 수가 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.

관련 정보