[번역] vSphere 7 – vMotion Enhancements

출처 : https://blogs.vmware.com/vsphere/2020/03/vsphere-7-vmotion-enhancements.html

vSphere vMotion 기능을 통해 고객은 소스 ESXi 호스트에서 타깃 ESXi 호스트로 워크로드를 실시간 마이그레이션할 수 있다. 시간이 지나면서 우리는 새로운 기술을 지원하기 위한 vMotion을 개발했다. vMotion 기능을 크게 개선했기 때문에 vSphere 7 릴리스도 예외가 아니다. vSphere 7의 vMotion 향상 기능에는 실시간 마이그레이션 중 성능에 미치는 영향 감소와 스턴(stun) 시간 단축이 포함된다. 이 블로그 게시물은 vMotion의 개선 사항이 고객이 대규모 워크로드에 vMotion을 사용하는 데 어떤 도움이 되는지 자세히 소개할 것이다.

vmotion-history-1536x347.png

vSphere 7에서 vMotion에 대해 개선한 내용을 이해하려면 vMotion 내부를 이해하는 것이 필수적이다. The vMotion Process Under the Hood를 읽고 vMotion 프로세스 자체에 대해 자세히 알아보십시오.

대형 VM vMotion 과제

vSphere는 VM당 현재 최대 256개의 vCPU 및 6TB의 메모리로 설정된 대형 VM을-"몬스터" VM이라고도 함- 호스팅할 수 있는 완벽한 플랫폼입니다. 그러나 대규모 VM에서 워크로드를 실행 중인 고객이 이러한 VM을 라이브 마이그레이션하는 데 항상 만족하는 것은 아니라는 점을 알게 되었다. 이는 vMotion 프로세스 중 워크로드 성능에 잠재적인 영향을 미치고 전환(스턴) 시간이 너무 오래 걸리기 때문이다.

예를 들어 상당한 수의 I/O를 처리하는 대규모 트랜잭션 데이터베이스 플랫폼은 워크로드의 특성 및 크기에 따라 크게 달라지지만 vMotion 중에 성능 저하를 경험할 수 있다. vSphere 7의 향상된 vMotion 로직은 이러한 모든 문제를 해결하고 성능이나 가용성에 큰 영향을 미치지 않고 대규모 워크로드를 라이브 마이그레이션할 수 있게 해준다.

메모리 사전 복사 최적화

이 비디오에서 설명했듯이, 우리는 VM의 vMotion 작업 중에 변경된 모든 메모리 페이지를 추적해야 한다. 실시간 마이그레이션이기 때문에 VM 내부의 게스트 OS는 vMotion 동안 메모리에 데이터를 계속 기록하게 된다. 우리는 vMotion 중에 덮어쓴 메모리 페이지를 추적하고 다시 보내야 한다.

vMotion-page-trace-v2-old.png

vMotion 프로세스는 VM에 대해 구성된 모든 vCPU에 페이지 추적기를 설치한다. 그렇게 함으로써 vMotion은 어떤 메모리 페이지를 덮어쓰고 있는지 이해한다. 이것을 페이지 추적 중 'page fire'이라고 한다. 실시간 마이그레이션된 VM에 대한 모든 vCPU에 추적 작업을 배포하고 있다.

페이지 추적기를 설치하고 페이지 화재를 처리하기 위해 vCPU를 잠시 중지한다. 마이크로초밖에 안 되지만 모든 vCPU를 중지하면 워크로드가 중단된다. VM의 컴퓨팅 리소스를 확장하면 vMotion 작업의 영향이 증가함 추적 작업을 위해 vCPU를 중지한 후에는 모든 Page Table Entries(PTE)이 읽기 전용으로 설정되고, Translation Lookaside Buffers(TLB)가 플러시되어 TLB의 타격을 방지하고 페이지 테이블워크를 강제로 적용하므로 vMotion 프로세스가 어떤 메모리 페이지를 덮어썼는지 완전히 이해한다. 이 블로그 포스트에서 이러한 메모리 구성에 대해 자세히 알아보십시오. 여기에 기술된 방법을 "Stop-based Page Trace Install"이라고 한다.

vSphere 7에서 수행하는 방법

가장 큰 영향은 페이지 추적을 위해 모든 vCPU를 중지해야 하는 데 있다. 모든 vCPU를 중지할 필요 없이 페이지 트레이서를 설치할 수 있다면? vSphere 7을 통해 "Loose Page Trace Install."을 소개하고 있다. 페이지 추적 방법은 대부분 동일하지만 모든 vCPU를 사용하는 대신 vCPU를 하나만 할당하여 모든 추적 작업을 수행한다. VM에 사용 권한이 부여된 다른 모든 vCPU는 중단 없이 워크로드를 계속 실행하기만 하면 된다.

vMotion-page-trace-v2-new.png

페이지 추적기는 페이지를 요청한 vCPU에 설치되며 모든 PTE를 읽기 전용으로 설정한다. TLB는 vCPU에 따라 다르므로 각 vCPU는 여전히 해당 TLB를 플러시해야 한다. 그러나 이것은 충격을 최소화하기 위해 다른 시간에 일어난다. 전반적으로 이 방법은 페이지 추적을 위해 vCPU를 하나만 사용하므로 훨씬 더 효율적이다.

페이지 테이블 세분성(Page Table Granularity)

그래서 추적 비용은 줄였지만, 더 효율적으로 만들 수 있다면 어떨까? 우리는 메모리를 읽기 전용으로 설정하는 방법을 최적화했다. 즉, 이 파트에서 수행해야 할 작업이 적다는 것을 의미한다. 일을 적게 하면 효율이 높아진다. 메모리가 vSphere 7 이전 버전에서 읽기 전용으로 설정된 방법은 4KB 페이지 세분화에 있다. 모든 4KB 페이지를 읽기 전용 액세스 권한으로 설정해야 했다.

pagetableoverviewv2.png

vSphere 7을 기준으로 VMM(가상 시스템 모니터) 프로세스는 1GB 페이지에서 읽기 전용 플래그를 훨씬 더 큰 세분성으로 설정한다. 페이지 화재(메모리 페이지 덮어쓰기)가 발생하면 1GB PTE는 2MB와 4KB 페이지로 세분된다. VMware 엔지니어들은 VM이 일반적으로 vMotion 프로세스 중에 모든 메모리를 건드리지 않는다는 것을 알게 되었다. vMotion 동안 메모리 작업 세트 크기는 일반적으로 10-30%에 불과하다. vMotion 시간에 더 많은 메모리를 사용하면 비용 효율성이 낮아진다.

전환 단계 향상

지금까지 논의한 모든 개선사항은 추적이 발생하는 메모리 사전 복사 단계에서 이루어진다. 메모리 컨버전스에 도달하면 거의 모든 메모리가 대상 호스트에 복사됨을 의미하며 vMotion은 대상 ESXi 호스트로 전환할 준비가 된다. 이 마지막 단계에서는 소스 ESXi 호스트의 VM이 일시 중단되고 체크포인트 데이터가 대상 호스트로 전송된다. 전환 시간(스튜닝 시간)이 1초 이하가 되길 원한다는 점을 기억하자. 대규모 VM의 경우 시간이 지남에 따라 워크로드 크기가 증가하여 이러한 문제가 해결되지 않았다.

전환 단계에서는 체크포인트 데이터와 메모리 비트맵을 전송한다. 메모리 비트맵은 VM의 모든 메모리를 추적하는 데 사용된다. 어떤 페이지를 덮어쓰는지 알고 있으며 대상 ESXi 호스트를 전송해야 한다. vMotion이 마지막 메모리 페이지를 전송하면 대상 호스트의 VM 전원이 켜지기 시작한다. 하지만 전송을 위해 남겨진 마지막 페이지가 필요할지도 모른다. 목적지에서 이러한 페이지를 식별하기 위해 우리는 소스에서 전송된 비트맵을 사용한다. 고객이 메모리를 오버 커밋할 경우 스왑 아웃 페이지는 옵션 스왑 비트맵에서 추적된다.

fullbitmapv2.png

메모리 비트맵이 희박하다. VM에서 사용 중인 모든 메모리 페이지의 마지막 메모리 페이지와 정보를 포함하고 있다. 메모리가 1GB인 VM의 메모리 비트맵은 크기가 32KB이다. 32KB를 전송하는 데는 몇 밀리초밖에 걸리지 않을 것이다. 문제없다!

vSphere 7의 기능

6TB의 메모리(또는 향후 더 많은 메모리)를 실행하는 VM에서는 비트맵이 이미 192MB가 된다. 전환 시간의 1초 미만을 유지하려면 192MB 이상 전송하는 데 최대 1초 이상이 걸릴 수 있으므로 비트맵을 더 작게 만들어야 한다. 비트맵을 압축해서 당신이 정말 필요한 정보만 보내면 어떨까?

compactedbitmapv2.png

이 단계에서는 이미 대부분의 메모리 페이지를 복사했으므로 마지막 남은 메모리 페이지만 전송하면 된다. vMotion은 압축된 메모리 비트맵을 사용하여 대형 VM에 대한 비트맵을 밀리초 단위로 전송할 수 있으므로 스턴 시간이 크게 단축된다.

성능 향상

vSphere 7의 vMotion에 대한 이러한 향상된 기능을 통해 vMotion 중에 성능 저하 없이 워크로드를 실시간 마이그레이션할 수 있으며, 다음 다이어그램은 vSphere 7의 잠재적 성능 향상을 보여 주는 테스트의 예다. 테스트베드는 HammerDB 워크로드를 실행하는 대규모 VM(72 vCPU/512GB)이다. 우리는 1초 단위의 타임라인을 통해 커밋/초를 모니터링한다.

이 테스트에서 vSphere 6.7과 비교하여 vSphere 7에서 주목한 몇 가지 주요 이점은 다음과 같다.

  • 페이지 추적 단계에서는 더 이상 성능 영향을 경험하지 않는다.
  • 스턴 시간은 여러 초가 걸리는 대신 1초 이내로 유지된다.
  • 전체 실시간 마이그레이션 시간은 20초 가까이 짧다.

vmotion7-improvements.png

주행 거리는 vMotion 네트워크 구성 및 VM 크기에 따라 다를 수 있지만, 이는 이러한 vMotion 개선의 잠재적 이점을 보여 주는 모범적 테스트다.

맺음말

vSphere 7을 사용한 vMotion의 개선은 엄청나고 vMotion에 대한 비용을 크게 절감한다. 시스템을 vSphere 7로 업그레이드하는 것 외에 새롭고 향상된 vMotion 논리를 즐기기 위해 아무것도 필요하지 않다.

추가 자료