분할형 운영체제(Azalea) 연구

연구 배경

최근 고성능 컴퓨팅 프로세서는 단일 코어당 클럭 속도 향상을 통한 성능 개선의 한계로 인해 코어의 수를 늘려 성능을 개선하는 매니코어 프로세서 시스템 환경으로 변화하고 있다. 하지만 매니코어 시스템 환경에서 모든 기능을 포함하는 풀커널(full kernel, 대표:리눅스)은 Lock 구현, 캐시 미스, 캐시 일관성 기능 및 스케쥴링 정책 등에서 확장성을 저해하는 여러 요인으로 인해 성능이 저하되는 것이 여러 연구 논문을 통해 밝혀져 있다. 범용 모노리틱 운영체제인 리눅스는 (그림 1)의 AIM7 벤치마크 실험 결과와 같이 코어 수 증가에 따른 확장성을 지원하지 못하고 있다. 따라서, 매니코어 시스템 환경에서 이러한 문제점을 해결하기 위해 새로운 운영체제의 개발이 요구되며, 새로운 운영체제는 기존의 운영체제를 개선하는 방식과 근본적으로 다시 개발하는 방식 모두가 가능할 것이다.


(그림 1) 리눅스 AIM7 벤치마크(192 코어 시스템) 실험 결과

연구 목표

본 연구에서는 매니코어 시스템에서 응용 프로그램에게 운영체제 서비스를 제공하면서 성능 확장성을 지원하는 멀티커널 기반 분할형 운영체제인 아질리아(Azalea)를 개발한다. 아질리아는 GitHub https://github.com/oslab-swrc/Azalea에 공개하여 누구나 자유롭게 확인, 수정, 배포할 수 있는 형태로 개발되며, 오픈 커뮤니케이션 및 협업을 위한 논의를 촉진하고 매니코어 시스템의 운영체제 및 응용 프로그램을 개발하는 데 도움이 된다. 아질리아는 매니코어 시스템에서 과학 계산 응용, 데이터 집약적 응용, 고성능 파일/네트워크 서버, 클라우드 응용 등을 수행하는데 가볍고, 안전하고, 고성능을 보장할 수 있는 응용 프로그램 수행 환경을 제공하는 것을 목표로 한다.

연구 내용

본 연구에서는 매니코어 시스템에서 성능 확장성 지원을 목표로 응용 프로그램과 운영체제를 공간과 기능을 분할하는 방식에 따라 운영체제 및 응용 공간 분리형(A Type), 운영체제 기능 분리형(B Type), 응용과 커널 기능 결합형(C Type) 분할형 운영체제로 구분하여 연구하였다.


(그림 2) 분할형 운영체제 타입

(그림 2) 에서 A 타입은 제한된 수의 코어 위에 일체형 커널을 수행하도록 하여 운영체제 서비스를 전담하도록 하고, 나머지 코어에서는 응용을 위한 커널 위에서 사용자 어플리케이션을 수행하며 운영체제 기능이 필요할 경우 일체형 커널로부터 운영체제 서비스를 제공받는 형식이다. B 타입은 운영체제의 기능을 세분화하여 특정 수의 코어 위에 운영체제 서비스들을 수행하는 프로세스들을 올리고, 나머지 코어에서는 응용 프로그램을 실행하는 형식이다. C 타입은 응용 프로그램이 응용 프로그램을 수행하는 필요한 운영체제 기능을 포함하여 응용 프로그램이 응용을 위한 커널의 지원하에 디스크, 네트워크 등의 하드웨어에 접근하는 형식이다. 이상과 같이 세 가지 종류의 분할형 운영체제 방식으로 구분하고 각각의 확장성 및 이에 영향을 미치는 요소들을 시뮬레이션하여 분석한 후, 각 분할형 운영체제 방식에 적합한 운영체제 서비스를 제공하기 위한 멀티커널을 구성하였다.

본 연구 초기에는 프로세서 구조 변화와 킬러 응용 프로그램의 등장에 기민하게 대응하기 위해서 유연성(flexibility), 모듈성(modularity)이 우수하며 운영체제 구현에 필요한 구조(mechanism)와 관리 정책(policy)을 분리할 수 있는 마이크로커널 기반 멀티커널 구조로 매니코어 시스템에서 운영체제의 확장성을 시도하였다. 이에 해당하는 B 타입의 경우 운영체제의 기능을 분할하여 서로 다른 코어에 배치하고 운영체제 기능 간의 연동은 메시지 패싱(message passing)을 통하여 수행하는 구조에 적합한 마이크로 커널을 적용하여 응용 프로그램과 운영체제 서비스, 응용 프로그램 간의 간섭을 제거하여 응용 프로그램의 성능을 향상시킬 수 있도록 구성하였다. A 타입의 경우 응용과 운영체제를 분리된 코어에서 수행하도록 하여 응용의 성능이 운영체제에 의해 간섭을 받지 않도록 개발하여 응용의 성능을 최대한 보장할 수 있도록 구성하였다. 제한된 수의 코어에 풀커널(full kernel)를 수행하도록 하여 운영체제 서비스를 제공하도록 하고 나머지 코어에 응용 프로그램을 경량 커널 또는 유니커널에서 수행하도록 하여 응용 프로그램을 수행하는데 코어의 성능을 최대한 활용할 수 있도록 하여 매니코어 시스템에서 운영체제의 확장성을 시도하였다.

이상과 갈이 본 연구에서는 매니코어 시스템에서 성능 확장성을 연구하기 위하여 응용 프로그램과 운영체제를 공간과 기능을 분할하는 방식에 따라 분할형 운영체제를 나누고, 각 분할형 운영체제에 적합한 멀티커널을 연구 개발하였다. 본 연구 1단계 전반부에서는 먼저 운영체제 기능 분리형(B Type) 분할형 운영체제로 마이크로 커널(micro kernel)을 연구 개발하였다. 본 연구 1단계 후반부와 2단계에서는 운영체제 및 응용 공간 분리형(A Type) 분할형 운영체제로 경량 커널(light weight kernel)과 유니커널(unikernel)을 개발하고 적용하여 매니코어 시스템에서 성능 확장성을 연구하였다. 또한 이기종 시스템을 지원하는 요소기술로 멀티커널 운영체제인 솔로스(Solros)를 연구 개발하였다.

운영체제 기능 분리형(B Type) 분할형 운영체제

마이크로 커널 기반 멀티커널 분할형 운영체제

B 타입 형식의 분할형 운영체제를 구성하기 위한 멀티커널로 마이크로 커널 구조를 채택하여 매니코어 시스템에서 운영체제의 확장성을 시도하였다. 마이크로 커널 기반의 운영체제는 모노리틱 커널 기반의 운영체제에 비하여 유연성(flexibility), 안전성(security), 모듈성(modularity) 등이 우수하다고 알려져 있다. 마이크로 커널 구조에서 응용 프로그램과 운영체제 서비스는 운영체제의 기본 메커니즘(mechanism) 부분만 커널 내에 구현된 마이크로 커널 상에서 사용자 모드로 수행된다. 응응 프로그램은 운영체제 서비스를 받기 위하여 특정 수의 코어 위에 수행되는 운영체제 서비스 프로그램과 IPC(Inter-Process Communication)를 통하여 제공받게 된다.


(그림 3) 마이크로 커널 구조

본 연구에서는 마이크로커널 기반 운영체제의 성능 최적화를 위하여 IPC 성능을 향상시키는 방법으로 다이렉트 쓰레드 스위칭(direct thread switching) 기술을 IPC에 적용하였으며 단방향(one-way) IPC의 수행 사이클이 238 사이클로 L4 마이크로커널의 250 사이클과 유사한 성능을 나타내었다. 하지만 마이크로커널 기반의 분할형 운영체제는 모노리틱 기반의 운영체제가 커널 내 단순 함수 호출(function call)로 수행하던 일을 여러 서비스 프로그램들 사이 혹은 서비스 프로그램과 커널 사이의 IPC로 수행하여야 하는 단점을 가지고 있어 확장성의 한계를 나타내었다.

운영체제 및 응용 공간 분리형(A Type) 분할형 운영체제

경량 커널 기반 멀티커널 분할형 운영체제

경량 커널 기반 멀티커널 분할형 운영체제는 A 타입 형식을 기반으로 제한된 수의 코어에 풀커널(full kernel)를 수행하도록 하여 운영체제 서비스를 제공하도록 하고 나머지 코어에 응용 프로그램을 경량 커널에서 수행하도록 하여 응용 프로그램을 수행하는데 코어의 성능을 최대한 활용할 수 있도록 하였다. 경량 커널은 커널의 기능을 최소화함으로써 운영체제의 간섭과 자원의 낭비를 줄일 수 있기 때문에 매니코어 시스템에서 확장성 및 병렬 성능(parallel performance)를 제공할 수 있었다.


(그림 4) 경량 커널기반 멀티커널 분할형 운영체제 구조

본 연구에서는 매니코어 시스템에서 응용 프로그램이 사용할 수 있는 CPU, 메모리 자원이 충분하기 때문에 기존의 자원을 나누어 활용하던 시분할 기법(time sharing)을 적용하는 대신 사용할 자원을 지정해주고 커널의 간섭 없이 할당된 자원을 충분히 사용할 수 있는 공간분할 기법(space sharing)을 적용하여 커널의 간섭과 자원의 낭비를 최소화하였다. 경량 커널의 응용 프로그램에서 발생하는 시스템 콜은 풀커널(full kernel)에서 수행하고 결과를 경량 커널의 응용 프로그램에서 사용하는 입출력 오프로드 방식을 적용하였다.

경량 커널 기반 멀티커널 분할형 운영체제의 확장성을 실험하기 위하여 분할된 데이터 접근과 병렬성이 높은 워크로드를 가지는 이미지 검출(edge detection) 응용 실험을 수행하였다. 매니코어 시스템을 위한 테스트 베드는 4개의 제온파이(Xeon Phi) (800 코어)와 1개의 제온(Xeon) (12 코어)로 구성되었으며, 제온파이에서 이미지 검출 응용 프로그램이 수행되고 제온에서 풀커널이 수행되어 파일 I/O 오프로드를 처리하였다. 이미지 검출 응용 확장성 실험 결과, 코어 수가 증가함에 따라 확장성을 지원하는 것을 확인하였다. 하지만, 경량 커널에서는 하나의 커널을 응용프로그램들이 공유해서 사용하기 때문에 커널 자료구조에 대한 자원 경쟁이 여전히 남아있다. 또한, 사용자 공간과 커널 공간이 분리되어 있어서 문맥교환시 데이터를 전달하고 컨텍스트 유지를 위해 레지스트리 값을 저장/복원하는데 비용이 발생하는데 이러한 추가적인 비용은 전체적인 시스템 성능을 저해하였다.


(이미지 검출 실험 결과)

(이미지 검출 실행 화면)
(그림 5) 이미지 검출 응용 프로그램을 통한 확장성 실험 결과

유니커널 기반 멀티커널 분할형 운영체제

A 타입 형식을 기반으로 하는 유니커널 기반 멀티커널 분할형 운영체제는 제한된 수의 코어에 풀커널(full kernel)를 수행하도록 하여 운영체제 서비스를 제공하도록 하고 나머지 코어에 응용 프로그램을 유니커널 형식으로 수행하도록 하여 응용 프로그램을 수행하는데 코어의 성능을 최대한 활용할 수 있도록 하였다. 유니커널 기반 멀티커널 분할형 운영체제는 응용 프로그램이 수행되는 유니커널(Azalea-unikernel), POSIX 운영체제 서비스 환경을 지원하는 풀커널(full Kernel), 유니커널을 수행하는 데 필요한 매니코어 시스템의 코어 및 메모리 등 자원 관리를 담당하는 아질리아 매니저(Azealea manager)로 구성된다.


(그림 6) 아질리아 구조도

응용 프로그램을 수행하기 위하여 플커널과 유니커널을 기반으로 멀티커널로 구성되된 분할형 운영체제 아질리아는 유니커널은 페이지 테이블, TCB(Thread Control Block), 타이머(timer) 관리 기능을 개선하여 빠른 부팅 시간을 제공하며, 응용프로그램에 필요한 최소한의 기능만을 포함하여 실행 이미지 용량이 작기 때문에 이동과 복사가 용이하며, 하나의 프로세스 실행만 가능하기 때문에 다른 프로세스 간의 자원 경쟁이 발생하지 않아 고성능을 제공할 수 있다. 또한, 응응 프래그램이 풀커널로부터 운영체제 서비스를 제공받기 위하여 응용 프로그램에서 발생하는 입출력(I/O) 요청을 병렬 가속 처리할 수 있도록 기능을 개선하여 고성능을 제공할 수 있었다.

  • 유니커널(Azalea-unikernel)

유니커널 기반 멀티커널 분할형 운영체제는 매니코어 시스템에서 응용 프로그램을 수행하는데 운영체제의 간섭 없이 코어의 성능을 최대한 활용하기 위하여 유니커널 형식으로 응용 프로그램을 수행한다. 유니커널(Azalea-unikernel)은 응용 프로그램 실행에 필요한 최소한의 기능만을 포함하여 실행 이미지 용량이 작고 실행이 빠르며, 하나의 프로세스 실행만 가능하기 때문에 다른 프로세스 간의 자원 경쟁이 발생하지 않는다. 또한, 부팅 시간을 최적화하기 위해 페이지 테이블, TCB(Thread Control Block), 타이머(timer) 관리 기능을 개선하여 메모리 크기와 상관없이 일정하고 빠른 부팅 시간(158.38 ms @4G ~ 164.81 ms @128G)을 제공한다.

아질리아 유니커널은 응용 프로그램과 커널이 같은 주소 공간을 사용하기 때문에 응용과 커널간 컨텍스트 스위치 오버헤드가 발생하지 않으며, 또한 시스템콜이 함수 호출 형태로 처리되기 때문에 리눅스 대비 7.5배 향상된 성능을 제공한다. (그림 7)은 getpid() 시스템콜을 10,000번 실행하였을 때 아질리아 유니커널(syscall / call)과 리눅스 및 아질리아 경량 커널의 성능 결과를 보여준다.


(그림 7) getpid() 시스템콜 사이클 비교

운영체제 내부 활동으로 인해 응용 프로그램 수행을 방해(interference)하는 OS 노이즈의 경우 아질리아 유니커널이 리눅스에 비하여 간섭없이 응용 프로그램을 수행할 수 있는 환경을 제공한다. (그림 8)과 (그림 9)에서 대표적인 OS 노이즈 측정 프로그램인 FTQ(fixed time quanta), FWQ(fixed work quanta), Hourglass의 실험 결과를 보면 리눅스는 잦고 큰 OS 노이즈를 나타내는 데 비해 아질리아 유니커널은 OS 노이즈가 거의 나타나지 않음을 알 수 있다.


(그림 8) FTQ 및 FWQ 벤치마크를 통한 OS 노이즈 비교


(그림 9) Hourglass 벤치마크를 통한 OS 노이즈 비교

  • 입출력 오프로드(I/O offload)

입출력 오프로드는 응응 프래그램이 풀커널로부터 운영체제 서비스를 제공받기 위하여 응용 프로그램에서 발생하는 입출력(I/O) 요청을 풀커널에 전달하여 처리하는 방식으로 본 연구에서는 응용 프로그램에서 발생하는 입출력 요청을 병렬 가속 처리가 가능할 수 있게 기능을 개발하였다. 입출력 오프로드는 POSIX(Portable Operating System Interface)기반 시스템콜 처리를 위한 기능을 지원한다. 대상은 일반 응용 프로그램에 실행에 필요한 시스템콜 46개와 대상 벤치마크 응용 프로그램인 AIM7(AIM Multiuser Benchmark) 실행에 필요한 시스템콜 66개를 기반으로 총 59개를 선정하여 개발하였다.

(표 1) 시스템콜 지원 리스트

솔로스(Solros): 이기종 시스템 기반 멀티커널 분할형 운영체제

솔로스(Solros: A Data-Centric Operating System Architecture for Heterogeneous Computing)는 빠른 호스트 프로세서(host processor), 느리지만 대규모의 병렬 코프로세서(co-processor), 빠른 I/O 장치로 구성된 이기종 시스템을 위한 새로운 운영체제이다. 코프로세서의 I/O를 처리하는 운영체제 서비스는 호스트의 운영체제에 위임한다.

솔로스의 테스트베드는 호스트 프로세서로 제온, 코프로세서로 제온 파이(Xeon Phi), I/O 장치로 NVMe SSD로 구성하였다. 특히, 제온 파이 코프로세서에서 실행되는 전송, 파일 시스템 및 네트워크 서비스의 세 가지 핵심 운영체제 서비스(Phi-Solros)를 개발하였으며 제온 파이 코프로세스에서 실행되는 기본 리눅스 커널(Phi-Linux)과 비교하여 상당한 성능 향상을 보였다. 솔로스는 파일 시스템 및 네트워크 작업의 처리량을 각각 19배 및 7배 향상시켰으며, 또한 두 가지 실제 응용 프로그램으로 텍스트 인덱싱의 경우 19배 및 이미지 검색의 경우 2배의 성능을 나타내었다. 솔로스 연구는 본격적인 아질리아 연구 이전에 선행 연구 활동으로, 리눅스를 활용하여 멀티 커널 기반 운영체제 연구의 결과이다.


(그림 10) 솔로스 구조와 호스트 및 코프로세스 중심 구조 비교

분할형 운영체제를 위한 전력 캡핑

일반적인 전력 캡핑 기술들은 전통적인 OS들에서 쓰이는 모노리틱 커널을 전제하고 있으며, 분할형 운영체제의 목적과 특성을 고려하지 않고 설계되어있다. 다음에 나열하는 특징으로 인해 기존의 전력 캡핑 구조를 그대로 분할형 운영체제에 적용하는것은 바람직 하지 않다.

  • 분할형 운영체제는 커널의 경량화와 작업 처리 시간의 단축을 위해 각 경량화 커널들을 HW를 독점하여 사용하며, 이를 통해 응용 실행 시 컨텍스트 스위칭을 최소화 하는 정책들을 사용하고 있다. 하지만 idle injection을 위해 idle thread를 별도로 생성하여 사용하는 구조는 컨텍스트 스위칭을 최소화 한다는 정책과 대치된다.

  • 리눅스 커널의 전력 캡핑 모듈은 중앙 관리자와 같은 역할을 수행한다. 시스템에서 사용되는 모든 자원 사용량을 모니터링 하고 각 코어에 전력 제어 명령을 내리는 방식으로 동작한다. 따라서 코어의 수가 증가할 수록 통신을 위한 오버헤드가 증가하는 특징을 가진다.

이러한 문제를 고려하여 이 연구에서는 스케쥴러와 결합된 분산 관리 방식의 전력 캡핑 구조를 제안하였다.

  • 분할형 운영체제를 위한 전력 캡핑의 구조

분할형 운영체제를 위한 IPoCap은 분산 관리 구조를 채택하여, 각각의 코어에서 직접 전력 상황을 확인하고, 전력 제어 수준을 결정하여 소모 전력을 제어하도록 구현하였다. 아래 그림은 전력 캡핑의 구성 요소들이 어떻게 연결되어 동작하는지 보여준다.

(0) 사용자는 시스템의 전력 상한을 설정할 수 있다. (1) 프로세서의 RAPL 레지스터에서 현재 전력 소모량을 주기적으로 파악한다. (2) 설정된 전력 상한선과, 측정된 전력 소모량을 통해 캡핑의 필요성을 파악하고, 필요시 전력 제어를 시작한다. (3) 전력 모델을 통해 전력 상한을 넘지 않으면서 성능 저하를 최소할 수 있는 idle injection 비율을 계산한다. (4) 직접 스케줄러에서 injection 기능을 수행하여 전력 소모를 조절한다.

아래 그림은 iPoCap의 분산 관리 구조를 설명하는 그림이다. 각 코어에서 실행되는 스케쥴러는 자체적으로 전력 소모 수준을 파악하고 injection 비율을 계산하도록 구현하였다. 별도의 idle thread를 생성하지 않으며, 스케쥴러에서 직접 idle injection을 수행하여, 전력 캡핑 오버헤드를 줄이고자 하였다.

  • 전력 제어의 정확도

이 연구에서는 분할형 운영체제에서 전력 캡핑 프로토타입을 구현하여, 전력 제어의 정확도를 평가하였다.

구현한 전력 캡핑은 평균적으로 107.2W를 소모하는 워크로드를 100W의 전력 상한이 설정된 환경에서 실행하였을 때 평균 0.81%의 오차, 최대 1.10% 의 전력 제어 오차를 보였다.

연구 결과

192 코어 시스템 및 1K+ 매니코어 시스템에서 유니커널 기반 멀티커널 분할형 운영체제인 아질리아와 리눅스의 성능 및 확장성 실험 결과를 제시한다. 아질리아는 AIM7 성능 실험 결과로 192 코어 시스템에서 리눅스 대비 69% 성능 개선을 나타내었으며 1K+ 매니코어 테스트 베드 시스템에서 리눅스 대비 625% 성능 개선을 보였다. 또한, 멀티커널 운영체제인 mOS와 성능 및 확장성 비교 실험 결과를 제시한다. 아질리아는 AIM7 성능 실험 결과로 56 코어 시스템에서 fserver workfile의 경우 mOS에 비해 140% 높은 성능을 나타내었으며, shared workfile의 경우 mOS에 비해 172%의 높은 성능을 나타내었다.

현재 존재하는 매니코어 시스템이 없기 때문에 운영체제의 성능 및 확장성 실험을 위해 제온 또는 제온 파이를 이용하여 매니코어 테스트 베드를 구성하여 실험하였다. 경량 커널 기반 멀티커널 분할형 운영체제의 경우 제온 파이(KNC, KNL)을 이용하여 매니코어 테스트 베드 시스템을 구성하여 실험하였으며, 이후 유니커널 기반 멀티커널 분할형 운영체제의 경우 다수의 제온 시스템을 Infiniband 상에서 NFS over RDMA로 구성하여 매니코어 테스트 베드로 활용하여 실험하였다.

그리고, 다수의 제온 시스템을 이용하여 매니코어 테스트 베드로 구성하는데 있어서 데이터 전송 성능을 높이기 위한 방안으로 RDMA기반 RPC를 개발하였다. RPC는 네트워크 카드의 성능을 충분히 활용하기 위해서 여러 개의 큐페어 (QP)를 활용하는 방안을 채택하였으며, 필요시에만 큐페어 (QP)를 공유하도록 하고 소프트웨어 컴바이닝 기법을 활용하여 쓰레드간 컨텐션을 최소화하도록 하였다. 그리고 RPC의 스케일러빌리티 향상을 위해 동적 스케줄링을 연구하고 하드웨어 자원의 할당이 가능한 서버 측면에서의 스케줄링 기법을 제안하였다. 또한 도어벨 배칭 기법과 선택적 시그널링 기법을 활용하여 RDMA 성능을 최적화하였다. 인메모리 키밸류 스토리지 방식의 MICA(Memory-store with Intelligent Concurrent Access)에 프로토타입으로 개발한 RPC를 포팅하여 기존의 RDMA를 사용하는 키밸류 시스템 HERD가 포팅된 MICA 대비 성능 비교 결과를 보면, 개발한 RPC는 큐페어(QP)의 개수를 증가시킬수록 성능이 향상하였으며, 큐페어(QP)가 4개일 때 기존 HERD 대비 1.7배의 성능을 나타내었다. 하지만 매니코어 테스트 베드에 적용하기 위해서는 기존 NFS over RDMA 프로토콜 스택에 개발한 RPC를 적용하여야 하는데 디버깅 도구 등의 한계로 인해 적용하지는 못하였다.

192 코어 시스템에서 아질리아 성능 및 확장성 실험 결과

192 코어 시스템에서 아질리아의 성능 및 확장성 실험을 위해 AIM7 벤치마크를 이용하여 리눅스와의 성능을 비교하였다. 실험환경은 인텔 x86 Xeon E7-8890 8소켓 (192 코어)을 사용하였으며 디스크는 SSD (ext4)를 사용하였다. 아질리아는 실험 결과 리눅스는 일정 코어에서 성능이 정체됨을 보였고 아질리아는 성능 확장성 지원함을 확인하였다. (그림 11)에서 AIM7 성능실험 결과 아질리아는 리눅스 대비 69% 성능 개선이 있음을 보인다.


(그림 11) AIM7 벤치마크 성능실험 (@x86 192 코어)

1K+ 매니코어 시스템에서 아질리아 성능 및 확장성 실험 결과

현재 존재하는 1K+ 매니코어 시스템이 없기 때문에 1K+ 테스트 베드 시스템을 구성하여 아질리아와 리눅스의 성능 및 확장성을 비교하는 실험을 수행하였다. 1K+ 테스트 베드 시스템(총 920 코어)을 구성하기 위하여 응용 프로그램 수행을 위해 인텔 x86 Xeon E7-8890 8소켓 (192 코어) 2대, 인텔 x86 Xeon E7-8870 8소켓 (120 코어) 4대, 그리고 풀커널을 수행하기 위해 인텔 x86 8176 2소켓 (56코어) 1대를 사용하였으며 풀커널의 디스크(SSD, ext4)에 대한 입출력은 Infiniband 상에서 NFS over RDMA를 사용하였다.

본 연구에서는 아질리아와 리눅스의 성능 및 확장성을 측정하기 위한 벤치마크 프로그램으로 AIM7 벤치마크를 이용하였다. AIM7 벤치마크는 단일 시스템에서 성능을 측정하는 프로그램이기 때문에 다수의 시스템으로 구성된 1K+ 테스트 베드 시스템에서 수행될 수 있도록 수정되었다. 수정된 AIM7 벤치마크는 AIM7 벤치마크의 구조를 벤치마크 수행단위인 태스크(task)를 관리하는 부분과 실제 태스크를 수행하는 부분으로 나누어 구성하였다. 태스크를 관리하는 부분은 풀커널에서 수행되며 각 유니커널에 태스크들을 할당하고 태스크 시작과 종료에 대한 동기화를 담당한다. 태스크를 수행하는 부분은 유니커널에서 수행되며 태스크의 작업(job)이라고 하는 하위 테스트 세트를 무작위 순서로 실행한다.

1K+ 테스트 베드 시스템에서 실험 결과, 리눅스는 일정 코어에서 성능이 정체됨을 보였고 아질리아는 코어가 증가함에 따라 성능 확장성을 나타내었다. (그림 12)에서 아질리아는 리눅스 대비 AIM7 성능실험 결과 350% 성능 개선을 보였다. 그리고, 풀커널에 대한 디스크 입출력 방식 개선(NFS(인텔 Xeon E5-2697 (36 코어)) 1대 및 SSD 2개 추가)을 통해 리눅스 대비 625% 성능 개선이 가능함을 보였다.


(그림 12) AIM7 벤치마크 성능실험 (@x86 920 코어)

아질리아와 mOS 성능 및 확장성 비교 실험 결과

56코어 시스템에서 아질리아와 멀티커널인 mOS의 성능 및 확장성 비교하기 위해 AIM7 벤치마크를 이용하여 실험하였다. 실험환경은 인텔 x86 Xeon Platinum 8176 CPU @ 2.10GHz 2소켓 (56 코어)을 사용하였으며 디스크는 SSD (ext4)를 사용하였다. 실험 결과 AIM7의 compute workfile의 경우 mOS가 아질리아 보다 조금 나은 성능을 나타내었으며, fserver workfile의 경우 아질리아가 mOS에 비해 140% 높은 성능을 나타내었으며, shared workfile의 경우 아질리아가 mOS에 비해 172%의 높은 성능을 나타내었다.


(a) compute workfile

(b) fserver workfile

(c) shared workfile
(그림 13) 아질리아와 mOS의 AIM7 벤치마크 성능 비교 실험

연구 성과

본 연구에서는 매니코어 시스템에서 응용 프로그램에게 운영체제 서비스를 제공하면서 성능 확장성을 지원하는 멀티커널 기반 분할형 운영체제인 아질리아(Azalea)를 개발하였다. 본 연구의 개발 성과는 오픈 커뮤니케이션 및 협업을 위한 논의를 촉진하고 매니코어 시스템의 운영체제 및 응용 프로그램을 개발하는 데 도움이 되고자 한다. GitHub (https://manycoreos.github.io)에서 프로젝트 소개 및 사용방법 등을 안내하고 GitHub (https://github.com/oslab-swrc/Azaela)에 코드가 공개되어 누구나 자유롭게 확인, 수정, 배포할 수 있다.

본 연구에서 "Solros: A Data-Centric Operating System Architecture for Heterogeneous Computing)"(EUsoSys 2018), "Multi-kernel based Scalable Operating System for Manycore Systems (FGIT 17)" 및 "Azalea unikernel IO offload acceleration (ICTC 2020)" 등 국제 논문 11편, 국내 논문 10편이 게재되었다. 특허는 국제 특허 1건 (Method for scheduling threads in a many-core system based on a mapping rule between the thread map and core map) 등록되었으며, "Method and apparatus for offloading file I/O based on remote direct memory access using unikernel" 등 국제 특허 5건 출원과 국내 특허 10건이 출원되어 등록 진행 중이다

활용 분야

멀티커널 기반 분할형 운영체제는 데이터 센트릭 HPC용 운영체제로 활용하여 이미지 프로세싱, 그래프 처리, 딥러닝과 같은 데이터 집약적인 컴퓨팅에 활용하거나 대규모/빈번한 데이터를 기반으로 빠르고 많은 처리를 요구하는 인메모리 DB 및 100G를 지원하는 NIC의 커널 기술로 활용할 수 있으며 매니코어 기반의 고성능 컴퓨터와 연계된 클라우드 서비스를 제공하는 데 활용할 수 있다. 특히, 클라우드 서비스에 있어서 고객의 수가 크게 증가하더라도 성능 확장성을 보장할 수 있다. 즉, 멀티커널 기반 분할형 운영체제의 유니커널은 하이퍼바이저와 게스트 OS가 필요 없으므로 VM보다 가볍고ᅠ빠르게 구동하여ᅠ가상화 성능을 향상시킬 수 있으며 컨테이너와 달리 공유되는 호스트 OS가 없으므로 안전한 응용 실행환경을 보장할 수 있다. 관련 내용은 https://youtu.be/df1-O-Zm1is에 있다. 그리고 클라우드 네이티브 구조에서 최소한의 요소로 마이크로서비스를 구성하고 빠르고 안전하게 실행할 뿐만 아니라 수요가 늘어난 특정 기능의 마이크로서비스에 대해 확장성을 제공할 수 있다.