Multikernel은 가상화 없이 여러 커널을 실행할 수 있는 훌륭한 유틸리티입니다.

키 포인트:
  • 멀티커널 리눅스는 베어메탈 환경에서 독립적인 커널들을 동시에 실행할 수 있도록 해줍니다.
  • 리눅스 7.0 커널을 기반으로 하며, CONFIG_MULTIKERNEL을 사용하고 현재 x86_64 아키텍처를 지원합니다.
  • 가상화(KVM 하이퍼바이저)의 오버헤드를 제거하여 컨텍스트 전환 속도를 2,5배 향상시킵니다.
  • 컨테이너와 달리 인스턴스는 커널을 공유하지 않으므로 장애나 취약점이 전체 서버에 영향을 미치는 것을 방지합니다.
  • Kerf 도구를 Lazy CMA 및 DAXFS 모듈과 함께 사용하여 리소스를 동적으로 관리하고 Docker 이미지를 부팅할 수 있습니다.

멀티커널 리눅스

작년에 저희 블로그에서 틱톡 개발사인 바이트댄스가 제안한 Parker(PARTitioned KERnel) 라는 유틸리티에 대해 논의한 적이 있습니다. Parker 는 여러 개의 리눅스 커널을 동시에 실행할 수 있도록 하는 실험적인 기술입니다. 그리고 1년 반이 조금 지난 지금, 이 프로젝트의 새로운 공개 유틸리티인 "Multikernel Linux(mklinux-v7.0-mk2)"가 출시되었습니다.

이 개발은 단일 물리적 서버 내에서 여러 개의 독립적인 커널 인스턴스를 동시에 실행할 수 있도록 하는 특수한 리눅스 커널 변형을 도입합니다 . 베어메탈에서 직접 동작하는 이 기술은 하이퍼바이저나 가상화 계층이 전혀 필요 없게 하여 각 인스턴스가 할당된 메모리, CPU 및 장치에 직접 접근할 수 있도록 합니다.

바이트댄스-파커-멀티커널
관련 기사 :
Parker: 가상화 없이 여러 Linux 커널을 실행할 수 있는 새로운 기술

최근 출시된 Linux 7.0 커널을 기반으로 하는 이 프로젝트는 CONFIG_MULTIKERNEL 구성 매개변수를 통해 이 기능을 활성화할 수 있도록 합니다 . 이 옵션을 비활성화하면 결과 커널은 표준 Linux 7.0과 완전히 동일하며 동작합니다. 현재 이 첫 번째 버전(v7.0-mk2)은 x86_64 아키텍처만 지원하며 기존 가상화와 컨테이너 격리 간의 성능 및 보안 격차를 해소하도록 설계되었습니다.

성능 저하 없이 격리

가상화의 가장 큰 문제는 하이퍼바이저로 인해 발생하는 성능 저하입니다 . 이와 대조적으로 멀티커널 리눅스는 가상 머신 종료 전환 , 2차 메모리 변환, 그리고 장치 모델로 인해 발생하는 오버헤드를 제거합니다.

Xeon Gold 5418Y 프로세서(Sapphire Rapids)에서 테스트 후 공개된 성능 데이터에 따르면 , 멀티커널 시스템은 KVM 게스트에 비해 실행 속도가 크게 향상된 것으로 나타났습니다. 예를 들어, 프로세스 간 컨텍스트 전환 속도는 2,5배 빨라졌고, 파이프 지연 시간은 절반 이상(2,18배) 감소했으며, 읽기 및 쓰기 작업과 같은 기본 시스템 호출 응답 시간은 25% 이상 단축되었습니다.

기존 Docker 컨테이너와 비교했을 때 , 멀티커널은 컨테이너들이 동일한 호스트 커널을 공유하기 때문에 커널 수준의 취약점, 패닉 또는 내부 잠금 포화 현상이 발생할 경우 모든 테넌트에 영향을 미치므로 탁월한 보안성을 제공합니다. 멀티커널 생태계에서는 각 환경이 독립적인 커널을 사용합니다 . 즉, 하나의 인스턴스에 심각한 장애가 발생하더라도 다른 인스턴스는 영향을 받지 않고 계속 작동하므로, 웹 서버부터 고강도 AI 학습 워크로드(머신러닝)에 이르기까지 모든 것을 동일한 하드웨어에서 실행하기에 이상적인 격리된 환경을 보장합니다.

Kerf를 이용한 동적 할당 및 오케스트레이션

멀티커널 리눅스는 호스트 커널을 사용하여 대규모 리소스 풀 (CPU, RAM, PCI 장치)을 관리합니다 . 기존의 장치 트리 구조(/sys/fs/multikernel/에서 접근 가능)를 활용하여 커널은 이 리소스 풀을 분할하고 네이티브 kexec_file_load() 서브시스템을 통해 "자식 커널"을 실행합니다. 리눅스의 핫플러그 기능을 통해 이러한 리소스는 서버 재부팅 없이 인스턴스 간에 동적으로 이동할 수 있으므로 예측 가능하고 실시간으로 조정 가능한 성능을 보장합니다.

이러한 생태계를 체계적으로 관리하기 위해 개발자들은 Kerf 명령줄 도구를 도입했습니다 . 이 유틸리티는 보완적인 오픈 소스 모듈을 활용하여 인스턴스의 전체 수명 주기를 관리합니다 . 그중 하나인 Lazy CMA는 사전 부팅 구성 없이 런타임에 연속적인 물리적 메모리를 할당합니다.

또 다른 핵심 요소는 DAXFS라는 모듈입니다. 이 모듈을 통해 인스턴스는 메모리에서 직접 파일 시스템을 공유할 수 있습니다. 덕분에 Kerf는 에뮬레이션 계층 없이 Docker 컨테이너 이미지 내부에서 자식 커널을 직접 부팅하고, 해당 파일 시스템을 활용하며, 데이터 복사 없이 메모리 내 디스크립터를 사용하여 네트워크 상호 연결을 수행할 수 있습니다.

이번 첫 번째 릴리스는 5단계 페이징 아키텍처와 활성 KASLR 환경에서 집중적인 안정성 테스트를 통과했으며, 자식 커널이 충돌하더라도 리소스 복구가 완전히 안전하다는 것을 입증했다는 점 을 언급할 가치가 있습니다 .

멀티커널 리눅스는 시스템 잠금으로 인해 충돌하는 워크로드(예: 동일한 캐시에서 다수의 연결 해제 또는 이름 변경 프로세스)를 물리적 프로세서 소켓에 맞춰 정렬된 별도의 커널로 분산시킬 수 있도록 함으로써, 단일 모놀리식 커널이 부과하는 성능 장벽을 뛰어넘는 확장성을 보여주며, 서버 통합 및 고성능 클라우드 컴퓨팅의 새로운 시대를 열었습니다.

마지막으로, 더 자세한 내용을 알고 싶으시다면 다음 링크에서 확인하실 수 있습니다.


Google에서 선호하는 검색 엔진으로 추가