본문 바로가기
OS/Linux

리눅스 공유 메모리 설정하기

by 짜깡이 2021. 2. 26.

1)공유 메모리?

-리눅스 시스템은 공유메모리(Shared Memory)라는 것을 제공, 프로세스간 서로 메모리를 공유하는 방식

-각 프로세스는 자신만의 메로리를 필요로 함, 하지만 프로세스간에 자료를 공유할 때는 공유 메모리를 사용
 (공유 메모리는 커널에서 관리, 재부팅하면 사라짐)

 

2)공유 메모리 설정하기

공유 메모리 설정은 크게 2가지로 나눠짐
shmmax = 단일 프로세스가 공유 메모리를 호출하기 위한 최대 값
shmall = 모든 프로세스가 사용할 수 있는 총 공유 메모리 값

이 두가지를 설정하는 법은
echo (원하는 용량의 bytes) > /proc/sys/kernel/shmmax  
echo (원하는 용량의 kbytes/4) > /proc/sys/kernel/shmall

shmmax는 bytes 단위로 값을 지정할 수 있고
shmall은 pages 단위로 값을 지정하기때문에 입력값은 서로 다른 단위를 사용

ex)
shmall으로 16GB를 설정 하는 수식은 echo 4294967296 > /proc/sys/kernel/shmall이다
그 이유는 (4294967296(4GB에 해당하는 kbytes값) *4096(페이지단위)/1024)의 수식을 가지기 때문

페이지단위는 아래 명령어를 통해 알 수 있음

[root@Linux_test ~]#getconf PAGESIZE
4096

 

 

 

바이트 계산기 - 계산기

우리의 바이트 계산기를 사용하여 바이트를 킬로바이트, 메가바이트, 기가바이트, 테러바이트로 계산해보세요. 환율 변환기 [was-this-helpful] 바이트 계산기는 어떻게 사용하나요? 바이트 계산기

ko.calcuworld.com

바이트 계산기를 통해 4GB에 해당하는 MB, kB, Byte값 표시됨

 

리눅스 공유 메모리 설정 해보기
Q.단일 프로세스 할당 최대 공유 메모리 8GB 설정 
   총 공유 메모리 16GB로 설정

 

[root@Linux_test ~]#echo 8589934592 > /proc/sys/kernel/shmmax
[root@Linux_test ~]#echo 4194304 > /proc/sys/kernel/shmall
[root@Linux_test ~]#ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 8388608  (8GB)
max total shared memory (kbytes) = 16777216 (16GB)
min seg size (bytes) = 1

 

단일 프로세스 공유 메모리 8GB값을 설정하기 위해서
8GB에 해당하는 8589934592byte를 /proc/sys/kernel/shmmax에 입력했고

최대 공유 메모리 16GB 값을 설정하기 위해서
4GB에 해당하는 4194304KB를 /Proc/sys/kernel/shmall에 입력했다.

결과 출력을 위해 ipcs -l을 사용

댓글