Table of Contents | ||
---|---|---|
|
개요
...
본 문서에서는 Unix / Linux시스템에서 프로세스가 요청하는 메모리에 대해 어떻게 관리되는지 개략적인 이해를 위해 만들어 졌다.
...
Note |
---|
이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다. 이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다. Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다. |
Solaris 시스템의 관리 기법
...
솔라리스 운영체제의 메모리 관리에 대해 설명한다.
메모리 할당
...
솔라리스는 reserved라는 형태로 메모리를 할당한다. reserved영역은 swap영역에 존재한다.
...
실제 코드상으로 alloc을 하여도 메모리가 즉시 증가하지 않는다. 이후 실제 접근 시점에 메모리 사용량이 증가하는 것을 확인할 수 있다.
메모리 부족
...
솔라리스는 기본적으로 여유 있는 메모리는 파일캐쉬로 사용한다.
...
이와 같은 동작을 swap(swapping)이 발생한다고 지칭한다. (vmstat상에서는 fr은 메모리의 freePage된 개수를 의미하는데 free되었다는 말은 해당 메모리상의 페이지가 변경된 정보가 있다면 디스크로 갱신되게 됨으로 이와 같은 swapping이 발생하는 상태에서는 디스크I/O가 빈번하게 발생함으로 시스템 전체의 성능이 저하되는 현상을 보인다.)
pmap
...
솔라리스는 다음과 같이 프로세스의 실 사용 부분에 대해 상세하게 조회할 수 있는 유틸을 제공하고 있다.
Code Block | ||||
---|---|---|---|---|
| ||||
-bash-4.0$ pmap -F 22748 0000000100D22000 8560K rwx-- /home1/hjkim/altibase/5.1.5.72/bin/altibase 000000010157E000 488320K rwx-- [ heap ] FFFFFFFF72EFE000 8K rw--R [ stack tid=74 ] FFFFFFFF730FC000 16K rw--R [ anon ] FFFFFFFF732FC000 16K rw--R [ anon ] FFFFFFFF73C00000 10240K rw-s- dev:118,46 ino:45717892 |
맨 위는 프로세스 메모리가 될 것이고 heap영역이 메모리DB등이 위치하는 영역이 된다. anon의 의미는 MMAP_PRIVATE 맵핑을 가진 페이지에 대해 초기 접근 시 영역을 의미한다. ino등이 있는 것은 mmap으로 올라온 리두 로그 버퍼 영역이라고 보면 된다.
AIX 시스템의 메모리 관리 정책
...
AIX 운영체제의 메모리 관리에 대해 설명한다.
메모리의 분류
...
AIX의 메모리 사용에 대해 이해를 위해 먼저 메모리의 분류에 대한 정의를 설명한다.
...
붉은 글씨 바깥쪽의 pin의 합계가 붉은 박스 내의 pin의 용량과 같고 inuse 역시 동일하다. 여기서 알아 둘 것은 동일한 inuse로 사용 중이어도 일부분은 파일캐쉬로 사용 중이라는 사실을 확인할 수 있다는 점이다.
메모리의 부족
...
AIX는 기본적으로 여유 메모리를 모두 파일캐쉬로 사용하려고 노력한다.
...
관련 항목 | 설명 |
---|---|
MAXPERM | 물리적 메모리가 파일캐쉬로 사용되는 점유율의 최대치 (soft limit) |
MINPERM | 물리적 메모리가 파일캐쉬로 사용되는 점유율의 최소치 |
NUMPERM | 실제 파일캐쉬로 사용되는 영역의 점유율 (vmtune, vmo등으로 확인) |
MAXCLIENT | NFS, JFS2등의 파일캐쉬로 사용되는 점유율의 최대치 |
stric_maxperm | 1로 설정할 경우 MAXPERM을 유지하게 함. |
lru_file_repage | 0으로 설정 시 메모리 부족 시에 발생하는 steal에 대해 JFS2등의 파일캐쉬에서만 발생하도록 강제로 지정. |
svmon
...
AIX에서는 svmon을 통해 프로세스의 실제 메모리 사용량을 자세히 확인할 수 있다.
...
ps결과와 svmon의 결과에서 분석상의 문제는 svmon의 inuse부분의 합계가 실제 ps결과의 SIZE와 일치해야 하지만 page-out된 경우에는 실제로 ps쪽이 더 크게 표시된다.
HP 시스템의 메모리 관리 정책
...
HP 운영체제의 메모리 관리에 대해 설명한다.
메모리의 할당
...
HP의 메모리 할당 정책은 arena라고 부르는 부분과 관련이 깊다.
...
(expansion의 단위가 너무 클 경우 급격하게 메모리가 증가하는 현상이 발생할 수 있음으로 이 환경 변수를 설정할 때에는 많은 테스트를 필요로 한다. 기본값은 8:32 이다.)
메모리의 부족
...
Swapping정책은 여타 운영체제와 다르지 않아 별도의 설명은 생략한다.
메모리의 사용량 확인
...
공통적으로 Glance를 통해 확인하는 방법이 가능하다
...
커널 항목 | 설명 |
---|---|
dbc_max_pct | 파일캐쉬로 사용할 메모리의 최대 임계치 |
dbc_min_pct | 파일캐쉬로 사용할 메모리의 최소 임계치 |
Linux 시스템의 메모리 관리 정책
...
Linux 운영체제의 메모리 관리에 대해 설명한다.
Linux 메모리 관리
...
리눅스는 파일캐쉬 부분에 대해서는 AIX와 유사한 메모리 사용 정책을 갖는다. 즉, 여유 메모리는 모두 파일캐쉬로 사용하려고 시도한다. 단, 커널 2.6부터는 이 부분에 대한 제한을 두게 되는데 다음으로 파일캐쉬의 사용량을 제한 시킬 수 있다.
...
- 멀티쓰레드 응용 프로그램 환경에서 쓰레드 간 메모리 경합으로 인한 성능 이슈를 개선하기 위해 Red Hat Enterprise Linux 6에서 추가된 기능이다.
- 기본값은 CPU 코어 수 * MALLOC_ARENA_TEST 이다.
- MALLOC_ARENA_TEST 환경변수 기본값
- 32-bit 의 경우 2
- 64-bit 의 경우 8
- MALLOC_ARENA_MAX 환경변수는 glibc2.10 이상에서 올바르게 동작한다.
Linux 메모리 확인
...
Top 또는 pmap 명령으로 프로세스의 메모리 사용량을 확인할 수 있다.
왜 vsz은 줄지 않는가?
...
일반적으로 운영체제는 프로세스가 사용한 메모리 영역을 프로세스가 종료될 때에만 free영역으로 반납한다.
...