멀티레벨 스케줄러 연구

연구 배경

멀티 코어 가상 머신은 빅데이터 처리 및 빠른 메모리 내 데이터베이스와 같은 다양한 다중 프로세스 및 다중 쓰레드 응용 프로그램에 대한 요구가 증가함에 따라 데이터 센터 환경에서 일반적으로 사용되고 있다.사용자가 제공하는 하나의 쓰레드가 운영되기 위해서는 시스템 전역적으로 다수의 계층에 존재하는 스케줄러가 해당 쓰레드를 포함하고 있는 스케줄링 엔티티 (SE)에 프로세서 자원을 할당하는 것을 요구하게 된다. 이와 같이 시스템 전역적으로 다양한 수직적 계층이 존재함에 따라서 다수의 스케쥴러가 인접한 계층 간의 협업을 통해서 시스템의 성능을 높이는 연구가 수행되고 있다. 가상 머신이 겪는 잘 알려진 문제 중 하나는 vCPU 스케줄링으로 lock-holder preemption, lock-waiter preemption, blocked-waiter wake-up, interrupt context preemption, reader preemption 문제가 언더커밋과 오버커밋 시나리오에서 발생하여 여러 성능 저하 문제를 유발한다. 본 연구에서는 이와 관련하여 하이퍼바이저가 알고 있는 게스트 OS의 임계영역(critical section)을 eCS(enlightened critical section)으로 정의하고 잠금 메커니즘에서 발생하는 정보를 가상머신모니터에 제공하는 방법으로 시스템의 성능을 높이고자 한다. 다음은 VM과 하이퍼바이저간의 정보흐름을 분석한 그림이다.

Fig1

연구 내용

이중 스케줄링 현상은 VM과 하이퍼바이저 간의 의미적 차이 때문에 발생한다. 특히vCPU가 중요한 섹션을 실행하는 경우에 문제가 크며 이로 인해 성능 저하를 초래한다.

  • 경량 반가상화 (Lightweight Para-virtualized) API 제공

하이퍼바이저가 VM에 제공하는 반가상화 API 집합으로 하이퍼바이저에 이중 스케줄링 문제를 인식하고 완화할 수 있도록 힌트를 제공한다. 이러한 API는 해당 vCPU 정보가 스케줄링의 결정을 내리는 하이퍼바이저와 공유하여 하이퍼콜을 수행하지 않아 오버헤드 없이 매우 경량이다. 다음표는 경량의 반가상화 API들이다.

Fig2

  • 로컬 vCPU 스케줄링 기법 확장 연구

가상머신과 하이퍼바이저간 상태 정보를 교환하는 기법을 연구한다. 로컬 vCPU 스케줄링 결정을 파악하기 위해 preempt_notifier 메커니즘의 기능을 확장하여 선점되거나 스케줄링 될 때 태스크에 통지할 수 있게 한다. 또한 스케줄러가 태스크의 스케줄링 전략을 결정하는데 사용할 수 있는 함수의 값을 검사하여 설정 할 수 있게 한다.

성능 실험

워크로드 성능 실험의 경우 아파치 응용의 경우 20% 향상@80코어, psearchy 경우 2.3배 향상@80코어 되어 85~100%의 이중 스케줄링 현상이 감소함을 보인다. 오버커밋 시나리오 워크로드 성능실험 결과는 다음과 같다.

Fig3

언더커밋 시나리오 워크로드 성능실험 결과는 다음과 같다.

Fig4

연구 결과물

USENIX ATC 2018 에 논문 "Scaling Guest OS Critical Sections with eCS"을 발표하였으며, eCS SW는 소스코드(1,000 LoC)를 공개 하였다. 빅데이터 처리 및 빠른 메모리 내 데이터베이스와 같은 다중 프로세스 및 다중 쓰레드 응용 프로그램의 실행에 필요한 가상화 기반의 클라우드 시스템이 구현된 일반적인 데이터 센터 환경에서 활용할 수 있다.

향후계획

eCS 접근 방식은 커널 공간에서 주로 사용되는 동기화 기본 요소와 메커니즘에 주석을 달아 언더커밋과 오버커밋 시나리오에서 BWW(Blocked-Waiter Wakeup)와 같은 선점 문제를 해결할 수 있다. 그러나 커널 개발자는 자신의 프리미티브를 도입하면서 선점을 피하려면 수동으로 중요한 섹션에 주석을 추가해야 한다. 또한 eCS의 현재 설계는 게스트 OS의 커널 공간만을 대상으로 하며 pthread_mutex, pthread_rwlock, pthread_spinlock 등과 같은 사용자 공간 임계 영역에 대해 여전히 지원하고 있지 않다. 본 연구는 해당 연구의 연구 수행을 통해 사용자 영역의 선점 문제를 피하기 위해 사용자 공간 임계 영역에 대한 접근 방식을 확장하고자한다. 이 외에도 VM과 하이퍼바이저간의 정보 공유로 인한 보안 취약점을 해결하고자 한다.