Solaris는 가상메모리 시스템을 사용한다.
가상메모리 시스템이란 물리적 메모리와 하드디스크를 결합하여 하나의 큰 메모리 처럼 사용하는 것을 말한다.
물리적 메모리 + 스왑 디바이스 - VM management overhead = swap (VM)
(물리적 메모리 + 스왑 디바이스) * about 90% = swap(VM)
솔라리스는 가상메모리를 관리하기 위해 메모리를 페이지 단위(8k)로 나누어 관리한다.
(페이지 size는 pagesize로 확인한다.)
이러한 페이지를 모아서 세그먼트로 구성하여 사용한다. 프로세스가 동작하기 위해서는 그 프로세스가 필요한 메모리가 있다. 그러나 그 메모리가 물리적 메모리에 모두 적재되어야 실행되는 것은 아니다. 프로세스가 실제 엑세스하는 메모리만 물리적 메모리에 적재되어 있이도 프로세스는 실행된다. 구론대 여유있는 물리적 메모리가 없어서 프로세스에게 필요한 메모리를 줄 수 없을 때 커널은 현재 사용하고 있는 물리적 메모리 중에 최근에 사용되지 않은 메모리를 선택하여 그 메모리를 프로세스에게 준다.
Solaris에서는 가상메모리를 swap으로 부른다.(swap partition과 구별) 이 swap(VM)은 운영체제가 사용할 수 있는 메모리다. vmstat 명령어의 4번째 필드 swap은 사용가능한 가상메모리의 크리를 KB 단위로 나타내고 5번째 필드 free는 사용 가능한 물리적 메모리를 KB 단위로 나타낸다.
가상메모리에 대한 자세한 내용은 swap -s 명령어로 알 수 있다.
# swap -s
총: 7033864k 바이트 할당 + 868672k 예약 = 7902536k 사용, 21814816k 사용 가능
할당 받은 것과 예약된 것의 차이는 다음과 같다.
만일 프로세스가 데이터를 관리하기 위해 10MB의 메모리가 필요하여 요청했다면 10MB의 메모리가 그 프로세스가 사용할 수 있도록 예약해 둔다. 그리고 그 포로세스가 메모리를 실재 엑세스 할때 그 메모리가 할당된다. 예를 들어 10MB메모리를 요청하여 1MB의 메모리만 엑세스했다면, 1MB는 할당된 영역에 더해지고, 9MB는 예약된 영역에 더해진다.
응용 프로그램이 동작할때 필요한 메모리는 swap(VM)에서 가져온다. 물리적 메모리가 많든 적든 관계없이 swap 공간이 충분하면 프로그램이 실행되는데에 전혀 문제가 없다. 만일 물리적 메모리가 절대적으로 부족하다면, 실행속도가 늦어질 뿐, 메모리 부족으로 응용 프로그램이 중단되는 일은 없다.
swap partition에 대한 정보는 다음과 같이 swap -l 명령어로 확인 할 수 있다.
# swap -l
swapfile dev swaplo 블록 사용 가능
/dev/dsk/c0t0d0s1 32,9 16 33560432 33560432
총 swap partition은 약 16GB
블록은 전체 swap partition의 크기이며 512byte 단위다. free는 그 중 사용가능한 swap partition의 크기이면 역시 512byte 단위의 블록이다.
추가예정
사용가능한 가상메모리는 다음과 같이 확인 할 수 있다.
# swap -s
총: 7062496k 바이트 할당 + 886584k 예약 = 7949080k 사용, 21768576k 사용 가능
# vmstat 1 3
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s1 s3 s9 sd in sy cs us sy id
0 0 0 22635688 8170192 1242 405 24166 0 0 0 0 2 54 -0 26 2151 9478 6393 7 9 83
0 0 0 21777592 7594664 14 59 98 0 0 0 0 0 0 0 0 910 16713 2362 8 4 87
0 0 0 21777464 7594672 13 35 16 0 0 0 0 0 0 0 0 790 5809 1648 2 2 95
# sar -r 1 3
SunOS newbluewin01 5.10 Generic_137111-01 sun4u 09/20/2012
15:22:49 freemem freeswap
15:22:50 949502 43555856
15:22:51 949500 43555856
15:22:52 950901 43555856
Average 949968 43555856
swap -s : 21768576k(약20G)
vmstat 1 3 : 21777464
sar -r 1 3 : 43555856(block) * 512(byte) /1024 = 21777928
사용가능한 물리적 메모리는 vmstat의 free(KB)와 sar -r 의 freemem(page)에서 확인할 수 있다.
vmstat 1 3 : 7594672 (약 7G)
sar -r 1 3 : 949968 * 8192 = 7599744
댓글 없음:
댓글 쓰기