홈 > 프로젝트 > 멀티/매니코어 시스템 한국어 / English
멀티/매니코어 시스템을 위한 운영체제
노드 하나당 코어 수가 지속적으로 증가하면서, 많은 수의 프로세스와 쓰레드를 완벽하게 병렬 처리하고 확장성을 제공하는 것이 중요해졌습니다.
고 처리량 I/O를 위한 동적 코어 친화도
코어 친화도는 주어진 태스크가 동작할 수 있는 코어 집합을 정의합니다. 우리 연구는 코어 친화도를 두 가지로 분류합니다. (1) 입출력 장치와 해당 입출력 장치의 인터럽트를 처리하는 코어 집합 사이의 맵핑을 나타내는 인터럽트 코어 친화도와 (2) 프로세스와 해당 프로세스를 실행하도록 허용 된 코어 집합 사이의 맵핑을 나타내는 프로세스 코어 친화도가 그 분류입니다. 우리 연구실에서는 코어 친화도가 네트워크 성능에 미치는 영향을 보여주었으며 [P2S22008], 캐시 레이아웃, 통신 강도 및 코어의 부하를 기반으로 커널 수준에서 네트워킹 프로세스의 최상의 코어 친화도를 결정하는 동적 코어 친화도 메커니즘을 제안하였습니다 [HotI2009].
우리 연구실에서는 동적 코어 친화도 연구를 빅 데이터 분석 프레임워크로 확장하고 있습니다. Hadoop 쓰레드는 네트워크 입출력, 디스크 입출력 및 연산 작업의 조합을 수행하도록 되어습니다. HDFS의 경우, 대부분의 작업은 네트워크 입출력과 디스크 입출력을 집중적으로 수행합니다. 따라서 입출력에 적절한 코어 집합에서 HDFS 쓰레드를 실행하는 것이 유리합니다 [ParCo2014]. 또 우리 연구실 에서는 입출력 시스템 호출과 이벤트 핸들러를 위해 코어를 파티셔닝하여 멀티/매니코어 시스템에서 네트워크와 스토리지 입출력 작업에서 지역성을 향상시키는 연구를 진행중입니다. Fine-grained 매니코어 파티셔닝을 구현하기 위하여 유저 레벨 프로세스로부터 시스템 호출을 분리하였습니다 [CCPE2020, Cluster2021].
MPI 노드 내 통신을 위한 리눅스 커널 모듈
LiMIC은 멀티 매니코어 시스템에서 고성능 MPI 노드 내 통신을 가능하게 합니다. LiMIC은 공유 메모리 영역으로의 메시지 복사와 공유 메모리 영역으로부터의 메시지 복사를 하지 않음으로써 노드 내 통신에서 좋은 성능을 보입니다. 또한 LiMIC은 송신 프로세스에서 수신 프로세스로 메시지의 직접 복사가 가능하게 해줍니다. 결과적으로 LiMIC은 불필요한 복사 작업을 제거하고 캐시 효율성을 높여줍니다. LiMIC은 내부적인 디자인에 따라 LiMIC1과 LiMIC2로 구분됩니다.
LiMIC1은 일반적인 커널 접근 인터페이스 [ICPP2005]를 제공하는 독립적인 통신 모듈입니다. LiMIC1 모듈은 내부적으로 송신, 수신 및 통신 완료 큐들을 관리하기 때문에 MPI 라이브러리에서 노드 내 통신 채널을 사용하기로 결정이 되면 단순히 인터페이스만을 호출하여 LiMIC1 모듈이 노드 내 통신 간 메시지 송수신을 처리하도록합니다. 하지만 MPI 라이브러리와 독립된 메시지 큐들을 사용함으로 인해 내부 큐들을 위한 동기화와 같은 여러 까다로운 문제를 발생시킵니다.
LiMIC2는 경량 프리미티브를 제공하여 다른 프로세스 간 메모리 매핑 기능을 제공합니다 [Cluster2007, ICPP2008]. LiMIC2 커널 모듈은 MPI 라이브러리에 메모리 매핑과 데이터 복사 인터페이스를 제공합니다. LiMIC2 경량 프리미티브는 내부 큐와 노드 간 프로세스가 공유하는 자료 구조가 필요하지 않습니다. 그러므로 LiMIC2 경량 프리미티브는 동기화와 MPI 메시지 매칭과 같은 오버헤드가 발생하지 않아 MPI 프로세스들의 병렬성을 증가시킬 수 있습니다. 많은 수의 코어를 가지는 매니 코어 프로세서들이 등장함에 따라, 현대 메모리 시스템 및 인터커넥트가 제공하는 특징을 활용하여 LiMIC2의 확장성을 제공하기 위해 연구를 진행 중입니다 [EuroMPI2017, SUPE2023]. 또한, 엑사스케일 컴퓨팅 환경에서의 불균형 문제를 해결하고자 합니다 [SC2021].