linux cluster system

32
Linux Cluster Linux Cluster System System Dept. Computer science and Dept. Computer science and Engineering Engineering Moon Jun Hyun Moon Jun Hyun [email protected] [email protected]

Upload: kyne

Post on 13-Jan-2016

96 views

Category:

Documents


0 download

DESCRIPTION

Linux Cluster System. Dept. Computer science and Engineering Moon Jun Hyun [email protected]. Contents. Linux Cluster Architecture Parallel Computer Architecture Cluster Architecture Linux Cluster Architecture Linux Cluster System Composition Hardware System Selection - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux Cluster System

Linux Cluster Linux Cluster

SystemSystem

Dept. Computer science and Dept. Computer science and EngineeringEngineering

Moon Jun HyunMoon Jun [email protected]@bravo.kwangju.ac.kr

Page 2: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 2

ContentsContents

• Linux Cluster Architecture– Parallel Computer Architecture

– Cluster Architecture

– Linux Cluster Architecture

• Linux Cluster System Composition– Hardware System Selection

– Node Network Configuration Composition

– Parallel Configuration Composition

• MPI Linux Cluster Programming– Parallel Programming

– MPI Programming

– MPI Function

Page 3: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 3

Linux Cluster ArchitectureLinux Cluster Architecture

• Parallel Computer Architecture

• Cluster Architecture

• Linux Cluster Architecture

Page 4: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 4

Parallel Computer ArchitectureParallel Computer Architecture

• 병렬 컴퓨터의 정의– 최소한 2 개 이상의 CPU 로 구성– 여러 개의 CPU 를 이용한 동시 작업과 동시처리– 작업 효율 및 작업시간 단축 효과– CPU 마다 독립된 메모리 주소와 프로그램 Counter 를 가짐

• Parallel processing computer

• Seraial processing computer

– 병렬 컴퓨팅을 위해서는 별도의 병렬 프로그래밍을 해야 함• 병렬화 여부를 컴파일러가 자동으로 결정하지 못함

– 병렬 프로그래밍 : 기본적인 순차처리 프로그래밍 Construct(array, Control structure, Procedure, Resursion)을 가진 여러 대의 컴퓨터를 대상으로 하는 Programming

Page 5: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 5

Parallel Computer Architecture(cont.)Parallel Computer Architecture(cont.)

• 병렬 컴퓨터의 여러 형태– 병렬화 정도에 따른 분류 : Coarse grained vs Fine

grained

– Flynn’s 분류 : SISD, SIMD, MIMD, MISD

– 메모리 모델에 따른 분류 : Distributed memory, Shared memory, Distributed-share memory

– 노드간 물리적 연결 방법에 따른 분류 : Switch, Hardware supported remote momory access by direct memory access, Router chip(or processor), etc

– 노드간 연결의 논리적 구조 분류 : Hypercupe, 2-D mesh, 3-D torus, switch, etc

– Single system image vs Multiple system image

Page 6: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 6

Parallel Computer Architecture(cont.)Parallel Computer Architecture(cont.)

• 병렬 프로그램의 예– 문제

– Superscalar architecture 가 아닌 순차 컴퓨터의 경우

1. 메모리로부터 X(i) 와 Y(i) 를 register 로 읽어 들인다 .2. X(i) 와 Y(i) 를 더한다 .3. 더한 결과가 있는 register 에서 Z 메모리 위치에 쓴다

.4. 이 과정을 loop 의 숫자 만큼 반복한다 .

do i =1, MAX

Z(i) = X(i) + Y(i)enddo

Page 7: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 7

Parallel Computer Architecture(cont.)Parallel Computer Architecture(cont.)

– 병렬 컴퓨터의 경우

1. MAX 개의 X(i) 와 Y(i) 를 N 대의 컴퓨터에 골고루 나누어 (MAX/N) 분배한다 .

2. MAX/N 개의 X(i) 와 Y(i) 에 대하여 순차처리 컴퓨터의 과정을 N 대의 컴퓨터가 (MAX/N) 번 수행한다 .

3. 나누어 계산된 Z(i) 를 한 군데 모은다 .

Page 8: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 8

Parallel Computer Architecture(cont.)Parallel Computer Architecture(cont.)

• Amdahl’s law : 병렬화에 따른 최대 성능 개선비– 한대의 컴퓨터 상에서 코드 중 병렬화가 가능한 부분을

순차적으로 수행하는데 걸리는 시간 = Ip– 한대의 컴퓨터 상에서 코드 중 병렬화가 안되는 부분을

순차적으로 수행하는데 걸리는 시간 = Is– 성능 비 =

– 예를 들어 Ip 가 90%, Is 가 10% 일 때 , 설사 N 이 무한대라고 하더라도 성능 증가는 단지 (0.9+0.1)/(0.9/N+0.1)=10 배에 불과하다 .

Ip + Is

+ IsIp N

Page 9: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 9

Parallel Computer Architecture(cont.)Parallel Computer Architecture(cont.)

• Prallel computer 에서 병렬화에 수반되는 통신에 의한 system overhead 때문에 , 병렬와에 의한 계산 속도는 Is 가 0% 인 경우에도 노드의 개수에 단순 비례하지 않음

• 따라서 계산을 수행함에 있어서 통신이 필요한 부분(surface) 과 한 노드가 담당하는 부분 (volume) 과의 상대적인 비율을 낮추어야만 병렬 컴퓨터의 효율이 높다 . (surface-to-volume retio)

Page 10: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 10

Cluster ArchitectureCluster Architecture

• Prallel Computer Architecture– MPP(Massively Parallel Processing) : CRAY T3-E

– SMP(Symmetric Multi-Processing) : Pentium II, III CPU

• Cluseter Architecture– MPP architecture

– Loosely-coupled parallel architecture • 컴퓨터 노드가 한대의 독립적인 컴퓨터로 작동할 수 있는

성질을 계속 유지하는 것

– Distrubuted computer architecture

• Dynamic load balancing, high availability– 독립적인 운영체계 (OS) 를 지니는 여러 대의 컴퓨터에 여러

개의 task 를 효율적으로 분배하고 관리하는 것

Page 11: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 11

Cluster Architecture(cont.)Cluster Architecture(cont.)

• Parallel Computer vs Cluster Computer – Prallel computer

• 통신에 따른 Latency, Bandwith

– Cluster computer• Job scheduleing, Resource allocation

• Beowulf Cluster– High performance computing platform

• 최근의 경향– High performance computing

– High availiability system

– Data base server

– Web server

Page 12: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 12

Linux ClusterLinux Cluster

• Cluster 의 각 노드 운영체제로 Linux 를 사용하는 Cluster

• Open source 인 Linux 운영체계는 사용자가 off-the-shelf componets 를 가지고 직접 필요에 맞게 Cluster를 제작 가능

• 다양한 CPU 와 Hradware 지원• 일반성 (generality) : Linux 발전에 따른 효과를

지속적으로 Cluster 에 적용 가능• 효율성 (efficiency) : 사용자가 각자의 필요성에 적합한

Cluster 제작 가능• 대량 생산되는 PC 와 Network 장비로 인한 저렴한

비용

Page 13: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 13

Linux Cluster(cont.)Linux Cluster(cont.)

• Architecture potability– 하드웨어와의 연관성이 적음– Upgrade 의 용이성

• Software potability– De facto standard 화한 message passing paradigm

implementation 에 따른 프로그램의 호환성 증가됨

• Scalability– 확장성이 높은 Architecture

– Avalon 의 경우 140 대의 Alpha PC + Fast Ethernet 사용

• 개발의 용이성– 운영체계와 Compiler 개발 , Network component 개발

등에 관한 부담을 덜어주고 응용 프로그램 개발에만 치중할 수 해 줌

Page 14: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 14

Linux Cluster System CompositionLinux Cluster System Composition

• Hardware System Selection

• Node Network Configuration Composition

• Parallel Configuration Composition

Page 15: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 15

Hardware System SelectionHardware System Selection

• 선택시 고려사항– 문제의 계산량– 문제의 병렬화 경우 통신의 양과 형태– 문제의 크기 ( 필요한 메모리의 양 )– 문제의 I/O( 필요한 하드 디스크 공간과 I/O 형태 )

• 노드 CPU– Inter vs Alpha (or other)

– Single CPU vs SMP

– 병렬 컴퓨터는 동기화 (Synchronization) 때문에 가장 느린 노드 컴퓨터의 속도가 전체 속도를 결정한다 .

Page 16: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 16

Hardware System Selection(cont.)Hardware System Selection(cont.)

• 노드간 연결과 관련된 하드웨어 사항– Fast Ethernet + 100 Mbps Switch

– Myrinet NIC + Myrinet Switch

– Gigabit Ethernet + Gigabit Switch

– SCI + SCI Switch

– ATM Card + ATM Switch (?)

– PLIP (?)

• Hard disk system 선택– Big disk + diskless

– Disk on every nodes

– Local disk and I/O disk

Page 17: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 17

Hardware System Selection(cont.)Hardware System Selection(cont.)

• Serial console or not

• 소비전력과 열• 노드간 연결의 논리적 구조와 관련된 사항

– Switch 구조의 경우 논리적 구조 선택이 상당히 자유롭다 .– Multi-level switch, Channel bonding

– Multiple networks

• Hard disk system 의 논리적 구조– Share noting(Distributed file system)

– Share something(Local partition + NFS partition)

– Share everything(Diskless + NFS)

Page 18: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 18

Node Network Configuration Node Network Configuration CompositionComposition

• Single access point vs Multiple access points

• NIS

• rsh

Page 19: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 19

Parallel Configuration CompositionParallel Configuration Composition

• Linux Cluster 에서 현재 사용가능한 병렬환경– Message passing

• LAM(Local Area Multi-computer)– 메시지의 Size 에 따라 매커니즘이 다름 . – 작은 Size 에 적합

• MPICH(MPI-Chameleon)– 큰 Size 에 적합

• PVM(Prallel Virtual Machine)

• KMPI(Kool MPI)

Page 20: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 20

MPI Linux Cluster ProgrammingMPI Linux Cluster Programming

• Parallel Programming

• MPI Programming

• MPI Function

• MPI Programming 의 고려 사항• 간단한 MPI Programming 예제

Page 21: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 21

Parallel ProgrammingParallel Programming

• 병렬 프로그래밍 모델– PRAM (Parallel Random Access Machine) Model

– QSM (Queued Share Momory) Model

– DMM (Distributed Memory Model)

– Postal Model (Explicit massage passing Model)

– BSP (Bulk Synchronous Parallel)

– HMM (Hierachial Memory Model)

– more

Page 22: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 22

Parallel Programming(cont.)Parallel Programming(cont.)

• Message passing– 정보를 Local 메모리 상에 존재하는 경우와 다른 컴퓨터의

메모리 상에 존재하는 경우로 구분하고 , 병렬 프로그램 상에서 non-local 정보가 필요할 때 , message 를 주고 받아서 해결

– 분산 메모리에 적합– 두개의 노드 또는 다수의 노드가 협력– PVM (Parallel Virtual Machine)

– MPI (Massage Passing Interface)

– BSP (Bulk Synchronus Parallel)

Page 23: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 23

Parallel Programming(cont.)Parallel Programming(cont.)

• Data Parallel – 데이터의 구조를 미리 분배하는 형태로 선언한 후 , 이렇게

선언한 정보가 Local 정보인지 non-local 정보인지 필요에 따라서 컴파일러와 하드웨어가 해결

– 공유 메모리에 형태에 적합– Lock-unlock mechanism

– Open_MP

– HPF

– F90

• In-between– Linda

Page 24: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 24

MPI ProgrammingMPI Programming

• 소개– 1994 년 MPI forum 에 의해 표준화 됨– MPI forum : 이전에 병렬 컴퓨터를 위해서 프로그램을

작성하고 수행하던 여러가지 방법에 대한 일관된 표준을 마련하기 위해 결성된 단체

– Message passing paradigm 을 이용하는 컴퓨터를 프로그램하고 사용하는 표준을 제정

– 슈퍼컴퓨터 industry 의 de facto 표준 역할– 병렬 컴퓨터 하드웨어와 독립적으로 병렬 프로그램을

작성하고 유지 가능– 공유 메모리 방식의 병렬 컴퓨터 Architecture 에서도

Open_MP 라는 업계 공동의 표준을 마련하는 계기가 됨

Page 25: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 25

MPI Programming(cont.)MPI Programming(cont.)

• 목적– 메시지 패싱 형태의 병렬 프로그램 호환성 (Portability)

– 효율성 (Effichiency) 은 계속 유지– 자유로운 기능성 (Functionality)

• 특징– Message passing standard – Portability

– Based on previous message passing libraries

– Program interface

– Allow efficient communication

– Allow heterogeneous environment

– C and Fortran 77 binding – language independent semantics

Page 26: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 26

MPI FunctionMPI Function

• Task management– MPI_Init()

– MPI_Barrier()

– MPI_Wtime(), MPI_Wtick()

– MPI_Finalize()

• Communicator– MPI_Comm_create()

– MPI_Comm_rank()

– MPI_Comm_size()

Page 27: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 27

MPI Function(cont.)MPI Function(cont.)

• Topology management – MPI_Cart_create()

– MPI_Cart_coords()

– MPI_Cart_get()

– MPI_Cart_rank()

• Communication– Blocked send-receive : MPI_Send(), MPI_Recv(),

MPI_Sendrecv()

– Non-blocked send-receive : MPI_Isend(), MPI_Irecv(), MPI_Wait()

– Collective communication : MPI_Reduce(), MPI_Allreduce(), MPI_Bcast(), MPI_Scatter(), MPI_Gather()

Page 28: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 28

MPI Function(cont.)MPI Function(cont.)

• Derived Data type– MPI_Type_commit()

– MPI_Type_size()

– MPI_Type_struct()

• Process group

Page 29: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 29

MPI ProgrammingMPI Programming 의 고려 사항의 고려 사항

• Load balance or domain decompostion

• Surface-to-Volume ratio

• Deadlock and racing condition

• 병렬화하려는 문제의 순차 처리 프로그램이 존재하지 않는 경우– 문제 분석 병렬화가 가능한 알고리즘 선택– 선택한 알고리즘으로 순차 처리 프로그램 작성 ( 순차처리

프로그램으로 작성된 template 이 있는 경우 debugging에 유리 )

– 순차처리 프로그램 작성시 병렬화를 염두에 두고 , 병렬화할 경우에 message passing 이 필요한 부분을 국소화할 수 있도록 프로그램 작성

Page 30: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 30

MPI ProgrammingMPI Programming 의 고려 사항의 고려 사항

• 병렬화하려는 문제의 순차 처리 프로그램이 존재하는 경우– 코드 분석 병렬화가 가능한 알고리즘인지 아닌지 확인– 가장 많은 시간이 걸리는 부분부터 병렬화 시작

(ever dimiinishing returns)

– Message passing 이 필요한 부분을 선별하고 국소화– 필요하면 순차처리 프로그램을 개선 또는 재작성– 병렬화

Page 31: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 31

간단한 간단한 MPI Programming MPI Programming 예제예제

#include <stdio.h>#include </usr/local/lam-CFC/h/mpi.h>

#define N 1000000

main (int argc, char** argv) {

int i, node, numtask, subN, iroot;float A[N];double sum, sumt;

MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &node); MPI_Comm_size (MPI_COMM_WORLD, &numtask);

subN = N/numtask;

Page 32: Linux Cluster System

KWANGJU UNIVERSITY 운영체제론 32

간단한 간단한 MPI Programming MPI Programming 예제예제

for (i = 0; i < subN; i++) A[i] = (float)(i + 1 + node*subN);

sum = 0.0;

sumt = 0.0;

iroot = 0;

for (i = 0; i < subN; i++) sum = sum + A[i];

MPI_Reduce(&sum, &sumt, 1, MPI_DOUBLE, MPI_SUM, iroot,

MPI_COMM_WORLD);

printf(“total sum = %f\n”, sumt);

MPI_Finalize();

}