- 그 동안의 시스템 소프트웨어, 응용 소프트웨어는 싱글 또는 멀티코어(~16개 코어) 시스템에서 개발되어 수십에서 수백코어로 구성된 매니코어 시스템에서는 코어 수 증가에 따른 소프트웨어 성능이 증가하지 않는 한계가 있음
※ 리눅스 시스템 소프트웨어 경우, 120코어 시스템에서 성능 확장성 실험 결과 코어 수 증가에 따라 성능이 증가하지 않은 현상이 있음
- 데이터 처리 응용 경우, 스케일업(scale-up) 접근 방식보다 비용과 확장성이 우수한 스케일아웃(scale-out) 접근 방식으로 진행되어 하둡, 맵리듀어스 등 관련 오픈소스도 발전을 하였음. 하지만 대규모 데이터 환경에서는 데이터의 이동 등으로 네트워크의 병목현상으로 확장성 문제가 대두되어 다시 스케일업 방식으로 고려하고 있음
- 2004년부터 프로세서 주파수 증가 한계로 코어 수를 늘리는 방식의 고성능 프로세서를 개발하여, 인텔은 Ice Lake 프로세서는 28코어, Sapphire Rapids 프로세서는 56코어까지 제공할 계획임. 이러한 많은 코어의 CPU 소켓을 최대 8개까지 NUMA(Non-Uniform Memory Access) 방식으로 연결하여 한 시스템에 80코어, 120코어, 192코어, 224코어 시스템이 출시되어 대중화되고 있음.
※ 최근 56코어, 80코어 시스템을 다양한 응용환경에 활용하고 있는 상황임
- 따라서 매니코어 시스템에서의 성능 확장성 한계를 극복하기 위한 요소기술들을 연구개발하였고, 매니코어 시스템을 활용하여 높은 성능을 내고자 하는 다양한 소프트웨어 분야에 기술이전 대상기술의 기법과 노하우를 적용, 활용하고자 함
※ 연구한 요소기술은 스케일러블 잠금 기법, Lockfree 기법, 스케일러블 파일 시스템 기법, 스케일러블 네트워킹, 매니코어 스케쥴링 기법, 코어 친화도, 매니코어 자료구조, 매니코어 기반 그래프처리 엔진 등
- 하루에 25억GB 데이터가 생산되고 있으며, 2025년에는 연간 163ZB에 이를 것으로 추산되고 있음. 이러한 빅데이터는 사물, 현상, 사건, 인간관계 등을 기록한 데이터로 21세기 원유로 불리고 수집, 가공, 분석 등을 통해 높은 가치와 부를 창출하는 자원으로 여겨지고 있음
- 대규모 데이터 분석의 프로세스는 데이터 수집, 데이터 가공, 데이터 분석, 자료 해석과 데이터 시각화로 구성되며, 관련 오픈소스 플랫폼 기술도 많이 개발되어 있음
- 매일 대규모로 발생되는 데이터를 신속하게 처리, 분석하는 기술이 필요하여, 분산해서 병렬처리하는 스케일아웃 방식의 프레임워크 기술도 등장하였지만, 데이터량이 많아짐에 따라 네트워크 병목으로 성공적으로 응용 서비스에 적용된 사례가 미진함
- 따라서 대규모 데이터를 스케일업 방식으로 병렬처리하는 방식도 요구되고 있고, GPGPU뿐만 아니라 많은 코어를 갖고 있는 매니코어 CPU 소켓 기반 매니코어 시스템도 대중화되고 있어 이들 시스템을 활용한 대규모 데이터 가속처리 기술이 필요함
- 본 기술을 활용하여 대규모 데이터를 기존 방식보다 신속하게 그리고 반복처리횟수를 늘려 보다 정확한 데이터 처리, 분석으로 인한 대규모 데이터로부터 얻고자 하는 정보를 보다 빠르고 신속하게 구하고자 함
- 특히, 본 기술을 코로나 바이러스 진단을 위한 유전체 데이터 처리 SW 개발에 적용하여 신속하게 새로운 변이 바이러스에 대한 진단 화합물 시약 개발에 활용하고자 함
- 기술이전 대상 기술은 아래 매니코어 요소 소프트웨어 기술 중에 빨간색 원으로 표시한 대규모 데이터 병렬처리 엔진 기술, 네트워크 가속기술 및 매니코어 기반 CPU 병목원인 탐지 도구 기술 등임
o 매니코어 요소 소프트웨어 기술들은 다음과 같은 기술적 특징과 장점을 갖고 있음
- 매니코어 잠금 기술 : 락을 기다리는 대기자가 단순히 busy-waiting을 하는게 아니라 다양한 정책에 따라 대기자의 순서를 바꿀 수 있는 특징이 있으며, 매니코어 시스템의 NUMA 구조를 고려하여 대기자 순서를 변경하도록 개발한 락 알고리짐임. 192코어, mosbench 벤치마크에서 1.6배 성능 향상을 보임
- 스케일러블 파일 시스템 기술 : 매니코어에서 리눅스 EXT4 파일 시스템의 성능을 향상시키는 기술로, 파일 시스템의 저널 레이어의 병목을 개선함. 코어별 독립된 저널 구조에서 충돌 시 일관성을 보장하는 기법을 제공하며, 80코어, AIM7 벤치마크에서 기본적인 기능에 비해 26% 성능 향상을 보임
- 매니코어 스케줄러 기술 : 시분할 (time-sharing) 기법보다 공간 분할 (space-sharing) 개념의 스케줄러 기술임. 멀티코어 환경보다 더 많은 코어 자원을 가지고 있는 매니코어 환경에서는 기존 기법, 시분할 기법 기반의 스케줄러보다 공간 분할 기법이 더 효율적임. 44코어, NPB 벤치마크에서 최대 40%의 성능 향상을 보임
- 리눅스 네트워크 스택 기술 : 40G 이더넷 환경에서 리눅스 TCP/IP 스택의 병목을 개선하여, 64바이트 패킷의 경우 기존 리눅스 대비 37% 성능 향상, 최대 데이터 속도를 얻는데 필요한 코어 수 경우에서 50% 정도 코어 자원을 절약이 가능함
- RDMA/IB 기반 고속통신 기술 : IB 환경에서 RDMA RPC 통신 라이브러리이며, one-sided operation 방식임. 통신 기능뿐만 아니라, 원격 메모리 읽기, 쓰기와 동기화 기능을 제공하는 11개의 API를 제공함
- Lock-free 기술과 lock-free 기반 NoSQL 엔진 기술 : 쓰레드간 공유 자원 접근에 대하여 확장 가능한 기법과 이 기법을 NoSQL DBMS 오픈소스인 KyotoCabinet에 적용한 기술이며, KyotoCabinet 오픈소스에 적용 시 3.8-8.4배의 성능 향상을 보임
- 그래프 데이터 처리 기술 : 대상 시스템의 LLC(Last Level Cache) 크기를 고려하여 처리할 데이터를 분할하고, 데이터 처리 과정에서 데이터 읽기와 데이터 쓰기에 대한 캐시 히트를 높이는 방식으로 데이터 처리 순서를 정하고 분석 전에 데이터를 선입하도록 하는 기술로, GPGPU와 유사한 성능을 냄
- 도구 기술 : 기존의 perf 도구는 응용의 병목시 사용한 시스템의 자원을 파악하는데 도움이 되지만, 그 원인을 찾기는 쉽지 않고 특히 매니코어 환경에서는 더욱 힘듬. 이러한 문제를 해결하기 위해서 응용의 병목 원인을 찾아주는 도구임
- 본 기술은 매니코어 시스템에서 성능 확장성에 문제를 분석하여 코어 수 증가에 따른 성능도 증가하는 매니코어 요소 기술들로, 유전체 데이터 처리에서는 다음 세부기술을 적용하고자 함
(1) 대규모 그래프 데이터 처리 엔진 기술
(2) 리눅스 네트워크 가속 기술
(3) 응용 병목 분석 도구 기술
- 이전 희망업체는 상기 기술의 소프트웨어를 그대로 활용보다, 매니코어 시스템에서 유전체 데이터 처리에 사용하고 있는 소프트웨어들의 성능 개선을 위해 상기 기술의 개념, 노하우 또는 일부 코드 등을 활용하고자 함. 따라서 아래에서 기술한 문서 등의 결과물 제공뿐만 아니라, 현장 적용을 위한 기술 지도도 포함되어 있음
A. 기술명 : 대규모 그래프 데이터 처리 엔진 기술
- LLC(Last Level Cache) 크기를 고려한 데이터 분할 및 압축
- 캐시 읽기/쓰기 히트률을 고려한 데이터 처리순서 기술
- 데이터 선반입 기술
- 매니코어 시스템에서 유전체 데이터 등의 데이터를 병렬처리하여 성능을 향상시키는 방법 (예, 니들만 분쉬 알고리즘에 A. 기술과 유사한 기술을 적용하는 방법)
B. 기술명 : 리눅스 네트워크 가속 기술
- 메타 데이터 및 데이터 버퍼 사전할당 기술
- 인터럽트 coalescing 기술
- 데이터 송수신 큐 lock 프리 기술
- 매니코어 기반 유전체 데이터 분석 시스템간 통신 성능 개선하는 방법
C. 기술명 : 응용 병목 분석 도구 기술
- 스핀락, mutux 정보를 추출하여 자원 경쟁시 하드웨어 기법을 이용한 프로파일링 기술
- 스핀락, mutex 소요시간 정보 제공
- 스핀락 등 락 소유자 및 대기자 관계 정보 제공
- 매니코어에서 유전체 데이터 분석 소프트웨어의 병목 원인을 찾는 방법과 분석 소프트웨어 병목여부 탐지 도구개발에 적용
o 기술문서
- 각 기술별 요구사항명세서
- 각 기술별 시험결차 및 결과서
- 각 기술별 설계문서
o 소프트웨어
- 각 기술별 소스코드
- 코로나 바이러스 진단시약 개발에 적용하며, 여러 단계의 개발 과정 중 찾고자 하는 목표 유전체 서열과 참조 유전체 서열들을 비교, 계산하여 유사 서열들을 찾는 과정에 적용함. 세부적으로 니들만 분쉬(Needleman-Wunsch) 알고리즘과 스미스 워터맨(Smith Waterman) 알고리즘을 매니코어 시스템에서 병렬화하는데 적용함
- 1차 가공된 수십테라 바이트의 참조 유전체 서열을 신속하게 처리하여, 다양한 변이 바이러스에 대한 진단 시약 개발 시간을 단축하고자 함