1. 프로젝트 개요

PC 또는 워크스테이션을 초고속 네트워크로 연결하여 고성능을 얻을 수 있도록 하는 클러스터 시스템을 연구 개발한다. 이를 위하여 하위 레벨 메시지 전송 계층, 표준 메시지 인터페이스, 운용 소프트웨어 계층과 같은 핵심적인 미들웨어군을 개발하고, 또한 활용성을 극대화하기 위하여 클러스터내 자원 관리 기능 및 단일 시스템 이미지 기법, 이기종의 연결 통합 관리 기능 등 확장된 개념을 연구 개발한다.

2. Cluster System의 필요성

고성능의 병렬 컴퓨터에 대한 요구는 꾸준히 지속되어 왔으며 현재까지 슈퍼컴퓨터 및 MPP(Massively Parallel Processor)의 개발을 통해 그 요구가 충족되어 왔다. 하지만 이들 고성능의 슈퍼컴퓨터나 MPP는 개발 기간이 길고 개발 비용이 높으며 대량 생산되는 마이크로 프로세서를 장착한 컴퓨터들에 비해 비싼 단점이 있다. 최근 들어 대량 생산되는 싼 가격의 컴퓨터들을 고속의 네트워크로 연결하여 고성능의 병렬 컴퓨터를 구성하려는 시도가 일고 있다. 이렇게 구성되는 컴퓨터를 클러스터 컴퓨터(cluster computer)라 부르며 값싼 PC나 워크스테이션들로 구성되는 노드 컴퓨터와 고속의 네트워크가 구성의 기본 단위가 된다. 이러한 클러스터 컴퓨터는 가격 대비 성능이 높고 확장성이 좋으며 하드웨어와 소프트웨어의 개발기간이 상대적으로 짧다는 장점이 있다.

이런 추세에 따라 외국 유명 대학과 연구소에서 클러스터 기반 컴퓨팅에 관해 연구하고 있으며 그 결과로 140대의 Alpha 21164A 마이크로 프로세서를 장착한 워크스테이션들을 고속의 네트웍으로 연결한 Avalon 클러스터 컴퓨터가 전세계에서 160번째로 빠른 컴퓨터로 등록되었다. 클러스터 기반의 병렬 컴퓨터를 사용하기 위해서는 병렬 프로그램의 스케쥴링, 네트워크에 연결된 각 컴퓨터들의 자원(CPU, 디스크, 메모리 등)의 사용 현황 감시 및 관리, 동적 부하 분산(dynamic load balancing)을 위한 프로세스 이전(process migration), 운영체제나 사용자 프로그램 사이의 빠른 통신을 위한 메카니즘, 편리한 관리자 도구 및 사용자 인터페이스 등이 필요하다. 이러한 기능을 제공하기 위하여 운영체제와 응용프로그램 사이에 존재하는 미들웨어가 고속의 네트워크로 연결된 여러 컴퓨터들을 하나의 단일 컴퓨터로 보이게 하는 단일 시스템 이미지(SSI: Single System Image)를 제공해야 한다. 단일 시스템 이미지는 관리자나 사용자에게 클러스터 컴퓨터의 물리적 구성 사항들을 숨기고, 투명한 가상 컴퓨터를 제공한다.

이와 같은 미들웨어는 병렬처리 및 분산처리 기술의 집합으로서, 고속의 통신 모듈, 분산 공유 메모리(DSM: Distributed Shared Memory), 네트워크 파일 시스템, 작업 감시 및 관리 시스템, 자원 감시 및 관리 시스템, 단일 입출력 공간, 단일 프로세스 공간, 고장 허용 구조 등의 요소기술을 포함하게 된다. 이러한 기술들은 클러스터 기반 컴퓨팅에서 뿐만 아니라 MPP, SMP나 메타 컴퓨팅 (meta-computing)등의 다른 구조에도 적용될 수 있는 컴퓨터 구조와 운영체제 분야의 기반 기술에 해당한다. 또한 클러스터 컴퓨터의 개발을 통해 얻어진 미들웨어 기술을 메타 컴퓨팅에 적용함으로써 무한대의 자원을 사용자에게 제공할 수 있는 가상 컴퓨터를 실현하는데 기반 기술로 사용될 수 있다.

과학 기술 및 공학 분야에서 시행되는 실험과 시뮬레이션들은 개인용 PC나 워크스테이션이 제공하는 성능 이상을 요구한다. 뿐만 아니라 최근 인터넷의 급속한 확장과 정보 처리 기술의 향상으로 고객에게 다양한 정보 처리 서비스를 제공하는 기업들에서도 고성능 컴퓨터에 대한 요구가 가속화되고 있다. 전세계 슈퍼컴퓨터의 순위를 500위까지 정해 놓은 'TOP500 Supercomputer Sites"라는 보고서 (1999년 6월 기준) [5, 17]에 따르면 현재 우리나라가 보유한 고성능의 슈퍼컴퓨터 중 전세계 500위 이내에 드는 슈퍼컴퓨터는 [표 1]과 같다.

 [표 1] 국내 슈퍼컴퓨터 현황

1993년 처음으로 슈퍼컴퓨터를 도입하기 시작한 우리 나라는 현재 50여대의 슈퍼컴퓨터를 가지고 있지만 미국이나 일본, 유럽 등의 선진국들에 비해 미약한 실정이다. 특히 1998년 여름에 쏟아진 집중 호우로 많은 피해가 발생하면서 기상전용 슈퍼컴퓨터를 도입하기 위해 1천 3백만 달러(1백 70억 원)의 예산을 확보하고 슈퍼컴퓨터 공급 업체에 입찰을 시행하여 128 GFLOPS급 벡터 컴퓨터인 NEC SX-5/16A를 구입하였다. 기상청의 슈퍼컴퓨터는 1999년 6월 1일부터 가동을 시작했기 때문에 'TOP500 Supercomputer Sites'에는 포함되어 있지 않지만, LINPACK 벤치마크에 대한 실제 성능을 나타내는 Rmax 성능 비교에 의하면 50위권에 속해 있다. [표 2]는 기상청의 슈퍼컴퓨터 SX-5/16A와 클러스터 컴퓨터 Avalon의 성능 대비 가격을 나타낸다. 1 GFLOPS의 성능을 얻기 위해 소요되는 비용이 15배이상 차이가 남을 확인 할 수 있다. 이렇듯 국내 고성능 컴퓨터의 현황은 세계적 수준에 미치지 못하고 있고, 고성능 컴퓨터에 대한 수요는 지속적으로 성장하고 있다. 하지만 단일 고성능 컴퓨터가 가지는 비용 부담, 전량 수입에 의존하고 있는 현실, 그리고 성능 요구 변화에 능동적으로 대처할 수 있는 확장성 및 유연성 부족이 문제점으로 지적되고 있다. 클러스터 기반 컴퓨팅은 이러한 한계를 극복하면서 슈퍼컴퓨터 및 중대형 서버급 컴퓨터에 대한 시장 수요를 대체할 수 있을 것으로 기대된다.

[표 2] 슈퍼컴퓨터와 클러스터 컴퓨터의 가격 대비 성능 비교

3. 프로젝트의 목표 및 내용

    고성능의 클러스터 컴퓨터의 개발과 확장이다.  [그림 1]은 클러스터 컴퓨터의 전체 구성을 보여준다.

[그림 1] 클러스터 시스템 전체 구성도

[ 단계별 연구개발 목표 ]

[1단계 연차별 연구개발 목표]

[2단계 연차별 연구개발 목표]

4. 연구개발 방법

클러스터 컴퓨터의 개발을 위해서는 다양한 병렬처리 시스템과 그 하부 구조에 관한 지식들이 필요하다. 네트워크 인터페이스 카드, 하위 레벨 메시지 계층, 표준 메시지 전송 인터페이스, 분산 공유메모리, 클러스터 관리 소프트웨어, 단일 시스템 이미지, 고장 허용, 작업 관리 기능, 이기종 간의 통신 등 각 부분에 대한 기술적인 조사가 현재 완료되었다. 이와 더불어 국내외에서 발행되는 저널, 잡지, 학회, 인터넷 등을 통해 최신 정보를 계속 유지해야 할 필요가 있다.클러스터 컴퓨터의 개발은 크게 보아 top-down, bottom-up 방식을 모두 사용한 형태가 된다. top-down 방식에서 행해져야 할 내용들은 다음과 같다.


병렬 응용프로그램 및 산업계에서 사용되는 기존의 슈퍼컴퓨터 응용 분야에 대한 요구 분석을 수행한다.

기존의 병렬 컴퓨터나 클러스터 컴퓨터에 대한 조사를 통해, 대규모 병렬 응용프로그램을 효율적으로 실행할 수 있는 클러스터 컴퓨터를 설계한다. 본 연구실에서 개발한 병렬 컴퓨터인 Krypton 설계시의 경험과, 클러스터 컴퓨터의 일종인 KAIST LAMP-II의 설계 경험을 활용해서 체계적으로 전체 구성을 설계한다.

클러스터 컴퓨터를 구성하는 각 요소들, 예를 들어 네트워크 인터페이스 카드, 하위 레벨 메시지 계층, 표준화된 메시지 전송, 운영 및 관리 소프트웨어 계층 등을 식별하여 각각에 구체적인 내용을 지정한다.

식별된 각 구성 요소간의 일관된 인터페이스를 지정한다. 각 요소들은 정의된 인터페이스를 통해서 서로 통신한다.정의된 인터페이스를 사용해서 전체 클러스터 컴퓨터의 실행 시나리오 작성 전체 시스템 레벨에서 각 구성 요소간에 인터페이스를 사용하여 실행 흐름에 대한 구체적인 시나리오를 작성한다. 일단 top-down 방식으로 위와 같은 전체 구성이 정의되면, 다음과 같이 bottom-up 방식으로 시스템의 각 구성 요소를 개발할 수 있다.

클러스터 컴퓨터를 위한 기반 네트워크로는 SAN(System Area Network)으로 많이 쓰이는 Myrinet 카드와 Myrinet 스위치를 사용해서 클러스터 컴퓨터 노드들을 연결한다.

Krypton과 KAIST LAMP-I 시스템 개발에서 축적된 하위 레벨 메시지 계층 개발 경험을 사용해서 효율적인 사용자 수준 통신(user-level communication)을 지원하는 하위 레벨 메시지 계층을 개발한다.

 - 메시지 전송 모델(MPI) 구현 및 API 정의

MPI와 같은 표준 메시지 전송 인테페이스는 이미 공개된 내용들을 우리 환경에 맞게 포팅한다. 단, 대부분의 응용프로그램에서 이러한 표준 API 중 일부분만을 사용하기 때문에, 필요한 부분만 API로 정의하여 사용한다.

- 분산 공유메모리 모델의 구현 및 API 정의

분산 공유메모리의 개발은 KAIST LAMP-I, II의 개발에서 얻은 지식을 바탕으로, 본 시스템에 맞게 설계하고 구현한다.

관리자가 클러스터 컴퓨터를 쉽게 운영하고 관리할 수 있도록 GUI를 기반으로 하는 관리 소프트웨어를 개발한다.

LINPACK처럼 공개된 벤치마크 프로그램 뿐만 아니라, 산업계나 공학분야에서 사용되는 일기예보, 생물학, 물리학 등 다양한 응용프로그램을 클러스터 컴퓨터 상에서 실행시켜 벤치마크를 수행한다. 또한 활발한 응용프로그램 제작을 위해 사용자 그룹을 구성, 이를 통하여 응용프로그램을 개발하고 피드백(feedback)을 받는다.