메인 컨텐츠로 가기

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

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

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

  • 닫기 [x]

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

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

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

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

  • 닫기 [x]

과다 할당된 KVM 호스트에서 자원 관리

자원을 과다 할당하여 워크로드 통합하기

Adam Litke, 소프트웨어 엔지니어, IBM
Adam Litke는 2001년에 IBM에서 PPC64 아키텍처의 도입을 지원하여 Linux 관련 작업을 시작했다. 그 이후로, kexec 기반 크래시 덤핑, 대용량 페이지, libhugetlbfs 및 test.kernel.org가 사용하는 자동 하니스를 포함하여 다양한 프로젝트로 작업해왔다. 현재 Adam은 가상화에 집중하며, qemu, libvirt, Linux 커널 및 Memory Overcommitment Manager에 기여하고 있다.

요약:  가상화의 핵심 이점은 복수 워크로드를 단일 컴퓨터 시스템으로 통합하는 기능입니다. 이 통합으로 인해 전력 소모, 자본 지출 및 관리 비용 면에서 절약이 발생합니다. 절약의 정도는 메모리, CPU 주기, I/O 및 네트워크 대역폭과 같은 하드웨어 자원을 과다 할당하는 기능에 따라 다릅니다. 메모리 조정(memory ballooning) 및 KSM(Kernel Same-page Merging)과 같은 기술은 적절한 수동 튜닝으로 메모리 과다 할당을 개선할 수 있습니다. 호스트와 VM 조건에 대응하는 이러한 제어의 자동 재구성으로 인해 절약의 정도가 훨씬 더 커질 수 있습니다. 이 기사에서 절약을 늘리기 위해 이러한 기술을 적용하는 방법을 배워봅시다.

원문 게재일:  2011 년 6 월 07 일
난이도: 고급 원문:  보기 PDF:  A4 and Letter (210KB | 14 pages)Get Adobe® Reader®
페이지뷰:  1841 회
의견:  


가상화는 워크로드 통합을 사용하여 효율성의 증가를 약속한다. 다음과 같이 가상화 밀도를 최대화하는 동시에 우수한 성능을 유지보수하는 것은 진정한 도전과제가 될 수 있다.

  • CPU, 메모리 및 네트워크의 대역폭과 같은 자원의 워크로드 활용과 스토리지 액세스는 시간이 지나면서 다르다. 이러한 자원을 수요에 따라 동적으로 할당할 수 있다면, 과다 할당으로 더 우수한 밀도를 달성할 수 있다.
  • 최적의 자원 관리도 시스템 구성 및 하드웨어 설정과 같은 요인에 따라 다르다.

두 요인 다 통합하는 관리 전략을 개발하는 한 가지 방법은 정책 언어에서 규칙 세트를 쓰는 것이다. 정책을 사용자 고유 조건으로 맞출 수 있고 통합과 성능 목표의 균형을 효율적으로 유지할 수 있다.

이 기사는 공격적인 과다 할당과 연관된 도전과제를 탐색하고, 이러한 도전과제를 다루는 데 도움을 줄 수 있는 정책 구동형 관리 도구를 제안한다. 도구는 일반 KVM 환경에 배치되고 두 개의 구별된 워크로드를 관리한다. 이 기사는 이 연습의 결과를 평가하고, 추가 작업 항목 및 잠재적인 연구 주제에 대한 제안으로 마무리한다.

과다 할당 도전과제

KVM에서 메모리 과다 할당의 완전한 조사는 Linux 메모리 관리자 그 자체로 시작해야 한다. Linux는 가상 메모리의 개념에서 빌드되었기 때문에, 설계로 메모리 과다 할당 기술을 사용한다.

프로세스에서 요청한 메모리 페이지는 실제로 사용될 때까지 할당되지 않는다. Linux 페이지 캐시를 사용하면 복수 프로세스가 공유 페이지를 통해 파일에 액세스하여 메모리를 저장할 수 있다. 즉, 메모리가 고갈되면서 시스템은 상대적으로 자주 사용하지 않는 페이지를 디스크로 스와핑하여 메모리를 완전히 사용 가능하게 할 수 있다. 이러한 기술들이 완벽하지 않은 반면에, 할당된 메모리 양과 실제로 사용된 양 사이에 엄청난 차이를 초래할 수 있다.

KVM 가상 머신이 정규 프로세스이기 때문에, 표준 메모리 보존 기술이 적용된다. 하지만, 정규 프로세스와는 달리, KVM 게스트는 중첩된 운영 체제가 들어있으며, 이는 두 가지 핵심 방식으로 메모리 과다 할당에 영향을 준다. KVM 게스트는 정규 프로세스보다 더 우수한 메모리 과다 할당 잠재력을 보유할 수 있다. 이는 활용 면에서 변동으로 야기되는 최소 및 최대 게스트 메모리 요구사항 간의 커다란 차이로 인한 것이다.

이 변동 이용은 가상화의 관심을 끄는 면에서 매우 중요하지만, 항상 쉬운 것은 아니다. 호스트가 KVM 게스트에 할당된 메모리를 관리하는 동안, 게스트 커널은 동시에 동일한 메모리를 관리하고 있다. 호스트와 게스트 사이의 어느 형태의 협업도 이루어지지 않아, 호스트나 게스트 메모리 관리자 둘 중 어느 것도 캐싱과 스와핑에 대한 최적의 의사결정을 내릴 수 없으며, 이로 인해 메모리 사용의 효율성이 떨어지고 성능이 저하될 수 있다.

Linux는 추가 메커니즘을 제공하여 가상화에 특화된 메모리 과다 할당을 다룬다.

  • 메모리 조정(memory ballooning)은 하나의 기술로서, 호스트가 협업하는 게스트에게 지정된 메모리의 일부를 해제하도록 지시하므로, 이를 다른 용도로 사용할 수 있다. 이 기술은 호스트에서 게스트로 메모리 압력을 다시 집중하는 데 도움을 줄 수 있다.
  • KSM(Kernel Same-page Merging)은 동일한 페이지에 대해 이전에 식별된 메모리 범위를 스캔하고 이를 함께 병합하며 복제를 없애는 커널 스레드를 사용한다. 많은 수의 동종 가상 머신을 실행하는 시스템은 이러한 형식의 메모리 공유로 가장 큰 혜택을 보게 된다.
  • 기타 자원 관리 기능, 예를 들어 Cgroups는 가상 머신 사이에 자원을 동적으로 섞을 수 있는 메모리 과다 할당 분야의 애플리케이션을 보유한다.

이러한 메커니즘은 과다 할당된 메모리를 관리하기 위해 효율적인 프레임워크를 제공하지만, 이는 모두 중요한 제한사항을 공유한다. 즉, 이는 반드시 외부 엔티티로 구성되고 튜닝되어야 한다. 가상화 스택의 개별 컴포넌트가 튜닝 의사결정을 내리기 위한 정보를 충분히 보유하지 않기 때문에 자동 구성을 사용할 수 없다.

예를 들어, 호스트의 메모리가 부족한지 여부와, 성능에 불리하게 영향을 주지 않고 게스트로부터 얼마나 많이 메모리를 조정할 수 있는지에 대해 아는 것은 하나의 qemu 프로세스의 범위를 넘어서는 것이다. 관리 정책이 호스트와 게스트에 대한 실시간 정보와 결합될 때에만 이러한 의사결정을 내릴 수 있다.

KSM으로 이러한 도전과제를 해결하기 위해 ksmtuned라는 디먼이 공유 잠재성과 메모리의 필요에 따라 튜닝 가능한 매개변수를 동적으로 관리하도록 작성되었다. ksmtuned가 단일 메커니즘을 별개로 관리하기 때문에 이는 포괄적인 솔루션의 일환이 될 수 없다.

어느 과다 할당 메커니즘의 사용이나 기본적으로 호스트와 게스트 메모리 관리 시스템의 운영에 영향을 준다. 그러므로, 복수 메커니즘의 동시 사용은 이차 효과를 야기할 가능성이 있다. 그림 1은 메모리 조정(memory ballooning)과 KSM 사이의 상호작용을 설명한다.


그림 1. KSM에 대한 메모리 조정의 효과
KSM에 대한 메모리 조정의 효과

이 예제에서, 증가한 조정 압력은 페이지를 공유하는 KSM의 기능을 약화시킨다. 게스트 조정 구동자는 호스트 페이지가 공유될 수 있는지 여부를 고려하지 않고 조정하는 페이지를 선택한다. 공유 페이지를 조정하는 것은 실제로 아무 메모리도 절약하지 않고 자원의 게스트를 빼앗기 때문에 실수이다. 효율성을 극대화하기 위해 이러한 상호작용 유형이 예상 및 관리되어야 한다.

다른 목표에 부합하도록 설계된 아키텍처를 사용하여 KVM 기반 가상화를 무수한 구성에 배치할 수 있다. 공격적인 가상 머신 통합은 성능 균형을 요구한다. 둘 사이의 적절한 균형은 상황에 따라 다르다.

메모리 과다 할당은 다른 시스템 자원 모두에 대한 요구를 늘릴 수 있다. 메모리 캐시에 대한 압력은 디스크 또는 네트워크 I/O의 증가를 초래할 것이며, 증가한 페이지 재확보로 인해 게스트는 CPU 사이클을 더 많이 소모할 것이다.

이러한 도전과제는 이 태스크를 위해 설계된 새로운 디먼인 MOM(Memory Overcommitment Manager)으로 다룰 수 있다.


MOM을 통한 동적 관리

MOM(Memory Overcommitment Manager) 디먼이 그림 2에 표시된다.


그림 2. Memory Overcommitment Manager
Memory Overcommitment Manager

MOM은 호스트와 게스트 통계 콜렉션, 정책 엔진 및 조정 및 KSM을 위한 제어 지점에 유연한 프레임워크를 제공한다. 관리자는 MOM을 통해 메모리 과다 할당의 더 높은 수준을 달성하기 위해 튜닝 가능한 시스템을 향한 동적 조정으로 실시간 조건에 응답하는 과다 할당 정책을 구축할 수 있다.

MOM은 libvirt를 사용하여 호스트에서 실행 중인 가상 머신 목록을 유지보수한다. 정규 콜렉션 간격으로 데이터가 호스트와 게스트에 대해 수집된다. 데이터는 복수 소스를 출처로 할 수 있다(호스트 /proc 인터페이스, libvirt API, virtio-serial 또는 게스트로의 네트워크 연결). 데이터는 한 번 수집되면 정책 엔진이 사용하기 위해 조직화된다. (Virtio는 네트워크와 디스크 장치 드라이버의 표준이며, 이는 게스트의 장치 드라이버가 가상 환경에서 이를 실행 중인 것을 "알고", 따라서 하이퍼바이저와 협력하여, 게스트에게 고성능 네트워크와 디스크 운영을 확보하도록 한다. 요약하면, Virtio는 반가상화(paravirtualization)의 성능 혜택을 극대화하여 전달한다.)

정책 엔진은 근본적으로 간단한 정책 언어로 작성된 프로그램을 이해하는 소규모 해석 프로그램이다. 정기적으로, MOM은 수집된 데이터를 사용하여 사용자 공급 정책을 평가할 것이다. 정책은 게스트의 메모리 조정의 팽창 또는 KSM 스캐닝 비율의 변경 등과 같은 구성 변경을 트리거할 수 있다.

시간이 흐르면서, MOM 프레임워크는 추가 데이터 소스에서부터 수집하고 이 영역에서 개발 진행률로 새 메모리 과다 할당 메커니즘을 제어하도록 확장할 수 있다.


MOM 평가하기

과다 할당된 메모리 관리 측면에서 MOM과 그 효율성을 평가하기 위해, 다음과 같이 두 개의 가상화 워크로드를 살펴보자.

  • 첫 번째 워크로드에서 가상 머신은 정해진 액세스 패턴에 따라 익명 메모리의 변동량을 소모하도록 구성되었다.
  • 두 번째 워크로드는 각 가상 머신이 독립적 MediaWiki 인스턴스로 작동하는 LAMP 벤치마크를 사용한다.

각 워크로드에 대해 메모리 조정과 KSM을 제어하는 MOM 정책이 평가된다. 호스트 스와핑을 방지하기 위해 각 게스트의 메모리 조정은 호스트와 게스트 메모리 압력에 따라 동적으로 조정된다. ksmtuned와 동일한 알고리즘을 사용하여, KSM은 메모리 압력과 공유 가능한 메모리 양을 기반으로 조정된다.

두 개의 워크로드 시나리오

Memknobs 워크로드 시나리오는 커널의 메모리 재확보 알고리즘을 자극하는 패턴에서 익명 메모리 페이지를 할당하고 접촉하여 메모리 압력을 생산하는 Memknobs라고 하는 간단한 프로그램을 사용한다. Memknobs는 고정된 크기 버퍼를 할당하고 그 버퍼의 페이지를 통해 루프하여, 각각에 작성한다. 각 반복에 대해 점진적으로 변화하는 버퍼 크기로 반복적으로 Memknobs를 호출하여 게스트는 I/O 컴포넌트 없이 메모리 바인드된 워크로드를 시뮬레이션할 수 있다. 호스트에서 메모리를 과다 할당하기 위해 각 인스턴스가 고유 패턴으로 메모리를 사용한 32개의 가상 머신으로 Memknobs를 배치하였다.

Cloudy 워크로드 시나리오의 경우, Cloudy라고 하는 오픈 세트를 사용하여 디스크 I/O 컴포넌트로 현실적인 워크로드를 생성하였다. Cloudy는 설정이 편리한 LAMP 벤치마크이며, 가상화 확장 가능성을 측정하고 자원 과다 할당의 효과를 보여준다. 복수 가상 머신이 MediaWiki 서버로 구성된다. 각 wiki는 Wikipedia에서부터 페이지로 로드되고 이미지 데이터를 임의로 생성했다.

포함된 JMeter 테스트 계획은 인스턴스를 모두 연습하고 처리량과 응답 시간을 측정한다. 테스트 계획은 안정 상태(steady-state) 워크로드를 작성하거나 복수 가상 머신 그룹 사이에 로드를 대체하여 변동성을 도입하도록 구성될 수 있다. 로드의 양과 유형은 요청 비율, 동시 사용자의 수 및 임의로 생성된 wiki 이미지 파일의 크기를 변경하여 달라질 수 있다. PHP 가속기는 CPU 소비를 무시해도 되는 양으로 줄인다. 이 워크로드는 엄청난 I/O 양을 생성할 수 있으며, 가상 머신 이미지 스토리지 장치에 액세스할 때에 사용 가능한 대역폭의 양에 민감하다.

정책

여기에서 메모리 조정 전략은 메모리 압력을 게스트에게 돌리는 것이 아니라 호스트 스와핑을 방지하도록 설계되었다. 게스트 페이지 액세스 정보가 없는 호스트는 스왑하는 페이지를 선택할 때에 LRU 알고리즘을 적절하게 적용할 수 없다. 더 나아가 게스트 운영 체제는 워크로드의 메모리 사용에 대한 최대 정보를 보유하고, 최선의 페이지 대체 의사결정을 내릴 수 있어야 한다.

정책은 바로 사용 가능한 호스트 메모리의 풀을 유지보수하기 위해 메모리 조정에 의존한다. /proc/meminfo에서 보고하는 대로 사용 가능한 메모리를 MemFree, BuffersCache의 합계로 정의한다. 이 풀이 총 메모리의 20퍼센트 아래로 떨어지면, 메모리 조정이 초기화된다. 압력은 호스트 메모리 압력의 레벨에 따라 게스트에 적용된다. 사용 가능한 메모리가 먼저 재확보되므로, 사용하지 않은 메모리가 더 많은 게스트는 가장 많이 조정된다. 충분한 조정 압력을 통해 게스트는 캐시된 페이지를 축출하고 스와핑을 시작할 것이다. 메모리 압력이 한 번 가라앉으면, 조정은 게스트에게 메모리를 리턴하도록 축소된다.

KSM 튜닝 알고리즘은 ksmtuned의 알고리즘과 일치하도록 설계되었다. 먼저, 커널 스레드를 사용하는지 여부에 대한 의사결정은 총 호스트 메모리의 20퍼센트로 설정한 사용 가능한 메모리 임계값에 따라 내려진다. KSM은 호스트가 다음 두 가지 조건을 둘 다 부합하는 경우를 제외하고 실행하도록 허용된다.

  • 사용 가능한 메모리가 임계값을 초과하고,
  • 사용 가능한 메모리 임계값보다 적은 총 메모리가 모든 가상 머신에 지정된 총 메모리 양을 초과한다.

이러한 조건은 호스트가 메모리 압력 하에 있는지 여부와 가상화가 책임질 수 있는지 여부를 개별적으로 테스트한다. 필요하지 않을 때에 ksmd의 스위치를 끄면 CPU 사이클을 절약할 것이다.

ksmd가 사용되면, 운영이 총 메모리 크기 및 메모리 압력에 따라 튜닝된다. 스캔 사이의 휴면 시간은 호스트 메모리 크기에 따라 조정된다. 16GB 호스트의 경우, 10초가 기본값이다. 더 큰 용량의 머신은 더 적게 휴면할 것이고, 더 작은 용량의 머신은 더 많이 휴면할 것이다. 간격 당 스캔하는 페이지의 수는 사용 가능한 메모리의 양에 따라 늘어나거나 줄어든다. 사용 가능한 메모리가 사용 가능한 메모리 임계값보다 작으면 스캐닝 비율은 300페이지로 늘어난다. 그렇지 않으면 50으로 줄어든다. 스캔하는 페이지의 수는 64 ~ 1,250의 범위를 넘을 수 없다.


결과

이번 실험은 IBM BladeCenter® HS22에서 수행되었다. 시스템에 EPT 지원과 48GB RAM을 갖춘 논리적 CPU 16대가 있다. 늘어난 스토리지 용량과 대역폭을 위해 가상 머신 이미지는 개인용 10기가비트 이더넷 LAN을 통해 연결된 외부 NFS 어플라이언스에 호스트되었다. Memknobs 및 Cloudy 워크로드 시나리오를 사용하여 MOM 정책의 효율성을 평가했다. 각 시나리오 내에서 성능 영향을 측정하려면 1시간 테스트가 MOM 정책이 활성화된 상태와 활성화되지 않은 상태 둘 다에서 완료되었다.

Memknobs 워크로드 시나리오

이 실험을 위해 2GB RAM 및 각 1대의 VCPU를 갖춘 32대의 가상 머신을 공급하였다. 정규 스와핑 활동을 야기하도록 호스트를 충분한 메모리 압력 아래 두기 위해 그림 3과 같이 Memknobs 메모리 로드를 교정했다. 실험을 통해 원하는 호스트 작동을 부여하는 패턴을 제작할 수 있었다.


그림 3. Memknobs 메모리 액세스 패턴
Memknobs 메모리 액세스 패턴

Memknobs 프로그램은 반복당 접촉할 수 있는 페이지 수를 추적한다. 이 처리량 값은 초당 접촉한 메모리의 메가바이트 단위로 보고된다. 서로 다른 실험들 사이에 비교할 수 있기 위해 각 게스트의 평균 처리량을 계산하고 이러한 32개의 값을 합하여 총 평균 처리량 점수를 이끌어 낸다. 표 1은 다른 Memory Overcommitment Manager 정책이 사용될 때에 달성한 점수를 비교한다.


표 1. MOM 정책 결과: Memknobs 총 평균 처리량
MOM 정책결과
없음4331.1
KSM만4322.6
KSM 및 조정5399.5

이러한 결과는 메모리 조정의 사용이 20퍼센트에 가까운 처리량 증가에 기여했다는 점을 보여준다. KSM이 이 워크로드의 페이지 공유 면에서 고도로 효율적이라고 하더라도, 성능 증가의 원인이 되지는 않았다. 그림 4는 메모리 조정을 사용하는 Memknobs 실행과 사용하지 않는 실행 사이의 스왑 활동을 비교한다.


그림 4. Memknobs 스왑 비교
Memknobs 스왑 비교

MOM 정책을 활성화하면 스왑 활동이 게스트에 효율적으로 집중되었고, 총 스왑 운영 수는 반으로 줄었다.

Cloudy 워크로드 시나리오

환경을 위해 Cloudy의 규모를 적절하게 조절하기 위해 32개의 가상 머신 MediaWiki 인스턴스를 구성했다. 이 워크로드는 Memknobs보다 메모리를 적게 사용한다. 메모리 바인드된 게스트를 보장하기 위해 1GB RAM만 각 VM에 지정되었다. 줄어든 가상 머신의 사용 공간을 보상하기 위해 15,714의 대용량 페이지를 예약하였다—호스트의 사용 가능한 메모리를 16GB로 효율적으로 줄인다.

JMeter 테스트 계획은 가상 머신당 초당 평균 16개의 요청 비율로 요청을 제공하도록 구성되었다. 이는 시스템이 과다 할당되지 않았을 때 자원 병목 현상 없는 보통 로드를 제작하였다. JMeter는 작성된 각 요청에 대한 통계를 기록한다. QOS(Quality of service) 메트릭을 밀리초로 95번째 백분위수 요청 기간으로 계산한다. 평균 인스턴스 처리량은 참여하는 게스트의 수로 나누어 킬로바이트 단위의 완료된 모든 요청의 총 크기이다.

표 2는 KSM을 사용한 경우, 사용하지 않은 경우 및 메모리 조정 MOM 정책이 사용된 경우에 달성된 QOS 및 처리량을 보여준다.


표 2. Cloudy QOS 및 처리량
VMMOM 정책QoS처리량
1아니오1669710007
32아니오3240774555
323231764762

하나의 VM이 참여한 실행의 결과는 제한조건 없는 호스트에서 성능을 설명하도록 보여준다. 이 데이터로부터의 핵심적인 관찰은 Memknobs의 성능을 극적으로 개선시킨 동일한 MOM 정책이 Cloudy에 영향을 주지 않았다는 점이다. 이 워크로드에서 메모리 사용은 익명 메모리가 아니라 주로 파일 I/O가 원인이 되며, 매우 적은 스왑 활동이 관찰된다. 대신에, 메모리 과다 할당은 호스트 및 게스트 페이지 캐시에 압력을 부과하여, 시스템이 작업 세트를 더 적은 양의 메모리에 계속 로드되도록 시도하므로 I/O는 늘어나게 된다.


그림 5. 하나의 게스트에 대한 I/O에서 메모리 조정의 영향
하나의 게스트에 대한 I/O에서 메모리 조정의 영향

메모리 한정 면에서는 효율적이라고 할지라도, 호스트 사용 가능 메모리를 줄이기 위해 대용량 페이지 예약을 사용하는 것은 호스트의 메모리 관리 알고리즘을 사소하게 방해할 수 있다. 향후, 이 실험은 가능한 가장 현실적인 시나리오에서 시스템을 평가하기 위해 실제 메모리 16GB를 갖춘 머신에서 반복되어야 한다.

결과 분석하기

이러한 두 가지 다른 워크로드를 연구할 때에 발견되는 대조적인 결과는 한 가지 명백한 결론을 도출한다. 즉, 메모리를 과다 할당할 때, 시스템의 모든 측면과 그 워크로드가 고려되어야 한다는 점이다. "광범위하게 적용되는" 관리 정책은 없다.


계획된 개선

여전히 초기 단계라고 하더라도 이 작업은 KVM을 통한 자원 과다 할당의 상태를 진전하도록 약속하고, 많은 개선 사항들이 계획되었으며 진행 중이다.

오늘날, 호스트와 게스트 사이의 표준화된 통신 메소드는 사용 가능하지 않다. 현재 접근방식(예: 호스트에서 게스트로의 네트워크 통신)은 호스트와 각 게스트에서의 수동 설정 및 구성에 따라 다르고, 이에 대한 방식은 운영 체제 유형 및 버전, 데이터 센터 네트워킹 구성 및 가상 머신 장치 모델로 지시된다. 여기에서의 목표는 virtio-serial과 에뮬레이트된 일련 번호를 비롯하여 복수 데이터 전송을 지원할 수 있는 qemu로 통신 메커니즘을 통합하여 이 문제를 간소화하는 것이다. 채널의 게스트 측은 오픈 소스인 멀티플랫폼 qemu-guest-tools 패키지로 지원될 것이다. 이러한 메커니즘은 게스트 통계를 수집하는 MOM의 기능을 개선할 것이고, 복사/붙여넣기 및 관리 태스크와 같은 기능에 널리 유용할 것이다.

과다 할당 정책은 설명하는 대로 일부 상황에 도움을 줄 수 있고 다른 것에 위험을 초래할 수 있다. 안전하게 배치 가능하게 하기 위해 정책은 성능을 방해하지 말아야 한다. MOM 정책은 예상된 결과를 제작하지 않을 때 관리 운영을 롤백하는 보호 장치를 추가하여 개선되어야 한다.

오늘날, KVM은 매우 효율적인 협업적 CPU 공유 메커니즘을 보유한다. 게스트 CPU가 hlt 명령어를 실행할 때에, 자발적으로 CPU 시간을 다른 게스트에게 양도한다. 메모리 과다 할당의 성능 영향은 유사한 게스트 구동형 프로토콜이 메모리 자원을 산출하기 위해 존재하는 경우에 줄어들 수 있다.

커뮤니티가 KVM 과다 할당을 개선할 수 있는 새 기능을 개발할 때, 이러한 기능에 대한 지원은 MOM 인프라로 통합될 것이다. 예를 들어, cgroups 기반 RSS 한계에 대한 지원을 사용하여 조정 지시문을 강제 실행하고 비협업적이거나 악성 게스트로부터 시스템을 보호하도록 계획한다.


결론

자원 과다 할당은 가상화의 혜택과 더 많은 자원과 개발의 주제를 극대화하는 데 중대하다. Linux 가상화가 진화하는 대로 과다 할당 우수 사례도 그렇게 될 것이다. 과다 할당을 관리하는 전체론적인 정책 구동형 접근방식은 효율성을 극대화하고 점증적인 개선을 추진하는 최선의 방법이다.

감사의 인사

감사를 받을 만한 자격이 있는 동료들이 많지만 그 중에서도 특히 Anthony Liguori와 Karl Rister에게 감사하고 싶다. 그들의 충고와 기술적 전문지식은 Memory Overcommitment Manager 및 이 연구의 개념과 개발 면에서 매우 도움이 되었다.


참고자료

교육

제품 및 기술 얻기

토론

  • EPT 프로세서 기능의 제한사항에 대한 이 토론을 읽어보자.

  • developerWorks community에 참여한다. 개발자가 운영하고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.

필자소개

Adam Litke는 2001년에 IBM에서 PPC64 아키텍처의 도입을 지원하여 Linux 관련 작업을 시작했다. 그 이후로, kexec 기반 크래시 덤핑, 대용량 페이지, libhugetlbfs 및 test.kernel.org가 사용하는 자동 하니스를 포함하여 다양한 프로젝트로 작업해왔다. 현재 Adam은 가상화에 집중하며, qemu, libvirt, Linux 커널 및 Memory Overcommitment Manager에 기여하고 있다.

잘못된 도움말 신고

부정사용 신고

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


잘못된 도움말 신고

부정사용 신고

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


디벨로퍼웍스 로그인


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=678483
ArticleTitle=과다 할당된 KVM 호스트에서 자원 관리
publish-date=06072011
author1-email=agl@us.ibm.com
author1-email-cc=

태그

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

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

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

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

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