System Compleat.

'새로운 가상화'에 해당되는 글 1건

  1. vSMP, Versatile Symmetric Multi-Processing

vSMP, Versatile Symmetric Multi-Processing

Techs
( younjin.jeong@gmail.com, 정윤진 )




클러스터링 환경에 익숙하거나, 병렬 컴퓨팅, 또는 일반 PC를 가혹하게 사용하시는 분들은 모두 이런 생각 한번쯤은 해 보셨을 것 같다. 

"아, 이 여러대의 컴퓨터를 각각 별도의 OS를 사용하여 MPI와 같은 방법으로 묶지 말고, 차라리 한대의 서버처럼 묶어 버릴 순 없을까? "

90년대 후반, 인텔이 SMP를 지원하는 프로세서를 시장에 내놓으면서, 워크스테이션 좋아라하는 컴덕후들은 입이 떡 벌어져 Pentium Pro 프로세서를 구매해 대고, 프로세서를 2개 이상 설치 할 수 있는 고가의 메인보드를 구매해 댔다. 그러고나서 당시의 전세계 수퍼 컴퓨팅의 Top 100 중 가장 빠른 컴퓨터는 바로 인텔이 Pentium Pro 프로세서를 병렬로 묶은 컴퓨터라 카더라 하는 이야기를 침튀어가며 이야기 했었다.

당시에도 수퍼컴퓨터 하면 Cray가 항상 다섯손가락 안에 들었으며, 냉각팬이 아닌 화학물질로 시스템 온도를 낮추어야만 하는 이 신기한 컴퓨터의 이미지를 쳐다보며 아~ 한번 만질수 있다면 얼마나 좋을까 하는 생각들을 했었더랬다. 그 시절 1G 이더넷을 구축하는 것도 엄청난 비용이 들었으며, 10G는 아직 나오지도 않은 시점에서 그나마 Cray보다 저렴한 MPI 클러스터를 지금도 고가인 InfiniBand 를 사용해 엮어 사용하기만 해도 대단한 클러스터로 쳐 주었다.

세월은 흐르고 흘러, 그저 꿈으로만 생각했던 소프트웨어가 나왔다. 물론 그 효용성과 성능에 대해서는 일부 검증을 직접 해 볼 수 있으면 좋겠지만, 일단 상용으로 나왔다는거 자체가 이미 어느정도의 지원은 가능하며, 어지간히 동작이 가능한 수준이라고 볼 수 있겠다.

바로 그렇다. 여러대의 x86 시스템위에 하나의 OS를 올릴 수 있는 시스템 소프트웨어가 출현 한 것이다. 개발 업체의 이름은 ScaleMP (http://www.scalemp.com), 제품은 vSMP Foundation 으로 소개되고 있는듯. 제품의 구매는 삼부 시스템이라는 업체에 문의 해 보면 될 듯 하다. (http://www.samboo.co.kr) 회사의 홈페이지를 보면 원래 Cray를 전문으로 취급하던 기업 같은데, 아마 이 분야의 사람들에게는 익숙한 업체이지 않을까 짐작해 본다.


일단, x86 기반의 머신들만 가지고 한대의 OS를 사용한 기존과는 획기적으로 다른, 상상해 왔던 바로 그 클러스터 시스템이 제공하는 기능은 다음과 같다.

vSMP Foundation for SMP


기능
  • 최대 128대의 노드를 사용하여 단 하나의 OS를 가진 시스템을 생성 
  • Highest CPU Capacity :  vSMP를 사용한 OS는 최대 16,384 개의 CPU를 단일 PC와 같이 하나의 공유메모리 기반에서 사용 가능 ( 8192개의 코어를 사용한다는 말도 있는데 이 두개의 숫자가 어떻게 다른지 써보기 전에는 모르겠다.)
  • Largest Memory footprint : 최대 64TB 의 메인 메모리 
  • High Speed I/O : 빡센 데이터의 처리에 병렬 스토리지를 활용 
  • 장애 대응을 위한 InfiniBand  연결 지원 
  • 장애로 부터 자동 복구
  • 나머지 생략

장점
  • 기존의 단일 머신의 SMP 성능을 뛰어넘는 기절할만한 성능
  • 투자 보호 : 서로 다른 속도의 CPU, 서로 다른 크기의 메모리, 다른 I/O 장치를 사용한 환경에서도 구성이 가능
  • 기타 생략

OMG

Image from : http://i7.photobucket.com/albums/y286/SNOOP97DAWG/NHL/homer-simpson-5.jpg



그렇다. 입이 떡 벌어진다.  기존의 병렬 시스템들이 추구하는바가 Scale-Out 으로, 단일 시스템이 Scale-Up 의 형태로 성능을 확장하기 힘들었기 때문에 생긴 방법들이다. 하지만 이 물건은, Scale-Up 과 Scale-Out 을 모두 지원함으로서, 아니, Scale-out 의 형태를 사용하여 Scale-Up 을 구현 함으로서, 비지니스의 성장요구에 따라 점진적으로 하드웨어의 추가가 가능하며, 더군다나 대부분의 Block 레벨로 I/O를 공유하는 클러스터가 요구하는 하드웨어의 동일성마저 없다. 따라서 세월이 지나면서 HCL 만 충족하는 하드웨어를 지속적으로 구매한다면, 다양한 하드웨어를 사용한 노드의 집합으로 하나의 OS를 사용하는 거대한 시스템을 구성 할 수가 있는 것이다!

난 쩔어 버렸어~ (태지 보이스, 필승)

혹시 국내에 사용중인 환경이 있는가 궁금해서 네이버등에 검색을 쌔워보니, 뉴스 이외의 정보는 없는것으로 봐서는 그다지 많이 알려져 있지는 않은 것 같다.


실리콘밸리의 벤처 회사들을 다니다 보면, 그런 생각을 갖게된다. 얘들이 설명하는거 절반만 제대로 동작해도 이건 먹어주는 물건이다, 라는.  OS라는건 나름 복잡한 물건이다. 관련 전공을 이수하신 분들이라면 한번쯤 읽어 보았을 Operating System Concepts 에서 설명하는 대부분의 내용들은 시스템이 동작하는 기본이며, PC와 서버가 발전하면서 단일 PCB상에서 연결된 장치들의 오묘한 타이밍 통제와 락, 스케줄링이 복합적으로 그리고 유기적으로 조합된 하나의 소프트웨어인 것이다. 이 새로운 패러다임의 단일 OS지원 클러스터는, 이 OS에서 제공하는 별도의 라이브러리를 사용한 별도의 소프트웨어만 동작한다면 기존의 클러스터보다 나을것이 그다지 없을 것이다. 하지만 상상해 보라. 만약, 이 OS에서 오라클이 아무 문제없이 동작하고, 리눅스 기본 패키지들이 별 문제 없이 동작한다면, 이건 정말 두손 두발 다 들어주어야 할 기존과는 다른, 그야말로 신세기 컴퓨팅 플랫폼이 되는 것이다. 물론 오라클이 동작하지 않을 거라는 심증이 좀더 크지만.

아무튼 ScaleMP 사이트의 제품 소개를 제외한 대부분의 정보는 Subscription 으로 보호되어 있다. 심지어 Whitepaper 조차 등록 후에 열람이 가능하다. 따라서 이 블로그에서 소개하는 것 이상의 정보가 필요하신 분들께서는 ScaleMP의 홈페이지 또는 삼부시스템의 홈페이지를 참조하시기 바란다.

궁금한 부분은, 각 시스템의 연결을 10G를 지원하는지의 여부 (어떻게 각 클러스터들을 연결하는지의 여부) 와 각 시스템의 Disk를 어떻게 사용하는가와 같은 부분들이다. 또는 별도의 Shared Storage를 연결해야 하는지 등도 매우 궁금하다. 나중에 알게되면 설명하겠다.

분명한 것은, ScaleMP는 컴퓨팅의 새로운 패러다임을 만들었다. 이들 역시 이 부분을 강조하는데, 기존의 클라우드와 같은 단일 서버를 여러대의 가상서버로 분리하는 것을 Partitioning 으로 정의 하며, 데이터 센터에 데스크탑을 설치해 두고 원격지의 Thin-Client로부터 접근하여 사용하는 방법을 Remotting 으로 정의 한다. 이 새로운 패러다임은 여러대의 물리서버를 사용하여 하나의 논리적인 OS로 구성하는 방법으로서, 이를 Aggregation 으로 정의하고 있다. 이는 가상화의 또 다른 모습이며, 여러분이 기존에 이해하고 있었던 가상화에 대한 신선한 충격이 될 것을 믿어 의심치 않는다.

상용 소프트웨어인데다가, 그 사용 방법 역시 널리 알려졌다고 보기엔 무리가 있다. 따라서 별도의 교육이 있지는 않은지 살펴 보니 역시 있다.  교육 과정은 다음과 같다.

VSMP101: Introducing vSMP Foundation

VSMP201: System Administration (Basic)
VSMP202: System Administration (Advanced)
VSMP301: Developers (Theory)
VSMP302: Developers (Hands-on)


301과 302는 각각 8시간, 나머지는 각 4시간으로 일주일 정도의 코스가 되지 않을까 싶다. 이 일주일 정도의 교육이 의미하는 바는, 아마도 개발자가 아니라면 기존의 시스템과 크게 다르지 않기 때문에 쉽게 적응이 가능하지 않을까 하는 기대를 품게한다.


자, 이제 ScaleMP 측의 제품에 대한 설명을 좀 살펴보자.


The Versatile SMP (vSMP) Architecture

현재 특허 출원중인 Versatile SMP 아키텍처는 하이엔드 SMP 시스템의 구성을 위해 사용된다.  vSMP는 기본적으로 InfiniBand 로 상호 연결된 시스템들을 사용해 기존의 시스템들을 대체한다. vSMP Foundation 은 ScaleMP가 만들어낸 아키텍처를 실제로 구현해 낸 제품이다. 이는 업계 표준의 일반적인 하드웨어를 사용하여 하나의 대형 X86 시스템을 만들어내는 기술이다. 이 기술은 특별히 하나의 하드웨어 벤더 또는 한 종류의 하드웨어를 사용할 필요가 없으므로, 기존 클러스터가 요구했던 맞춤형 하드웨어의 제작 또는 이러한 하드웨어를 제작하는 벤더만을 사용해야 하는 벤더-락-인 의 단점을 종식시킨다.

전통적인 멀티 프로세서 시스템은 프로세서간의 통신 및 공유 메모리, 사용자 정의 칩셋등이 하나의 메인보드에 집약되어있는 구성을 가진다. 이러한 구성은, 시스템이 4개 이상의 프로세서를 지원하기 위해서는 훨씬 복잡한 내부 구조로 인해 설계가 쉽지 않다. 따라서 이 이상의 프로세서를 지원하는 시스템은 거의 없다고 봐도 무방하다. 또한 프로세서의 빠른 신제품 발매주기로 인해 이러한 프로세서들을 메인보드는 지속적으로 지원해 주어야 하므로, 이렇게 수많은 프로세서의 탑재가 가능한 보드를 어렵게 설계 하는것은 큰 의미가 없다. 따라서, 기존의 Scale-UP 형태의 시스템 확장에 한계가 발생하는 동시에, 하이-엔드 컴퓨팅은 새로운 형태의 시스템을 요구 하게된다.

vSMP는, 별도의 커스텀 하드웨어를 사용할 필요가 없다. vSMP 아키텍처의 핵심은 바로 기존의 멀티 프로세서 시스템들과는 다른 형태의 칩세 서비스를(칩셋은 보통 하나의 PCB에 위치하므로 단일 시스템의 의미로 생각해도 좋다) 소프트웨어를 사용하여 구성한다는데 있다. vSMP 아키텍처는 I/O 및 시스템 인터페이스 (BIOS, ACPI)의 공유와 캐시등의 기존 OS에 필요한 모든것들을 제공한다. 이는 완전히 투명한 방식으로 구현되며, 별도의 추가적인 드라이버를 필요로 하지 않으며, 기존의 어플리케이션에 아무런 변경을 하지 않아도 동작하도록 한다.


Requirements

vSMP Foundation Requires :

  • Multiple high volume, 업계 표준 x86 시스템 또는 프로세서와 메모리를 탑재한 시스템 보드
  • HCA 리스트에 정의된 하드웨어를 사용한 InfiniBand 인프라. 케이블, 스위치.
  • vSMP Foundation 을 부팅하기위한 시스템 보드별 하나의 스토리지 장치. vSMP Foundation for Cloud 제품은 네트웍 부팅을 사용하므로 필요하지 않음.

One System

vSMP Foundation 은 최대 128대의 x86 시스템을 지원한다. 이 하나의 가상화된 OS는 각 노드의 메모리의 로딩이 끝나고 나면, vSMP Foundation 은 이 각 노드에 있는 컴퓨팅과 메모리, I/O 자원을 병합하여 단일화된 하나의 가상 OS와 이 OS 에서 사용할 어플리케이션의 구동이 가능하게 된다. vSMP Foundation 은 균등한 실행 환경을 제공하기위해 Virtual Machine Monitor(VMM) 의 형태를 사용한 소프트웨어 엔진을 사용한다. 또한, vSMP는 단일화된 시스템의 사용성을 위해 BIOS나 ACPI와 같은 환경을 만들어내는 부분도 포함한다.


Coherent Memory

vSMP 는 여러가지 신기술을 사용하여 각 시스템 보드간의 캐시 동일성을 유지한다. 이 복잡한 알고리즘은 실시간 메모리 활동 및 접근 패턴에 대해 블럭레벨로 동작한다. vSMP는 시스템간의 통신에 대한 지연시간을 최소화하기 위해 보드의 로컬 메모리와 최상의 캐시 알고리즘을 사용한다.


Shared I/O

vSMP Foundation 각 시스템 보드의 모든 PCI 자원을 하나로 병합하고 이를 공통의 I/O pool 리소스로서 OS와 어플리케이션에 제공한다. OS는 시스템 스토리지와 네트워크 장치를 적절히 활용 하여 최상의 성능을 제공한다. 


Flexible Versatile Architecture

vSMP Foundation 소프트웨어는 vSMP 아키텍처를 구현한 것으로서, 128대의 산업 표준의 일반적인 x86 시스템을 하나로 통합하여 가상의 단일화된 OS를 생성할 수 있다. vSMP Foundation 은 최대 1024 개의 프로세서 ( 8,192 코어) 와 64TB의 공유 메모리를 사용한 가상 시스템을 생성해 낼 수 있다.

vSMP Foundation 은 이러한 각 노드의 CPU와 메모리의 크기가 서로 다르더라도 지원이 가능하며, 심지어 I/O 장치가 다르더라도 동작한다. 이는 x86 공유 메모리 시스템의 고유한 기능이다.

높은 프로세서 부하를 요구하는 컴퓨팅 어플리케이션의 경우, 최대 1.5TFLOPS 를 사용하는 단일화된 시스템의 사용이 가능해진다. 만약 어플리케이션이 메모리를 많이 사용하지만 요구되는 컴퓨팅 파워는 그다지 높지 않은 경우, 높은 속도의 프로세서와 낮은 속도의 프로세서를 복합적으로 사용하는 아키텍처가 구성이 되는 경우가 있다. 이러한 불균형 구성에서, vSMP Foundation 소프트웨어는 OS 에서는 낮은 속도의 프로세서들을 노출하지 않는 동안에는 항상 가장 빠른 프로세서들을 병합하여 사용한다.
이러한 구성은 비용과 전력의 손실은 절감하면서, 최대 사이즈의 메모리와 최고의 성능을 발휘할 수 있게 한다. 마찬가지로, 사용자는 어플리케이션의 요구에 따라 I/O를 구성할 수 있으며, 따라서 업계 최고의 유연한 고성능 x86 시스템을 구비할 수가 있게된다. 이러한 비용/성능의 두마리 토끼를 모두 잡아냄으로서, vSMP Foundation 을 사용한 시스템은 고객에게 최고의 비용 효율성을 제공할 것이다.

Performances (http://www.scalemp.com/performance)


일반 - 메모리 대역폭 테스트

Memory Bandwidth



Life Science

Computational Chemistry




Computational Chemistry



Bio Informatics






Manufacturing

Fluid Dynamics




Weather Forecast

MOM4 - CM2P1:1 MODEL DAY



Numerical Simulations

Mathworks MATLAB





정리.

그런 생각을 해 본다.  GPGPU를 사용한 전통방식의 클러스터가 빠를까, 여러대의 머신을 하나로 클러스터링한 ScaleMP 의 클러스터가 빠를까. 그리고 또 ScaleMP가 향후 GPGPU 를 그들의 가상 OS 레벨에서 지원하게되면 또 어떻게 될까.  또, 이렇게 묶여진 가상 OS를 다시 병렬로 묶을 수 있을까?  (128 node vSMP) -- MPII -- (128 node vSMP) 이렇게 말이다.

기존에 했던 포스팅들과는 달리, 무언가 새로운 패러다임이 나타난것 같아서 흥분했다. 위의 퍼포먼스 사이트에 가시면 SPEC CPU2006 과 같은 일반적인 벤치마크 도구의 결과도 볼 수 있다.


사실, 오픈소스 진영에서 만들기는 쉽지 않은 도구다. 물론 뭐 어떤건 쉬웠겠냐마는.  물론 이 상용 소프트웨어 역시 그 기반기술의 대부분이 오픈소스에 의존하고 있을 것이라는 추측을 해 본다. 이 도구가 얼마나 많이 알려지고, 또 도입 사례가 발생할지는 모르겠지만, 이 소프트웨어의 HCL을 충족하는 하드웨어를 기존에 사용중이었다면, 충분히 테스트 해 봄직 하다 라는 생각을 해 본다. 더군다나 클라우드와 클러스터를 위한 패키지들을 함께 제공하므로, 관심있으신 분들은 직접 홈페이지에서 정보를 얻어보시는것도 좋을 것 같다.



ScaleMP Home page
http://www.scalemp.com

( younjin.jeong@gmail.com , 정윤진 )