시스템에서 사용 가능한 공유 메모리의 크기를 어떻게 계산할 수 있습니까?

시스템에서 사용 가능한 공유 메모리의 크기를 어떻게 계산할 수 있습니까?

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

RHEL 6 설치를 완료한 후 shmall커널 매개변수의 기본값은 4294967296입니다. 즉, 시스템 전체에서 사용할 수 있는 공유 메모리 페이지의 총량은 4294967296이고 페이지 크기는 4096B입니다. 공식에서 공유 메모리의 크기는

4294967296*4096/1024/1024/1024/1024 = 16 TB

... 이는 운영 체제의 RAM(8GB) 크기보다 훨씬 큽니다. OS는 할당할 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.

관련 정보