[Parallel Computing] 슈퍼 클러스터?

이파란 2021.04.18 23:45 조회 수 : 135

슈퍼 클러스터 관련 궁금하여 찾아본 내용을 공유합니다.

 

1. 슈퍼 클러스터가 무엇일까?

 

    Superclusters — clusters of clusters

 

        - Beowulf Cluster Computing with Linux - Thomas Sterling

 

하나의 백본 인프라 기반을 가지고 있는 기관이 있을 때,

광역 네트워크로 통합되는 산업 단지의 별도 건물 또는 공유 전산실과 같은 로컬 영역 내의

클러스터 집단을 포함하여 상위의 클러스터로 묶는 것을 말함.

 

 

어원?

 

초은하단(Superclusters)


- 초은하단은 은하단 및 은하군으로 이루어진 대규모 무리로 우주에서 가장 거대한 구조 중 하나이다.

 

 

2. 클러스터 구성

 

요즘 일반적으로 많이 사용하는 클러스터(Hadoop, Kubernetes)의 구성은

 

보통 마스터(Name node, Coordinator, Controller) <-> 워커(Data node, Worker node) 구성으로

 

작업을 나눠주는 소수의 코디가 있고, 코디가 나눠준 작업 단위를 처리하는 다수의 워커 형태임.

 

 

슈퍼클러스터는 보통 고성능 컴퓨팅(high-performance computing, HPC)을 위한 클러스터 형태로

 

수십년 전부터 오픈소스 기반으로 구축가능한 가성비 좋은 베오울프 클러스터를 연구하기 시작했음.

 

 

3. Beowulf Cluster?

 

소수의 메인급 서버 컴퓨터, 많은 노드가 존재함

 

연산 작업을 통제하는 메인 서버가 병렬화된 단위 작업을 하위 노드의 프로세서에 배포하고

 

단위 작업의 결과를 메인 서버가 관리하고 전체적으로 동기화함.

 

베오울프의 노드들은 CPU 와 연산 메모리 램과 마더보드 그리고 이더넷 기능 만을 갖는

최소한의 환경만을 요구하므로 pxe 부트(NIC 가 지원함. DHCP -> TFTP)로 부팅 디스크 조차도 별도로 없음.

 

 

4. 클러스터 Parallel Computing 동작 방식

 

(1) TORQUE 를 이용한 job submission.

 

(2) Maui Scheduler 는 각 노드의 프로세서, 메모리, 디스크 등의 리소스를

    작업에 할당하는 어떤 노드를, 어느 시점에, 어떻게 제어할 지 정하는 policy engine 임.

    각 작업은 MPI 를 사용하여 서로 통신 할 수 있음.

 

(3) 병렬 컴퓨팅에 사용할 수 있도록, 분산 메모리 응용 프로그램의 메시지 전달 표준 MPI

     병렬 언어 라이브러리로 C 또는 포트란으로 작성함.

     (표준은 MPI 로 굳어짐. Open MPI, MPICH2 를 많이 사용함)

     최근 예제 프로그램을 보면 MPI + Open MP 라이브러리도 함께 사용하고 있음.

 

 

동작하는 방식 & 관련한 자료를 보고있습니다.

 

세부적인 설정이 가능하기 때문에 설명을 위해서는 공부가 많이 필요할 것 같아서

 

관련 설명은 다음 기회에!

 

 

5. Linux Kernel 의 관련 기술

 

RDMA (원격 직접 메모리 액세스)는 일반적으로 고속, 저지연 네트워크(일명 패브릭)를 통해 구현되는 네트워킹 기술임.

원격 호스트의 메모리에 직접 액세스 할 수 있어 지연 시간과 CPU 오버 헤드를 크게 줄일 수 있음.

이더넷 NIC 에서 RoCE 프로토콜 등의 지원 필요함.

 

리눅스에서 등록된 노드를 ib_write_bw 커맨드로 관리함

 

LWN: RDMA

https://lwn.net/Articles/133649/

- https://lkml.org/lkml/2021/2/22/724

 

6. 사용 분야

 

업계의 가장 어려운 문제를 해결하기 위해 HPC 를 사용함.

 

    핵 반응 모델링
    유전학 모델링
    석유 및 가스 시뮬레이션
    경영 시뮬레이션
    반도체 디자인
    날씨 예측 시뮬레이션

 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 강좌, 팁, 정보등에 대해 올리는 게시판입니다. woos 2016.04.09 246
129 Pro Git 2장, 3장 요약입니다. 아폴로 2013.11.05 52123
128 포토샵 웹버전입니다. [1] 강진성 2010.05.14 40685
127 맥에서 리눅스 커널 빌드하기 [2] K 2013.06.30 24823
126 #pragma에 관련해서.. [2] 원민수 2006.07.19 20782
125 kernel 2.6의 kzalloc함수 (원민수 씀) 백창우 2007.02.23 19337
124 태훈님에 이어. ARM kernel 참고자료 백창우 2007.11.05 19014
123 리눅스 커널 스터디 참고자료 (x86) [4] 리누즈박 2013.05.06 18397
122 누가 나를 호출했는지 찾기 + 포인터를 심볼 이름으로 변환하여 출력하기 [1] 지현구 2007.02.27 17863
121 systemtap 관련 간단한 소개입니다. 남용우 2007.11.06 17058
120 허접 영어 사전입니다. [3] 백창우 2008.04.22 16092
119 define을 사용한 version 처리. 원민수 2008.02.09 15026
118 여기는 팁, 기타 정보를 올리는 곳입니다. 백창우 2006.06.05 14751
117 커널 분석용 vim 플러그인 설치하기 (Rev.4) [21] 리누즈박 2013.06.30 13973
116 막강 디버깅 매크로 DM_PRINT() [4] file 배상경 2010.11.23 12045
115 if문에 사용하는 likely와 unlikely 함수의 용도 [1] 아폴로 2014.03.05 11176
114 조금은 묵직한 시스템, 뇌감시장치 김성현2 2011.11.17 10585
113 리눅스 커널 코딩 스타일입니다. [1] 아폴로 2013.09.13 10147
112 xen 4.1 설치 방법(우분투 11.04) [2] 이상철 2012.11.14 10109
111 Kernel 소스코드 github에 복사하는 법 [6] 리누즈박 2013.06.16 9838
110 돈되는 이야기?! 삼성 손가락 혈압계 [1] 김성현2 2011.10.20 9493
XE Login