1 / 10

UniONE I&C 시스템 기술지원 팀

Solaris Virtual Memory. UniONE I&C 시스템 기술지원 팀. Solaris VM. 가상 메모리 (virtual memory) solaris 는 가상메모리 (virtual memory) 시스템을 사용한다 . 가상메모리 시스템이란 물리적 메모리 (physical memory) 와 하드디스크 (swap device) 를 결합하여 하나의 큰 메모리처럼 사용하는 것을 말한다 . 즉 , 물리적 메모리가 100MB 이고 swap device 가 100MB 이면 가상메모리의

lefty
Télécharger la présentation

UniONE I&C 시스템 기술지원 팀

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Solaris Virtual Memory UniONE I&C 시스템 기술지원 팀

  2. Solaris VM • 가상 메모리(virtual memory) solaris는 가상메모리(virtual memory) 시스템을 사용한다. 가상메모리 시스템이란 물리적 메모리(physical memory)와 하드디스크 (swap device)를 결합하여 하나의 큰 메모리처럼 사용하는 것을 말한다. 즉, 물리적 메모리가 100MB이고 swap device가 100MB이면 가상메모리의 양은 약 180MB정도가 된다. solaris는 이러한 가상메모리를 관리하기 위하여 메모리를 페이지(8K)단위로 나누어 관리한다. 이러한 페이지들을 모아서 세그먼트로 구성하여 사용한다. 프로세스가 동작하기 위해서는 그 프로세스가 필요한 메모리가 있다. 그러나 그 메모리가 물리적 메모리에 모두 적재되어야 실행되는 것은 아니다. 프로세스가 실제 엑세스하는 메모리만 물리적 메모리에 적재되어있어도 프로세스는 실행된다.

  3. Solaris VM 가상 메모리(virtual memory) 그런데 여유 있는 물리적 메모리가 없어서 프로세스에게 필요한 메모리를 줄 수 없을 때 커널은 현재 사용하고 있는 물리적 메모리 중에 최근에 사용되지 않은 메모리를 선택하여(필요하면 선택된 메모리를 swap partition에 저장하고) 그 메모리를 프로세스에게 준다. solaris에서는 가상메모리를 swap로 명칭 한다.(swap partition과 다름) 이 swap(VM)은 운영체제가 사용할 수 있는 메모리이다. vmstat의 4번째 필드 swap은 사용 가능한 가상 메모리의 크기를 KB단위로 나타내 고 5번째 필드 free는 사용 가능한 물리적 메모리(physical memory)를 KB단위로 나타낸다. 가상 메모리에 대한 자세한 사항은 swap –s 명령어로 알 수 있다.

  4. Solaris VM 가상 메모리(virtual memory) [admin04:/]#swap -s total: 70008k bytes allocated + 28688k reserved = 98696k used, 2810672k available swap공간에서 28688k가 사용되고, 2810672k가 사용 가능하다. 사용된 98696k 중에서 실제 할당 받아서 사용한 것은 70008k이고 2868k는 예약된 메모리이다. 할당 받은 것과 예약한 것의 차이는 다음과 같다. 만일 프로세스가 데이터를 관리하기 위하여 10MB의 메모리가 필요하여 10MB의 메모리를 요청했다면 10MB의 메모리를 그 프로세스가 사용할 수 있도록 예약해 둔다. 그리고 그 프로세스가 메모리를 실제 엑세스할 때 그 메모리가 할당된다. 예를 들어 10MB의 메모리를 요청하여 1MB만 엑세스 하였다면, 1MB는 allocated 된 영역에 더해지고, 9MB는 reserved된 영역에 더해진다. app가 동작할 때, 필요한 메모리는 swap(VM)에서 가져온다. 물리적 메모리가 많든 적든 관계없이 swap 공간이 충분하면 프로그램이 실행되는데 전혀 문제가 없다.

  5. Solaris VM 가상 메모리(virtual memory) 만일 물리적 메모리가 절대적으로 부족하다면, 실행 속도가 늦어질 뿐, 메모리 부족으로 app가 중단되는 일은 없다. swap partition에 대한 정보는 다음과 같이 swap –l 명령어로 확인 할 수 있다. [admin04:/]#swap -l swapfile dev swaplo blocks free /dev/dsk/c0t0d0s1 32,1 16 1638992 933104 blocks는 전체 swap partition의 크기이며 512byte 단위의 블록이고, free는 그 중에 사용 가능한 swap partition의 크기이며 512byte 단위의 블록이다. 위의 swap –l 명령어의 결과에서 보면, 352944kb의 메모리가 swapout 되었음을 알 수 있다. (blocks - free) / 2 = swapout(kb) 현재 스왑아웃된 메모리의 양

  6. Solaris VM abstract swap : swap –s command non-pageable used reserved available allocated reserved free used non-pageable memory : user or kernel memory (normally kernel memory) used memory : pageable memory (process data)

  7. Solaris VM swap internal : Disk swap partition : swap –l command used reserved available free of swap –l command physical memory : vmstat command VM non-pageable used file system cache available free non-pageable pageable VM : reserved space for VM operation non-pageable memory : user or kernel memory (normally kernel memory) used memory : pageable memory (process data) file system cache : for improvement of disk I/O performance

  8. Solaris VM 가상 메모리(virtual memory) vmstat 명령어의 다음과 같은 필드와 함께 solaris 메모리 관리 방법을 설명한다. [admin04:/]#vmstat 5 5 kthr memory page disk faults cpu r b w swap free re mf pi po fr de sr s0 s1 s2 s4 in sy cs us sy id 0 0 0 2402072 359504 10 43 0 0 0 0 0 0 0 0 0 271 217 173 0 2 98 0 0 0 2402072 359504 0 0 0 0 0 0 0 0 0 0 0 252 59 150 0 0 100 0 0 0 2402008 359296 5 80 0 0 0 0 0 0 0 0 0 421 100 198 4 1 95 swap : amount of swap space currently available (Kbytes) free : size of the free list (Kbytes) re : page reclaims , mf : minor faults pi : kbytes paged in , po : kbytes paged out , fr : kbytes freed de : anticipated short-term memory shortfall (kbytes) sr : pages scanned by clock algorithm (scan rate)

  9. Solaris VM 가상 메모리(virtual memory) solaris에서 여유있는 물리적 메모리를 파일시스템 캐쉬로 사용한다. 디폴트로 프리 메모리가 전체 물리적 메모리 양의 1/64보다 크면, 파일시스템을 통한 디스크 I/O는 모두 메모리에 남겨두어 파일시스템 캐쉬로 사용한다. 프리 메모리가 물리적 메모리 양의 1/64보다 적으면, solaris는 프리 메모리를 1/64 로채우기 위하여 시스템에 있는 페이지를 조사하여, 최근에 사용되지 않은 페이지 를 찾아서 프리시킨다. 이때 운영체제가 조사한 페이지의 개수가 sr(scan rate)값이다. sr값이 높으면(초당 200~300이상), 그 순간에 메모리가 부족하다고 할 수 있다. 프리시킨 페이지수는 kbytes단위로 환산되어 fr(free)에 보여진다. 프리시킬 페이지의 내용이 변경되었을 경우, 그 페이지를 디스크에 저장한다. (변경된 페이지가 프로그램의 데이터일 경우, 스왑 파티션에 저장되고, 파일 시스템 캐쉬이면 해당 디스크 파티션에 저장된다.) 이때 디스크에 저장된 페이지를 kbytes로 환산하여 po(page out)에 보여준다.

  10. Solaris VM 가상 메모리(virtual memory) solaris에서 파일시스템은 페이지 서브 시스템을 통하여 이루어진다. 즉, 파일시스템의 모든 I/O는 페이지를 통해서 이루어진다. 페이지를 통하여 파일 을 읽을때 읽은 양은 kbytes로 환산되어 pi(page in)에 보여준다. 프로그램을 실행할 경우에 운영체제는 프로세스에 대한 어드레스 맵핑 테이블을 만들고, 프로세스를 실행한다. 프로세스가 실행되다가 필요한 페이지가 자신의 어드레스 맵핑 테이블에 연결되어있지 않으면, 페이지 폴트가 발생하는데 , 그 페이지가 메모리에 있으면(minor page fault라고 함),그 페이지를 자신의 어드레스 맵핑 테이블에 등록한다. mf(minor fault)는 minor page fault 횟수를 나타낸다. 프리메모리가 부족할 경우, paging이 발생하여 최근에 사용되지 않은 페이지를 찾아서 프리시켜 부족한 메모리를 보충하는데, 이렇게 프리되는 페이지의 내용은 훼손되지 않고 프리 메모리 영역에서 관리된다. 이렇게 프리된 페이지가 프로세스 의 요청에 따라 다시 사용 될 수 있다. 이렇게 다시 사용된 페이지 수를 re(reclaim)에 보여준다.

More Related