메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

Linux KSM(Kernel Shared Memory) 분석

Linux 커널에서 메모리 중복 제거

M. Tim Jones, Consultant Engineer, Emulex Corp.
M. Tim Jones는 임베디드 펌웨어 아키텍트이자 Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming(현재 2판), AI Application Programming(현재 2판) 및 BSD Sockets Programming from a Multilanguage Perspective의 저자이다. 정지 위성을 위한 커널 개발에서 시작해 임베디드 시스템 아키텍처와 네트워크 프로토콜 개발에 이르기까지 다양한 분야에 대한 공학 지식을 가지고 있다. 콜로라도주 롱몬트 소재의 Emulex Corp.에서 컨설턴트 엔지니어로 활약하고 있다.

요약:  하이퍼바이저로서 Linux®는 다수의 혁신적인 항목을 포함하고 있으며 2.6.32 커널에서 더욱 흥미로운 변경사항 중 하나는 KSM(Kernel Shared Memory)입니다. KSM을 사용하면 하이퍼바이저가 동일한 메모리 페이지를 통합하여 동시 가상 시스템 수를 늘릴 수 있습니다. KSM 뒤에 감춰진 개념(예: 스토리지 중복 제거), KSM의 구현 및 KSM을 관리하는 방법에 대해 살펴봅니다.

원문 게재일:  2010 년 4 월 07 일 번역 게재일:   2010 년 5 월 11 일
난이도:  중급 영어로:  보기 PDF:  A4 and Letter (77KB | 10 pages)Get Adobe® Reader®
페이지뷰:  4227 회
의견:  


Tim과 연락하기

Tim은 developerWorks의 가장 유명한 다작 저자 중 한 명이다. developerWorks에서 Tim의 모든 기사를 찾아본다. Tim의 프로파일을 확인하고 Tim, 다른 저자 및 My developerWorks의 동료 독자와 접촉한다.

소프트웨어 엔지니어링은 진화하는 프로세스가 되는 경향이 있다. 문제점은 솔루션을 통해 해결되고 여기서 다시 새로운 문제점과 새로운 솔루션이 만들어질 수 있다. 이론적으로는 작성되는 새로운 문제점이 원래 솔루션의 정당성을 증명한다. 여기서 설명하는 기술은 서버 가상화에 의해 작성된 문제점에 대한 보조 솔루션 중 하나이다. 하지만 KSM에 대해 살펴보기 전에 원래 솔루션과 KSM이 여러 위치에서 어떻게 적용되는지 간단하게 알아본다.

서버 가상화

최대 서버 통합

엔터프라이즈 서버는 가상화를 사용하여 10개 이상의 서버를 통합할 수 있지만 하나의 IBM System z 서버는 하나의 논리적 파티션에 있는 수천 개의 Linux 게스트를 지원할 수 있다.

기술로서 가상화는 1960년대부터 생겨나서 IBM® System/360® 메인프레임에 의해 대중화되었다. 50년 후 가상화의 사용은 폭발적으로 증가하여 단일 서버를 여러 운영 체제 및 애플리케이션과 공유할 수 있게 되었다. 서버 가상화라는 이 특별한 용도는 데이터 센터를 완전히 바꾸고 있다. 그림 1에 표시된 대로 하나의 실제 시스템을 사용하여 일반적으로 10대 이상의 가상 시스템(VM)을 호스트할 수 있다. 이러한 가상화를 통해 인프라를 더욱 동적이고 전원 효율적이도록 만들어 비용의 효율을 높일 수 있다. 서버 가상화와 그 장점에 대한 자세한 정보는 참고자료를 참조한다.


그림 1. 가상화를 통한 서버 통합
실제 시스템이 단일 실제 서버로 통합되는 것을 보여 주는 가상화를 통한 서버 통합 다이어그램

일정 시기에 사용 중인 일반적인 서버의 10-15%에만 가상 서버를 하나의 실제 서버에 통합하는 것이 완벽하게 적용된다. 그렇다면 자원은 어떤가? 사용 가능한 주요 자원에는 CPU, 메모리 및 네트워킹 대역폭이 있다. CPU와 네트워킹은 일반적으로 사용률이 낮기 때문에 문제가 되는 것은 사용 가능한 메모리이다. 각 운영 체제에는 사용 가능한 메모리 자원의 고유 수요가 있다. 하지만 이러한 메모리 수요가 얼마나 고유한지에 대한 의문이 생긴다.


메모리 공유

동일한 운영 체제와 애플리케이션 세트 중 다수를 가상화하는 경우에는 많은 메모리 페이지가 동일하다는 것이 밝혀졌다. 운영 체제 및 애플리케이션 코드와 상수 데이터가 VM 사이에서 동일하다면 이것은 맞는 말이다. 또한 페이지가 고유한 경우에는 페이지를 통합할 수 있어 다른 애플리케이션에 사용할 수 있도록 여유 메모리를 만든다. 그림 2에서는 메모리 공유를 그림으로 설명하며 컨텐츠가 동일한 VM에서 페이지가 공유될 때 더 많은 여유 메모리를 사용할 수 있는 장점을 보여 준다.


그림 2. VM에서 메모리 공유
컨텐츠가 동일한 VM에서 페이지가 공유될 때 더 많은 여유 메모리를 사용할 수 있음을 보여 주는 VM에서의 메모리 공유 다이어그램

기능 이름 지정하기

여기에 설명된 기능은 매우 새로운 기능이기 때문에 이름이 약간씩 변경되고 있다. 이 Linux 커널 기능은 Kernel Shared Memory로도 불리고 Kernel Samepage Merging으로도 부른다는 것을 알 수 있다.

Linux에서의 메모리 공유는 가상화된 환경(KSM은 원래 KVM(Kernel-based Virtual Machine)과 함께 사용하도록 설계되었음)에서 장점이 있다는 것을 바로 알게 되며 이는 가상화되지 않은 환경에서도 유용하다. 실제로 KSM은 임베디드 Linux 시스템에서도 유용한 것으로 밝혀져 다양한 방식으로 접근할 수 있다. 이제 메모리 공유에 대한 Linux 접근 방식과 이를 사용하여 서버의 메모리 밀도를 늘려 추가 애플리케이션 또는 VM을 호스트하는 기능을 향상시킬 수 있는 방법에 대해 살펴본다.


다른 기술과의 비교

중복 제거라는 스토리지 기술에서의 최근 발전은 Linux 및 기타 하이퍼바이저에서의 메모리 공유에 대한 전조이다. 중복 제거는 파일과 같은 데이터의 큰 세그먼트나 블록을 기반으로 중복 데이터를 제거하여 저장된 데이터를 줄이는 기술이다. 공통 세그먼트는 기록 중 복사(CoW) 방식으로 병합되어 다른 용도를 위해 여유 공간을 만든다. 스토리지 중복 제거는 중복 데이터를 제거하여 스토리지의 용량을 최적화하기 때문에 발전하고 있는 중요한 기술이다. 이를 통해 결과적으로 필요한 용량이 적어지기 때문에 스토리지의 가격이 인하된다. 데이터 증가율을 고려했을 때 이 기능은 매우 의미가 있다.


KSM 조작

KSM은 주기적으로 페이지 검사를 수행하여 중복 페이지를 식별한 후 중복을 제거하여 다른 용도를 위해 여유 페이지를 만드는 커널의 디먼(ksmd라고 함)으로 존재한다. KSM은 사용자가 알기 쉬운 방식으로 이를 수행한다. 예를 들어, 중복 페이지는 병합되어 읽기 전용으로 표시되지만 페이지의 사용자 중 한 명이 어떤 이유로든 해당 페이지를 변경하면 해당 사용자는 CoW 방식으로 자체 사본을 수신한다. ./mm/ksm.c에서 커널 소스에 있는 KSM 커널 모듈의 전체 구현을 찾을 수 있다.

KSM은 상위 레벨 애플리케이션에 의존하여 병합 대상이 될 메모리 영역에 대한 지시사항을 제공한다. KSM은 단순히 시스템의 모든 익명 페이지를 검사할 수 있지만 이렇게 하면 페이지 병합 프로세스를 관리하는 데 필요한 공간을 고려했을 때 CPU와 메모리가 낭비된다. 따라서 애플리케이션은 중복 페이지를 포함할 수 있는 가상 영역을 등록할 수 있다.

KSM API(Application Programming Interface)는 madvise 시스템 호출(Listing 1 참조)과 MADV_MERGEABLE(정의된 영역이 병합 가능함을 나타냄)이라는 새 권고 매개변수를 통해 구현된다. 영역은 해당 영역에서 병합된 페이지를 즉시 병합 취소하는 MADV_UNMERGEABLE 매개변수를 통해 병합 가능한 상태에서 제거할 수 있다. madvise를 통해 페이지의 영역을 제거하면 병합 취소 프로세스 중에 메모리가 부족하여 잠재적으로 더 큰 문제(메모리 부족 상태)가 발생할 수 있기 때문에 EAGAIN 오류가 발생할 수 있다.


Listing 1. madvise 시스템 호출
	
#include <sys/mman.h>

int madvise( void *start, size_t length, int advice );

영역이 병합 가능으로 정의되면 KSM은 이 영역을 작업 메모리 목록에 추가한다. KSM은 활성화되면 동일한 페이지를 검색하여 쓰기 방지된 CoW 방식으로 한 페이지는 보존하고 다른 페이지는 다른 용도를 위해 제거한다.

KSM은 스토리지 중복 제거에 사용된 접근 방식과 다른 방식을 사용한다. 기존의 중복 제거에서는 오브젝트가 해시되고 해시 값이 유사성에 대한 초기 검사로 사용된다. 해시가 동일한 경우 다음 단계는 실제 오브젝트를 비교(이 경우에는 메모리 비교)하여 오브젝트가 동일한지 공식적으로 판별하는 것이다. KSM은 첫 번째 구현에서 이 접근 방식을 사용했지만 단순화하기 위해 더욱 직접적인 접근 방식이 개발되었다.

현재 KSM에서 페이지는 두 개의 레드-블랙 트리에 의해 관리되며 이 중 하나는 수명이 짧다. 불안정 트리라는 첫 번째 트리는 아직 안정적인 것으로 받아들여지지 않는 새로운 페이지를 저장하는 데 사용된다. 달리 말하면 병합 후보 페이지(일정 기간 동안 변경되지 않았음)는 불안정 트리에 저장된다. 불안정 트리에 있는 페이지는 쓰기 방지 설정이 되어 있지 않다. 안정 트리라는 두 번째 트리는 안정적인 것으로 판명되어 KSM에 의해 병합된 페이지를 저장하다. 페이지가 일시적인지 여부를 식별하기 위해 KSM은 단순한 32비트 체크섬을 사용한다. 페이지를 검사하면 체크섬이 계산되어 페이지와 함께 저장된다. 후속 검사에서는 새로 계산된 체크섬이 이전에 생성된 체크섬과 다를 경우 페이지가 변경되기 때문에 병합 후보로 적합하지 않다.

KSM 프로세스를 사용하여 단일 페이지를 처리하는 첫 번째 단계는 안정 트리에서 페이지를 찾을 수 있는지 확인하는 것이다. 트리 검색 프로세스는 각 페이지를 매우 큰 수(페이지의 컨텐츠 수)로 처리한다는 점에서 흥미롭다. memcmp(메모리 비교) 조작은 해당 페이지와 고려 중인 노드의 페이지에서 수행된다. memcmp에서 0을 리턴하면 페이지는 동일하며 일치를 찾을 수 있다. 그렇지 않으면 memcmp-1(후보 페이지가 현재 노드의 페이지보다 적음을 의미함) 또는 1(후보 페이지가 현재 노드의 페이지보다 많음을 의미함)을 리턴할 수 있다. 각각의 경우 조작을 수행하면 레드-블랙 트리를 검색한다(더 적은 경우에는 왼쪽으로, 더 많은 경우에는 오른쪽으로). 4KB의 페이지를 비교하는 것은 상당한 작업이기는 하나 대부분의 경우 memcmp는 차이를 찾으면 조기에 종료한다. 따라서 프로세스 자체는 빠르고 효율적이다. 이 프로세스에 대한 시각적인 설명은 그림 3을 참조한다.


그림 3. 트리에 있는 페이지 검색 프로세스
후보 페이지에 대한 일치를 보여 주는 레드-블랙 트리에 있는 페이지 검색 프로세스

후보 페이지가 안정 트리에 있는 경우 해당 페이지는 병합되고 후보 페이지가 비워진다. 이 코드는 ksm.c/stable_tree_search()(ksm.c/cmp_and_merge_page()에 의해 호출됨)에서 찾을 수 있다. 후보 페이지를 찾을 수 없는 경우 불안정 트리로 이동한다(ksm.c/unstable_tree_search() 참조).

불안정 트리 검색의 첫 번째 단계는 페이지에 대해 체크섬을 다시 계산하는 것이다. 원래 체크섬과 다른 것으로 판명되는 경우에는 체크섬이 변경되면 추적할 의미가 없기 때문에 해당 페이지는 추가 검색에서 제거된다. 체크섬이 변경되지 않은 경우 불안정 트리에서 후보 페이지를 검색한다. 불안정 트리 처리는 안정 트리와 약간 다르다. 먼저 불안정 트리 검색에서 페이지를 찾지 못한 경우 이 페이지를 위해 새 노드를 불안정 트리에 추가한다. 하지만 페이지가 불안정 트리에 있는 경우에는 페이지를 병합한 후 노드를 안정 트리로 마이그레이션한다.

ksm.c/ksm_do_scan()를 통해 수행된 검사가 완료되면 안정 트리는 보존되지만 불안전 트리는 제거되고 다음 검사 시 다시 빌드된다. 불안정 트리의 조직은 페이지에 대한 변경사항에 따라 변경될 수 있기 때문에(불안정 트리에 있는 페이지는 쓰기 방지 설정이 되어 있지 않음을 기억하라) 이 프로세스는 작업을 매우 단순하게 만든다. 안정 트리에 있는 모든 페이지는 쓰기 방지 설정이 되어 있기 때문에 페이지에 쓰려고 하면 페이지 결함이 생성되어 CoW 프로세스에서 작성자를 위해 페이지를 병합 취소할 수 있다(ksm.c/break_cow() 참조). 둘 이상의 페이지 사용자가 있어 페이지가 여전히 공유되고 있음을 나타내는 경우가 아니면 안정 트리에서 분리되어 있는 페이지는 그 뒤에 제거된다.

설명한 대로 KSM은 빠른 검색을 가능하도록 페이지를 관리하기 위해 레드-블랙 트리를 사용한다. Linux는 실제로 레드-블랙 트리를 재사용 가능한 데이터 구조로 포함하고 있으며 이러한 트리는 고유하게 사용될 수 있다. 레드-블랙 트리는 시간 순서로 태스크를 저장하기 위해 CFS(Completely Fair Scheduler)에서도 사용된다. ./lib/rbtree.c에서 커널에서의 레드-블랙 트리 구현을 찾을 수 있다.


KSM 구성 및 모니터링

KSM 관리 및 모니터링은 루트 /sys/kernel/mm/ksm에 있는 sysfs를 통해 발생한다. 이 sysfs 서브디렉토리에서 파일 콜렉션을 찾는다(일부는 제어를 위해 사용되고 나머지 부분은 모니터링을 위해 사용됨).

첫 번째 파일인 run은 KSM을 사용한 페이징 병합을 활성화하거나 비활성화하는 데 사용된다. 기본적으로 KSM은 비활성화(0)되지만 1을 파일에 작성하여 KSM 디먼을 사용할 수 있도록 하여 활성화할 수 있다(예: echo 1 > sys/kernel/mm/ksm/run). 실행 상태에서 0을 작성하여 디먼을 비활성화할 수 있다(현재 병합된 페이지 세트는 보존함). 또한 실행(1) 상태에서 2를 작성하여 KSM을 중지하고 병합된 페이지를 모두 병합 취소하도록 요청할 수 있다.

KSM이 실행되는 동안 세 가지 매개변수(sysfs에 있는 파일)를 사용하여 KSM을 제어할 수 있다. sleep_millisecs 파일은 다른 페이지 검사를 수행하기 전에 ksmd가 휴면 상태를 유지해야 하는 시간(밀리초)을 정의한다. max_kernel_pages 파일은 ksmd가 사용할 수 있는 최대 페이지 수를 정의한다(사용 가능 메모리가 25%인 것이 기본값이지만 0을 작성하여 무제한으로 지정할 수 있음). 마지막으로 pages_to_scan 파일은 지정된 검사에서 검사할 수 있는 페이지 수를 정의한다. 모든 사용자가 이러한 파일을 볼 수 있지만 해당 사용자는 이들 파일을 변경할 수 있는 루트 권한을 가지고 있어야 한다.

ksmd의 조작 및 효과를 나타내는 sysfs를 통해 내보낸 모니터 가능한 파일도 다섯 개가 있다(모두 읽기 전용임). full_scans 파일은 수행된 전체 영역 검사 수를 나타낸다. 나머지 네 개의 파일은 KSM의 페이지 레벨 통계를 나타낸다.

  • pages_shared: KSM이 사용 중인 스왑 불가능한 커널 페이지 수
  • pages_sharing: 메모리 절약 표시
  • pages_unshared: 병합을 위해 반복적으로 검사한 고유 페이지 수
  • pages_volatile: 지나치게 자주 변경되는 페이지 수

KSM 작성자는 pages_sharing 대 pages_shared의 비율이 높으면 페이지의 공유 효율이 높고 이 비율이 낮으면 효율이 낮음을 나타내도록 정의한다.


추가 주제

메모리 효율을 개선하기 위해 페이지 공유를 사용하는 것이 Linux밖에 없는 것은 아니지만 Linux는 운영 체제 기능으로 구현한다는 점에서 독특하다. VMware의 ESX 서버 하이퍼바이저는 TPS(Transparent Page Sharing)라는 명칭으로 이 기능을 제공하고 XEN은 이 기능을 메모리 CoW라고 부른다. 하지만 명칭이나 구현에 관계없이 이 기능은 메모리 사용률을 높여 운영 체제(KVM의 경우에는 하이퍼바이저)에서 메모리를 과도하게 커미트하여 더 많은 수의 애플리케이션 또는 VM을 지원할 수게 한다. 최신 2.6.32 Linux 커널에서 KSM(및 다수의 흥미로운 기타 기능)을 찾을 수 있다.


참고자료

교육

  • Red Hat의 KSM 작성자는 KSM에 대해 "Increasing memory density by using KSM"(PDF)이라는 훌륭한 논문을 저술했다. 이 논문에서는 KSM에 대해 소개하고 구현의 세부 사항에 대해 자세히 살펴본다.

  • 가상화는 절전 및 비용 절감을 위해 통합하는 방법뿐만 아니라 클라우드 컴퓨팅 아키텍처의 주요 요소로서도 급격하게 성장하고 있다. Growing green with virtualization: Virtualization as a backbone of green IT"(developerWorks, 2009년 8월)에서 가상화와 친환경 IT에서 가상화의 역할에 대해 살펴보자.

  • 이 기사에서는 Linux를 하이퍼바이저로 사용할 때의 장점에 대해 설명한다. "Linux 하이퍼바이저 분석"(developerWorks, 2009년 5월), "리눅스 커널 가상 기계 탐험"(developerWorks, 2007년 4월) 및 "가상 리눅스"(developerWorks, 2006년 12월)에서 이에 대한 내용과 기타 주제에 대해 자세히 살펴볼 수 있다. 마지막으로 "Linux 2.6 Completely Fair Scheduler 살펴보기"(developerWorks, 2009년 12월)에서 레드-블랙 트리를 사용하는 다른 커널 서브시스템에 대해 읽어보자.

  • 2.6.32 커널 릴리스 정보에서 메모리 중복 제거에 대해 자세히 살펴볼 수 있다. 이러한 릴리스 정보에서는 2.6.32까지 진행되는 동안 작성된 다양한 기타 변경사항에 추가하여 KSM에 대한 유용한 자료(커널 문서에 대한 링크 포함)를 제공한다. KSM 섹션에서는 16GB의 RAM을 가진 단일 서버에서 실행 중인 52개의 Windows® XP VM(각각 고유의 1GB RAM이 할당되지만 KSM과 공유됨)에 대한 흥미로운 참조를 찾게 된다.

  • IT Analysis의 기사 "De-dupe for big storage savings?"에서 스토리지 시스템의 중복 제거와 접근 방식에 대해 자세히 살펴보자.

  • Wikipedia에서는 다양한 구현 전략(예: 소스 및 대상)을 포함한 뛰어난 중복 제거에 대한 소개를 제공한다.

  • KSM은 가상화된 서버에서 메모리 공간을 줄이는 데 필요한 자동 메커니즘이지만 애플리케이션 개발자는 한 동안 비슷한 수동 기능을 가진 적이 있다. Linux 동적(또는 공유) 라이브러리를 사용하면 바이너리에서 애플리케이션을 사용하여 정적으로 컴파일된 오브젝트 대신 공통 라이브러리 오브젝트를 사용할 수 있다. "리눅스 동적 라이브러리 분석"(developerWorks, 2008년 8월)에서 공유 라이브러리에 대해 자세히 읽어보자.

  • 레드-블랙 트리(또는 대칭형 바이너리 B-트리)는 Rudolf Bayer가 고안한 내부적으로 균형을 이룬 바이너리 트리이다. 이 트리는 삽입, 검색 및 삭제와 같은 조작에 대한 적절한 최악의 사례가 포함된 유용한 트리 표시이다. 연관 배열의 생성을 포함한 다양한 애플리케이션에서 레드-블랙 트리가 사용되었음을 알 수 있다.

  • developerWorks 리눅스 영역에서는 Linux 개발자와 관리자에게 도움이 되는 수백 편의 사용법 기사 및 튜토리얼과 다운로드, 토론 포럼 및 기타 다양한 참고자료를 볼 수 있다.

  • developerWorks 기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 업계의 주제에 관한 최신 정보를 볼 수 있다.

  • 무료 developerWorks Live! briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.

  • developerWorks on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.

  • Twitter의 developerWorks를 팔로우(follow)하거나 developerWorks에 대한 Linux 트윗(tweet)의 피드를 구독하자.

제품 및 기술 얻기

  • 자신에게 가장 적합한 방법으로 IBM 제품을 평가해 보자. 시험판 제품을 다운로드하거나 온라인으로 제품을 사용해 보거나 클라우드 환경에서 제품을 사용하거나 SOA Sandbox에서 SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.

토론

  • developerWorks community에 참여하자. 개발자 중심 블로그, 포럼, 그룹 및 Wiki 검색 중에 다른 developerWorks 사용자와 의견을 교환해 보자.

필자소개

M. Tim Jones는 임베디드 펌웨어 아키텍트이자 Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming(현재 2판), AI Application Programming(현재 2판) 및 BSD Sockets Programming from a Multilanguage Perspective의 저자이다. 정지 위성을 위한 커널 개발에서 시작해 임베디드 시스템 아키텍처와 네트워크 프로토콜 개발에 이르기까지 다양한 분야에 대한 공학 지식을 가지고 있다. 콜로라도주 롱몬트 소재의 Emulex Corp.에서 컨설턴트 엔지니어로 활약하고 있다.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=리눅스
ArticleID=489012
ArticleTitle=Linux KSM(Kernel Shared Memory) 분석
publish-date=04072010
author1-email=mtj@mtjones.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.