Posted
Filed under Computer/HPC
이 글은 연제식으로 조금씩 조금씩 쓰려고 합니다.
한번에 모두 쓰기가 힘들것 같아서요... ^^;;

ACE는 Supercomputer 운영 및 관리에 편리하도록 개발된 Appro 제품입니다.
제가 이전에 ACE에대해 소개 자료 형식으로 만든것 중에 소비자들이 가장 궁금해 할 만한 내용을 토대로 질문답변 형식으로 만들것이 있어 그 내용을 약간 소개해보려고 합니다.
물론 현재 ACE는 좀더 많은 업그래이드가 이뤄졌기 때문에 일부 기능이 더 좋아졌을것입니다.
(저도 ACE 패치 작업에 join을 하게 되었죠... ^^*)

아래 내용은 Appro에서  Tsukuba 에 클러스터 설치 및 사용자 환경을 구축해주면서 제가 Tsukuba 작업을 진행하면서 ACE에대해 알게되고 경험해보면서 idea를 내어가며 얻은 경험을 토대로 작성한 내용입니다. 제가 ACE를 설계한것이 아니라서 어쩌면 일부 내용이 설계와 안맞을수 있을지 모르나 대부분은 경험을 토대로 썼기때문에 거의 대부분은 내용이 맞다고 보시면됩니다.



ACE


Q & A


Cluster
에 대해 상황 별로 이해를 돕고자 질문과 답변 식으로 presentation을 합니다.


ACE
의 구조적 특징

Ø   Project 또는 부서에 따라 Resource 분배가 빈번해서 Cluster를 나누거나 합쳐서 쓰고 싶다.

n  ACE Cluster 가상화(partition) 이용하여  Cluster resource split하거나 합쳐 상황에 맞게 computing power size 쉽게 조절할 있다.

 

Ø   부서 또는 Project 특성상 서로 다른 OS 또는 완전히 서로 다른 환경을 써야만 한다.

n  ACEPartition function을 이용하여 하나의 Cluster를 도입했을지라도 logical clusterpartition을 하면 각각 logical cluster는 서로 다른OS를 사용할 수도 있고 서로 다른 환경으로 구성하여 한 시스템에서 여러 OS나 환경으로 독립적으로 사용이 가능하다.

 

Ø   클러스터를 사용하다 보면 과거 설정으로 복원을 해야 될 경우가 생긴다.

n  ACE에는 cluster image revision 관리 기능이 있어 각 logical cluster 마다  설정에 따른 revision이 보관되어 있어 언제든지 쉽게 구 버전 또는 신버전으로 바꿔 사용할 수가 있다. (cluster OS환경에 대한 자동 백업기능)

n  ACE에는 전체 revision에 공통적으로 사용되어야 하는 사용자 환경설정은 따로 설정하여 revision을 바꾸더라도 그냥 환경을 이용할 수 있도록 구성되어 있다.

 

Ø   Software install 및 노드 마다 환경 설정 하려면 힘들다.

n  ACE에서는 checkout(read/write 모드) 후에 checkout 노드에서만 software install 설정을 후에 checkin(read only mode)하면 whole cluster에서 software 환경을 사용가능 하다.

n  ACE에서는 cluster OS영역이 read only이기 때문에 관리자/사용자가 프로그램 삭제 등의 실수를 막을 수 있다.

n  일부 read/write 파일에 대해 잘못 설정을 했을 경우에 the node를 재 가동만 하면 다시 원래 상태로 돌아간다.

 

Ø   Compute node crash 되었을 때 다시 설치하려면 시간이 많이 걸리고 설정이 어렵다.

n  ACE에서 compute node supper computer CPU board 개념으로 사용되기 때문에 compute node crash 불량 node 1:1 간단히 교체 power on하면 작업이 끝난다. (불량 노드는 off line상에서 수리 또는 교환한다.)

 

Ø   사용하는 softwaredisk I/O가 심해서 local scratch disk를 사용해야만 한다.

n  ACE disk-less based cluster이지만 local disk 대한 규칙만 넣어두면 compute node boot-up 자동으로 local scratch disk 사용할 있도록 구성된다.

n  Local disk crash가 나면 disk 교체 후 재가동하면 자동으로 다시 구성시켜 올려주기 때문에 다른 추가 작업이 필요 없다.

 

Ø   Disk-less Cluster는 대규모로 할 경우 성능 저하 현상이 있다.

n  ACE에서는 sub management node 개념을 두어 일정 compute node sub management node support 하기 때문에 Cluster scale 커져도(대규모여도) 성능 저하 현상이 없다.

 

Ø   Disk-less Cluster는 마스터가 죽게되면 whole cluster 죽게 되어 운영이 되지 않는 단점이 있다.

n  ACE에서는 master node HA 구성되어 있어 main management node 죽을지라도 whole cluster 전혀 영향이 가지 않는다.

n  Compute node GNBD File system 사용하기 때문에 OS image 제공하는 management node 문제가 생길지라도 다시 management node 복구하면 whole compute node 재가동 없이 상용하는데 문제가 전혀 없다.

 

Ø   Disk-less Cluster를 구성하려면 MAC Address등 복잡한 설정을 해야 하거나 노드의 위치가 바뀌면 hostname이 바뀌는 단점이 있다.

n  초기 설치 때 구성한 ACE 환경 설정에 의해 특정 고정된 위치에 any node가 들어가면 고정된 hostname을 갖게된다. CPU 보드의 개념이므로 관리자는 위치나 설정에 대해 따로 신경 쓸 필요가 없다.

 

Ø   Compute node crash 시 매번 바로 바로 교체를 해야만 하는가?

n  ACE에 있는 Hot spare 기능으로 하나의 노드가 불량 나면 바로 자동으로 넘어가기 때문에 불량 노드만 교체 작업을 하면 된다.  (기능이 완성되었나 안되었나 아직 모르겠습니다.)

ØACEH/W 관리기능

Ø   Clusterremote에서 power on/off/cycle를 하고 싶다.

n  ACE에서는 networkssh만 연결할수 있으면  ACE GUI/CLI를 이용하여 단일 노드 또는 그룹 단위의 node  poweron/off/cycle을 쉽게 할수 있을 뿐만 아니라 모든 관리 및 모니터링이 가능하다.

n  Compute node 부팅 과정의 상태를 모니터링 가능하다.

 

Ø   Network port 또는 cable이 문제 생기면 disk-less이기 때문에 문제이다.

n  ACEClusterdual network로 구성하면 failover for redundant networks

 

Ø   시스템 관리자와 H/W 엔지니어가 서로 다른 곳에 있을 때 노드 점검을 이야기 할 때 compute node가 너무 많이 실수 할때가 있다.

n  ACE는 같은 화면을 관리자와 H/W 엔지니어가 볼 수 있으며 관리자가 노드에 maintain과 같은 마크를 하면 H/W 엔지니어가 마크된 정확한 노드만 점검이 가능하다.

 

Ø   수많은 컴퓨터의 BIOS를 업그래이드 하려면 너무 힘들다.

n  BIOS image파일을 설정을 해두고 노드만 재 부팅하면 자동으로  BIOS를 업그래이드 하여 준다.

ACE command tools

Ø   수 백대 이상의 compute node에서 메모리 불량을 찾으려면 너무 힘들다.

n  ACE에서는 edac 이용하여 (included edac  support chip set in M/B) memory 불량을 logging하여 history 갖게 있고 또한 한번의 command 어떤 노드에 메모리 불량이 있는지 쉽게 찾을 있다.

 

Ø   수천 개의 Infiniband cable이나 연결된 port들에서 문제 발생시 어떻게 찾아야 할지 어렵다.

n  Infiniband 명령어를 실행해 Infiniband cable test 통하여 불량 포트에 대한 log guid port 번호를 tools command 넣으면 어느 위치(infiniband S/W or Compute HCA) 어떤 포트와 어느위치 (infiniband S/W or Compute HCA) 어떤 포트가 연결되어 있는지 도식화된 결과를 보여주기 때문에 위치와 연결 구조를 쉽게 찾을수 있다.

n  너무 많은 Cable로 인해 연결을 잘못시켜 문제가 발생되는 경우가 있는데 이 command을 이용하여 원하는 guidport 번호를 넣으면 연결되어야 하는 상대 위치와 포트번호를 찾을 수가 있다.

 

Ø   Compute node가 너무 많아 일일이 점검하려면 너무 힘들다.

n  ACE에 있는 유용한 tool을 이용하면 하나의 명령어로 whole cluster의 기본적인 상태를 간단히 전체적으로 점검해볼 수가 있다.

n  다양한 tool을 이용하여 상황에 맞게 정보를 살펴보거나 명령어를 단위노드, 그룹 또는 전체적으로 실행하는 기능이 된다.

n  Command tools은 단위노드, 렉 단위, 그룹 단위 또는 클러스터 단위로 하나의 명령어로 명령어 실행 또는 정보를 볼 수가 있다.

 

Job schedule

Ø   Job schedule를 한눈에 보고 싶다

n  ACE GUI를 이용하면 한눈에 job schedule 상태를 실시간으로 모니터링 가능하다.

n  Job Number를 클릭하면 그 job에 대해 상세하게 정보를 보여준다.

n  QueueJob scheduler에 등록된 host에 대한 정보를 다른 tab에서 살펴볼 수가 있다.

2009/06/26 13:32 2009/06/26 13:32
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC
이제 GPU 시대가 개막을 하려는것인가?

한참 GPU가 관심으로 급부상하면서 이 관심을 맞추기 위해 업체들이 하나둘 신경을 쓰면서 GPU 시대가 개막을 하려는것 같아보인다. NVIDIA에서 Tesla라고 하는 GPU Cluster를 만들었고 또한 CUDA라는 GPU 컴파일러 및 Driver를 공개함으로서 GPU 시대의 개막을 한발 앞당겼나보다.

오늘 PGI New를 보니 PGI 8.0같은 경우에는 PGI + GPU를 제공한다고 한다.
PGI 8.0에서 제공하는것은 C99 + Fortran을 제공하며 x86+NVIDIA 기반의 시스템에서 PGI 8.0 x86+GPU를 이용하여 GPU의 Vector 컴파일을 통해 한층 빠른 성능을 느낄수 있도록 제공한다고 한다. 이렇게 하나둘씩 컴파일러 회사들이 GPU를 쉽게 OpenMP를 사용하듯 사용할수 있도록 만들어 주면서 개발된 Vector CPU의 일종인 GPU가 급부상하게 되어 GPU 시대를 개막할것 같다.

물론 컴파일러만 제공한다고 끝나는것은 아니겠지만 WRF같은 프로젝트에서도 GPU를 이용한 테스트 및 개발이 한참이다. 현재는 테스트 가능한 것을 제공하기 도한다.

실제 테스트를 해보면 간단한 테스트인지는 모르겠지만 GPU를 이용하는것이 이용하지 않을때보다 속도차가 많이 난다는것을 확일할수 있게된다.


이렇게 이곳저곳에서 하나둘씩 GPU이슈가 생겨나고 또한 support를 하는데가 많아지고 개발이 점점 많아지므로 슈퍼컴퓨터 시장에서 Vector CPU가 사라지면서 클러스터 시장에서 다시 Vector 계열인 GPU 시장으로 흘러 갈것 같다.  고가의 슈퍼컴퓨터 시장에서 Vector CPU의 한계와 시장과 수요의 문제로 인한 붕괘를 다시 클러스터 시장에서 가격이 아주 절염하면서 잘 갖춰진 Vector 계열의 CPU인 GPU가 다시 새싹을 틔우며 급 부상하려고한다.
2008/10/28 18:44 2008/10/28 18:44
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC
일본 Tsukuba 대학교에 Appro의 Supercomputer를 설치를 했다. 3월에 appro에 입사를 하여 미국 본사에서 부터 일본 Tsukuba 대학까지 약 2개월 이상 출장을 다니면서 설치 준비작업부터 설치작업까지 진행하여 왔다. 이제 거의 마무리 작업이 되어 간다. 그래서 작업했던 최종 맴버들끼리 장비앞에서 함께 사진을 찍었다.

Shannon, me(kage), Jim & Joon 이렇게.... 다른분들은 없어서... 우리끼리.. ^^;;
User inserted image

여기서 3명은 미국 국적이고 나만 한국 국적이다. ^^
(30대 40대 60대의 맴버들... ㅎㅎ)

(사진에 보여지는 사람보다 사진에 보여지지 않은 고생하신 수많은 사람이 있지만... ^^;;
개인 적인 블로그이다보니 개인적으로 사진이 있는분만... ^^;; 다른분들께는 죄송합니다.)

Jim은 저 많은 나이에도 참 열정적이다. 나도 나이를 저렇게 먹을때까지 저렇게 열정적인 엔지니어로 살고 싶었는데 내 앞에 저렇게 해외에서는 유명하고 알아주는 분과 팀이 되어 함께 일할수 있었다는것이 너무나도 기분이 좋았고 즐거웠다. 

다른분들과 함께 일하면서도 문제를 하나하나 풀어가면서 즐거워했던 즐거운 기억이 가득하다.  특히 물론 내가 영어가 짧아서 잘 못알아 듣는것도 있지만 그런 와중에도 서로 하나하나 문제를 풀어가면서 외국인인 Jim, Shannon이 즐거워하면서 함께 야호를 부를때면 참 영화같같다는 생각이 들면서 재미있었고 즐거웠다.

한편으로는 나이드신분께 표현이 안어울리지만 참 해맑게 웃는 모습이 너무나..... ^^*

아무튼 이런 프로젝트에서 이렇게 함께 모두 일할수 있었다는것이 즐거웠고 또한 내 꿈처럼 나이 먹어서도 남들이 인정을 해줄만한 인물로 현업에서 열심히 일하는 모습을 그렸던 그런분과 함께 일할수 있었다는것이 더욱더 즐겁고 좋았다.  어디에서도 살수없는 경험이고 행복같다. 일은 정말 너무나도 힘들고 많았다고 생각했지만 적은 인원이 이런 큰 프로젝트에 붙어서 이렇게 맞춰진 내가 생각할때 넉넉치 않은 시간내에 해낸다는것역시 놀랍고 좋은 경험이었다. 물론 이런 프로젝트에 내가 참가했다는것에 더욱더 놀라울뿐이다. 이런 프로젝트에서 나도 하나의 힘이 된다는것이 너무도 기쁘다.... ^^


일본에서 지진을 격어보니 엄청나다는것을 알았는데 이런 슈퍼컴퓨터가 그런 지진에 괜찮을까 걱정을 많이 했었는데 그런 지진에도 대비되어 설계가 된 전산센터라는것이 더욱더 놀라울뿐이다. 지진 이후에 전산센터에 일하러 갔을때 장비들은 여전히 멀정히 살아 있었고 또한 장비에 큰 문제도 없어 보였다. 정말 신기했다. ㅎㅎ 그런 엄청난 아니 일본인한테는 별거 아닐지 몰라도 외지인에게는 엄청난 지진이었는데 진도 5정도였으니....

욕심같아서는 남은 기간동안 더욱더 열심히하여 Linpak 돌렸을때 부디 생각보다 더 좋은 결과가 나와서 Top500 site에 조금더 좋은 자리를 차지했으면 좋겠다. 첫 project에서 좋은 분들과 일했다는 것뿐만 아니라 이렇게 큰 프로젝트를 기간내에 이뤄내는 저력 속에 나역시 하나의 힘이되었다는것도 즐거웠지만 하나의 더큰 선물로 첫 프로젝트에서 Top 500 site에까지 좋은 자리를 차지한다면 너무나도 크나큰 선물일것 같다.


나의 큰 소원은 아직 멀었지만 하나의 꿈이었던 내가 해외에 까지 진출한다는것과 전세계의 Cluster 기술에 내가 참여하여 함께 한다는것이 었는데... 이것역시 어느정도 이뤘다고 생각이 든다. 이젠 다음 꿈으로 하나를 더 키워본다. Jim을 소원인 Top 500사이트에 1위를 올리는것처럼 나에게 새로 생긴 하나의 꿈 역시 Top 500 site에 1위를 올려 보는 것이다.

언제쯤 이뤄질까??

아니 언제쯤이면 이 꿈을 이룰 수 있는 나의 기술이 아니 그릇이 될까??? ^^*

ps, 앞으로 더 많은 좋은 프로젝트들을 이 좋은 분들과 함께 많이 할 수 있도록 더 좋은 프로젝트들이 계속 생겼으면 좋겠다. ^^
2008/05/19 00:37 2008/05/19 00:37
kage

System Name : T2K Open Supercomputer
Site : Center for Computational Sciences, University of Tsukuba
System Family : Appro HyperBlade
System Model : Appro XtremeServers
Computer : Appro Xtreme-X3 Server - Quad Opteron Quad Core : 2.3 GHz, Infiniband
Vendor : Appro International
Application area : Research
Main Memory : 20416 GB
Installation Year : 2008

Operating System : Redhat Linux
Memory : 20416 GB
Interconnect : Infinband DDR 4x
Processor : AMD x86_64 Opteron Quad Core 2300 MHz (9.2 GFlops)

Cores : 10000
Rmax(GFlops) : 76460
Rpeak(GFlops) : 92000
Nmax : 1508000
Nhalf : 0

Top 500
Year : Rank : Rmax
11/2008 : 32 : 76460
06/2008 : 20 : 76460

Japan : 2nd

다꺼

좋은 경험을 하고 있구려~~~
너무 일만 하지 말고 장가도 얼른 가시게나~~~ ㅋㅋㅋ

kage

^^ 그러고 싶은 맘은 굴뚝같으나... 쩝... 없네요... ^^;;
어디에 숨어 있는지... 도통 찾기가 힘들어서... ㅋㅋ

[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC

나의 컴퓨터를 이것저것 자료를 살펴보다가 사라진줄 알았던 예전에 만들어두었던 Cluster manual을 발견했다. 잃어버리기 전에 나의 웹에 이렇게 공개를 하여보고자 한다.
2002년 5월까자 5번에 걸쳐 수정 보완한 메뉴얼로서 따라만 하면 될정도의 자세한 클러스터 개발 매뉴얼이다.  그러나 이 메뉴얼은 과거의 클러스터 기술에는 적용되었으나 지금의 클러스터에 적용하여서는 실제적으로 잘 되지 않을것이다. OS의 변천과 기술들의 변천에 따라 적용이 되지 않을것이다. 
그러나 나의 초반 클러스터를 공부하면서 계속적으로 업그래이드하고 열심히 문서화하던 기억이 새록새록 나서 별로 적용은 되지 않겠지만 이렇게 클러스터를 공부하고자 하는 분들께 공개를 한다. 
왜? 별로 적용이  되지 않겠지만 클러스터를 공부하고자 하는 분들께 공개를 한다고 표현을 한것인지 의아해 할수도 있으나 이 분서는 클러스터에 대한 전반적인 기술과 과거의 기술에대한 정보를 얻어보고자 하시는 분들께 공개를 하는것이다. 또한 나의 아련한 옛 추척이 담긴 글이라 사라지기전에 내 홈피에 남겨두려고 한다.

문서를 옮기다보니 부분 부분 글이 이상하거나 그림이 빠졌다. 이것을 감안하여 봐주시길....




Linux Diskless Cluster

5th Edition

기상연구소 예보연구실

*박광기

도종관

이용희

2002.5.28

1. H/W Setting

1.1 Master Node Bios Setting

1.2 Slave Node Bios Setting

1.3 Slave Node Onboard Lancard 부팅 셋팅

2. Clustering

2.1 Clustering에 필요한 package

2.2 Master node Setting

2.2.1 HDD partitioning

2.2.2 TFTP setting

2.2.3 DHCP setting

2.2.4 NIS setting

2.2.5 RSH setting

2.2.6 syslog

2.2.7 /etc setting

2.2.8 kernel setting

2.3 Slave node Setting

2.3.1 sdct

2.3.2 /tftpboot/Template

2.3.3 slave node kernel

2.3.4 adcn

2.3.5 test node debug

2.3.6 slave node 추가

3. 필요한 소프트웨어 설치

3.1 MPICH

3.2 PG COMPILER

3.3 OpenMP

3.4 PVM

3.5 NETCDF

3.6 NCARG

4. 추가적인 기술들

4.1 PXE

4.2 Channel Bonding

4.3 MON

4.4 MOSIX

4.5 M-VIA

4.6 MYRINET

4.7 BPROC

5. 참고 자료

6. Benchmark

6.1 H/W 성능에 따른 성능 비교

6.2 Network 속도에 따른 성능 비교

1. H/W Setting

1.1 Master Node Bios Setting

* Bios setting

[Advanced]

Keyboard Configuration

--> Keyboard Error : Ignore Error

[Boot]

Removable Devices

HDD <-- Master이므로 HDD로 부팅하는 것이 정상.

MBA UNDI (Bus0 Slot15)

MBA UNDI (Bus0 Slot16)

1.2 Slave Node Bios Setting

* Bios setting

[Advanced]

Keyboard Configuration

--> Keyboard Error : Ignore Error

[Power]

ACPI Enabled : No

Power Savings : Disabled

[Boot]

MBA UNDI (Bus0 Slot15) <-- OnBoard Network Boot사용하기 위해.

1.3 Slave Node Onboard Lancard 부팅 셋팅

* Bios 셋팅이 끝나면 ( Boot가 MBA UNDI인 경우 ) 시스템이 재가동된다. 이때 화면상에 "Control + Alt + B" 가 나오면 그대로 따라 누른다. 이렇게 하면 onboard lancard 붙팅에 관련된 옵션을 셋팅 할 수 있는 창이 뜬다. 이때 다음을 수정한다.

Boot Method : TCP/IP

Protocol : DHCP (우리가 주로 DHCP를 사용할 것이므로 )

Config message : Enabled

Message Timeout : 3 seconds

Boot Failure Prompt : Wait for time out

Boot Failure : Reboot ( 실패하게되면 시스템을 자동으로 재가동하게 하기위해)

F10을 눌러서 저장하고 나온다.

2. Clustering

2.1 Clustering에 필요한 package

DHCP

dhcp-common

dhcp-server

dhcp-client

TFTP

tftp

tftp-server

tftpboot-script

adcn

sdct

Etherboot

mknbi ( etherboot )

imggen ( Onboard Lancard rom boot )

RSH

rsh-server

rsh

NIS

ypbind

yp-tools

ypserv

mawk (이 패키지가 없으면 make를 하여도 ypcat하면 자료가 나오지 않는다. make할 때 조금 문제가 발생한다. mawk대체 품은 awk이다.

(Makefile에서 수정해 주면 됨))

CHANNEL BONDING

2.4.x부터는 kernel에 포함되어 있으므로 kernel컴파일시 channel bonding을 모듈로 켜놓으면 됨.

2.2 Master node Setting

2.2.1 HDD partitioning

Diskless로 클러스터를 구성하면 hard link를 해야 경우가 있다. 그런데 hard-link는 동일한 파티션내에서는 문제가 되지 않지만 다른 파티션 사이에서는 하드링크를 걸 수가 없기 때문에 node수만큼 필요한 공간을 사용하기 위해 root(/)를 크게 하고 그곳에 node용 NFS-root 영역을 잡는 것이다. 따라서 추가되는 노드수에 대비하여 충분히 크게 잡아주는 것이 좋다.

/ : node수에 맞게 적당히 ( node당 ( 150MB ~ ) 200MB정도 계산함 )

/usr : 15G정도 ( 많은 소프트웨어 깔므로... )

/home : User Data용

2.2.2 TFTP setting

/etc/xinetd.d/tftp 파일을 vi로 열어서 'disable = yes'로 된 부분을 'disable = no' 로 바꿔주면된다. 만약에 수동으로 하고 싶지 않다면 redhat 계열 linux같은 경우에는 setup 명령을, mandrake linux같은 경우에는 ntsysv 명령을 통하여 service중 tftp를 체크해 주면 된다. 이 tftp 셋팅은 rpm 패키지를 설치한 후에 서비스를 가동시켜주기만 하면 된다. 이유는 dhcp 또는 bootp서버를 이용할 때 TFTP는 kernel전송용 FTP 역할만 하기 때문에 별도로 고려해야 할 것이 없다. TFTP를 가동할 때는 /etc/rc.d/init.d/xinetd restart를 해주면 된다. (오래된 배포판은 /etc/rc.d/init.d/inet restart )

( 사용자인증과정 없이 서버에 지정된 위치의 파일을 요구하면, 파일을 전송해 주

는 방식. 보안은 취약하지만 아주 기본적인 파일 전송만 하면 될 때 많이 쓰임.

주로 네트워크 장비들의 펌웨어 등을 업그레이드할 때 많이 사용되어짐.)

TFTP 서버는 기본적으로 /tftpboot 디렉토리를 기본 디렉토리로 사용한다. 만약에 이 디렉토리를 사용하고 싶지 않다면 kernel source에서 /tftpboot로 된 것을 찾아 수정한 후에 kernel을 컴파일 할 경우에는 자신이 바꾼 디렉토리가 tftp서버의 기본 디렉토리가 된다.

sdct나 adcn을 돌리기전에 master node설정을 끝내고 sdct를 돌린다. 그리고 나서 /tftpboot/Template 설정이 끝나면 adcn을 돌리면 된다.

sdct를 돌리기 전에 /tftpboot가 있다면 문제가 되므로 /tftpboot 디렉토리를 지운 후에 sdct를 돌리면 된다.

2.2.3 DHCP setting

Diskless를 사용하는 것은 관리상 편리함이 가장 우선이고 또한 Hard disk의 가격부담을 줄이는 장점도 있다. 이 문서에서는 계산 전용 Cluster를 위주로 하여 설명하기 때문에 CPU자원을 최우선으로 고려하며 또한 문제 발생시 쉽게 CPU용 컴퓨터만 간편하게 재부팅해도 하여도 kernel이나 file system이 손상되는 등의 문제가 발생하지 않으므로 중요한 fileserver만 관리하면 되기 때문에 관리 및 유지상 장점이 있다. 이 문서에서는 diskless Clsuter를 만들기 위해서 사용하는 방법이 DHCP 또는 BOOTP 기능을 활용 수 있도록 다루었다. 그러나 BOOTP는 고전적인 방법이고 DHCP를 사용하는 것이 편리하여 BOOTP에 대해서는 환경 설정 파일만 간략히 설명하고 여기서는 DHCP를 중심으로 설명을 하였다.

[DHCP]

/etc에 있는 dhcpd.conf파일을 수정하고 나서 /etc/rc3.d/S*dhcp를 설정하여 부팅시에 자동으로 DHCP daemon이 가동되도록 설정하면 된다. 물론 이것 역시 /etc/dhcpd.conf 파일을 수정한 후에 간단하게 redhat 계열 linux에서는 setup명령으로 설정하고, mandrake linux에서는 ntsysv명령으로 dhcp service를 설정할 수가 있다.

실제 Node간에는 사설 IP로 설정하여 연산에만 사용할 수 있도록 하고 master node에만 접속 가능한 IP를 설정하는 예제이다. (사설 IP: 10.1.10.x/접속용 IP: 210.200.100.x라고 하자)

------------------------/etc/dhcpd.conf---------------------------------------

not authoritative;

#ddns-update-style none;

#log (info, concat ( "VCI: " , option vendor-class-identifier ) );

shared-network expo {

subnet 10.1.10.0 netmask 255.255.255.0 {

}

subnet 210.200.100.111 netmask 255.255.255.255 {

}

}

group {

default-lease-time 21600;

max-lease-time 21600;

use-host-decl-names on;

option domain-name "kma.go.kr";

option subnet-mask 255.255.255.0;

option broadcast-address 10.1.10.255;

option routers 10.1.10.10;

option domain-name-servers xxx.xx.xx.x;

option nis-domain "expo";

option nis-servers 10.1.10.10;

option log-servers 10.1.10.10;

option tftp-server-name "expo";

server-name "expo";

host expo1 {

hardware ethernet 00:E0:81:03:6E:27;

fixed-address 10.1.10.11;

option root-path "/tftpboot/10.1.10.11";

next-server 10.1.10.10;

filename "/10.1.10.11/boot/bzImage.mba";

}

host expo2 {

hardware ethernet 00:E0:81:03:6D:09;

fixed-address 10.1.10.12;

option root-path "/tftpboot/10.1.10.12";

next-server 10.1.10.10;

filename "/10.1.10.12/boot/bzImage.mba";

}

..........................................

host expo8 {

hardware ethernet 00:E0:81:03:6C:65;

fixed-address 10.1.10.18;

option root-path "/tftpboot/10.1.10.18";

next-server 10.1.10.10;

filename "/10.1.10.18/boot/bzImage.mba";

}

}

---------------------------------------------------------------------

option domain-name은 이 master node가 속해있는 domain name을 적어주면 된다. option subnet-mask에는 Cluster간 통신할 네트워크 Class를 C Class로 설정하였다. option broadcast-address는 Cluster간 통신할 네트워크 broadcast영역을 설정해준다. option routers는 Cluster의 master node의 Cluster IP를 써주면 된다. Cluster의 모든 통신은 Master node로부터 이루어지기 때문이다. option domain-name-servers는 이 cluster의 hostname을 등록해 dns서비스를 하는 서버의 IP를 적어주면 된다. option nis-domain은 master node에서 NIS를 통해 각 연산노드들의 계정을 일괄 관리하기 위해 NIS 기능을 사용하는데 이때 NIS서버가 역시 Master Node가 되므로 master node hostname을 써주면 된다. 물론 별도로 관리한다면 용도에 맞게 적어주면 된다. option nis-servers는 NIS서버의 hostname대신 IP를 써주면 된다.

option log-servers는 모든 node의 log내용을 master node에 쌓아두기 위해 설정하는 것이다. 그 이유는 각 node는 disk가 없기 때문이고 또한 관리를 편리하게 하기 위해서이기도 하다.

option tftp-server-name은 tftp로 각 노드의 kernel을 제공할 서버를 써주면 된다. 물론, master node가 각 node의 모든 kernel을 가지고 있고 또한 제공하기 때문에 master node의 hostname을 썼다. server-name는 master node의 hostname을 써주면 된다.

그리고 group안에 있는 host는 각 node의 hostname을 써주면 된다. 즉, 이 DHCP서버가 각 node의 lancard의 macaddress를 참조하여 hostname과 IP를 자동으로 그 host에 제공하게 된다. hardware ethernet은 slave node의 lancard macaddress를 적어주면 된다. 이 값은 etherboot용 floppy를 만들어 부팅 시켜 보거나 lancard driver flopy에 있는 utility를 활용하거나 windows에서 네트웍이 연결된 상태에서 command창을 띄워 netstat -nr 명령을 통하여 알아낼 수 있다. 기타 arpwatch등의 많은 방법을 통하여 알아낼 수 있다. fixed-address는 이 host가 받을 IP이다. 즉, expo1이라는 hostname을 받은 slave node는 10.1.10.11의 IP를 자동으로 부여받게 된다. option root-path은 tftpboot로부터 받아오는 root위치를 알려준다. next-server는 DHCP 서버를 제공하는 master node의 IP를 적어주면 된다. filename은 tftp로 갖고 갈 slave node의 kernel image의 위치를 적어주면 된다. 이런 방식으로 필요한 만큼의 node를 셋팅 하여 주면 된다.

이런 셋팅이 끝나면 /etc/rc.d/init.d/dhcpd restart명령을 통하여 dhcp 데몬을 재가동해주면 된다.

[BOOTP]

이는 /etc/bootptab또는 /etc/bootparams파일이 설정파일이다. 예를 아래에 들었다.

-------------------/etc/bootptab----------------------

global:sm=255.255.255.0:ds=172.16.24.1:gw=172.16.24.1:ht=ethernet:bf=bzImage.new:dn=cep.re.kr:sa=172.16.24.1:

test1:td=/tftpboot:hd=/172.16.24.2/boot:tc=global:ha=0050FC4F0EE3:ip=172.16.24.2:rp=/tftpboot/172.16.24.2:

test2:td=/tftpboot:hd=/172.16.24.3/boot:tc=global:ha=0050FC4F0AED:ip=172.16.24.3:rp=/tftpboot/172.16.24.3:

----------------------------------------------------

여기서 global아래에 적은 것은 모든 연산 노드들에서 공통적으로 사용될 내용임.

sm : sub netmask

ds : DNS서버 IP

gw : gateway IP

df : 부팅할 cluster client node kernel image file name

dn : cluster domain name

sa : tftp서버의 IP주소 ( 대게 cluster master node에 설정하므로 master node IP를 씀)

그리고 각 cluster client node들의 hostname을 시작으로 해서 각 node들의 환경을 셋팅 해 줌.

td : secure TFTP서버에서 사용되는 TFTP의 기본 디렉토리

hd : td와 같이 사용되어 커널 파일의 전체디렉토리 경로임. (TFTP는 td:hd디렉토리를 boot kernel 디렉토리로 인식하므로 /tftpboot/172.16.24.2/boot의 위치가 boot kernel이 있는 위치로 알게 됨.)

tc : global환경을 모두 포함하라는 의미임.

ha : cluster client node lancard hardware address (mac address)

ip : cluster client node IP

rp : cluster client node의 루트 파일시스템으로 마운트할 디렉토리 위치.

필요한 node들은 이렇게 test1, test2, test3, ...로 계속 적어주면 된다.

이렇게 설정이 끝났으면 bootp daemon을 가동시켜주면 된다.

2.2.4 NIS setting

NIS는 여러 host의 계정 관리할 때 매우 편리한 기능이다. 같은 계정을 여러 호스트에 발급하고 또한 관리하기 위해서 매번 여러 호스트에 접속하여 계정 관리를 하고 또한 패스워드도 각 호스트에서 모두 바꾸는 불편함 없이 한 호스트에서만 계정을 발급하고 또한 어떠한 호스트이던 간에 필요할 때 패스워드를 바꾸면 NIS로 묶여 있는 모든 host들의 계정 정보 및 password가 동시에 수정해 준다. 이 기능은 관리자에게 매우 매력적이고 편리한 기능이다. 물론 cluster에서도 각 node에서 연산역할만 하지만 프로그램이 수행되기 위해서는 각 node에 동일한 계정이 있어야 하며, 또한 동일한 계정 정보를 가지고 있어야 하므로 이곳에서 또한 NIS기능을 활용한다. 우선 /etc/yp.conf파일에 NIS정보를 추가해준다.

-----------------/etc/yp.conf-------------

domain expo server 10.1.10.10 <----------- 추가내용

----------------------------------------------------

domain expo server expo로 사용하여도 된다. 그러나 server뒤에 hostname을 쓰기 위해서는 DNS서버에 이 host에 대해 등록되어 있어야만 가능하다. 그렇기 때문에 DNS에 등록되진 않은 경우에는 직접 IP를 적어주어도 된다. IP를 적을 때에는 Cluster 내부에서만 인식할 것이므로 Cluster용 사설 IP를 사용하면 된다.

ypbind 데몬을 돌리기 위해서는 /etc/sysconfig/network 파일에 NIS서버를 설정해줘야만 NIS서버를 정상적으로 작동하게 된다.

---------------/etc/sysconfig/network--------------

NETWORKING=yes

FORWARD_IPV4=yes

HOSTNAME=expo

DOMAINNAME=kma.go.kr

NISDOMAIN=expo <---- NIS를 사용하기위해 추가

GATEWAY=190.1.40.1

GATEWAYDEV=eth3

--------------------------------------------

정보를 찾을 때 /etc/hosts파일에서 찾고 또한 DNS서버에서 찾게 설정되어 있다. 그러나 NIS를 사용하게 되면 네트워크 상에서 NIS서버에서 정보를 찾아야 하므로 다음처럼 /etc/host.conf 파일에 nis를 추가해준다.

-----------/etc/host.conf---------------

order hosts,bind,nis <---- nis 추가

multi on

------------------------------------

여기까지 되었다면 yp의 master를 현재 host에 설정하기 위해 다음 명령을 실행해준다.

/usr/lib/yp/ypinit -m

이것을 실행하게 되면 필요한 정보 등을 갖고 와서 yp용 DB파일을 /var/yp 디렉토리 하에 만들게 된다. 그리고 yp는 보안상 약간의 문제가 될 수 있으므로 다음처럼 yp기능을 제공한 네트웍 범위를 지정해줘야 한다.

--------------/var/yp/securenets----------------

255.0.0.0 127.0.0.0

255.255.255.0 10.1.10.0

255.255.255.255 xxx.xxx.xxx.xx

---------------------------------------------

yp관련 server가 잘 설정되었는지 확인하기 위해 /var/yp/ypservers 파일을 열어본다. yp server의 hostname으로 잘 되어 있다면 ypwhich 명령으로 ypserver를 한번 더 검색해본다. 물론 같이 잘 나온다면 yp설정이 정상적으로 된 것으로 생각하면 된다.

--------/var/yp/ypservers-----

expo

----------------------------

{NIS계정 추가하기}

NIS용 계정을 추가하기 위해서 /etc/passwd 아래에 +:*:0:0:::를 추가하고 그 아래에 계정을 일반적으로 수동으로 추가하듯이 추가하여 주면 된다.

이렇게 계정을 추가한 후에 (+:*:0:0::: 아래에다가) /var/yp 아래에서 make명령을 실행시켜주면 자동으로 계정이 yp db에 등록되게 된다. 한가지 TIP은 yp계정 한계선(+:*:0:0:::)위에 발급된 계정은 그 host에만 적용되며 (NIS로 적용 안됨.) 또한 그 host내에서는 NIS 계정보다 일반계정이 우선권이 있다. 그래서 NIS 계정과 일반계정이 같은 것이 있는 경우에는 그 host에서만은 일반계정이 우선적으로 설정한 내용이 적용된다. 물론 다른 NIS로 묶인 host에서는 NIS정보에 의해 적용된다.

yp그룹은 /etc/group 파일에 +:*:0:를 추가하고 아래에 마찬가지로 추가해주면 된다.

계정 발급 후에는 항상 /var/yp에서 make 명령을 한번씩 돌려주는 것을 잊어서는 안 된다. 이렇게 모든 것이 되었다 싶으면 yp 데몬을 한번 재 가동시켜준 후에 ypcat passwd 명령을 하였을 때 NIS용 계정 발급된 내용이 잘 보이면 NIS는 성공한 것으로 생각하면 된다. 그런데 한가지 yp 데몬들에 대해서는 잘 설정되었으나 ypcat으로 정보가 보이지 않는 경우에는 mawk 패키지가 깔려 있지 않은 경우이다. 그러니 mawk 패키지를 깔아주고 나서 /var/yp에서 make명령를 돌려주면 다시 db가 갱신되어 잘된다. mawk가 없는 경우에는 awk로 대체할 수가 있으므로 /var/yp/Makefile를 열어서 mawk로 된 것을 awk로 수정하여 실행하면 된다.

개인이 패스워드 바꿀 때는 yppasswd 명령을 이용하면 됨.

NIS Client에서 NIS 정보를 만들기 (yp관련 server 설정하기)

/usr/lib/yp/ypinit -s expo

여기서 expo는 NIS 서버 hostname이다.

2.2.5 RSH setting

rsh는 remote shell의 약자로 telnet처럼 login ID와 password를 이용하여 접속하여 사용하는 것이 아니라 ID와 패스워드 없이 다른 host로 쉬게 이동하거나 명령을 직접 실행가능 하게 해준다. 많은 컴퓨터를 관리할 때는 매우 편리하나 조금 보안상 문제가 발생할 수 있다. rsh를 일반사용자들이 사용하기 위해 설정해보자. /etc/hosts.equiv파일에 다음처럼 각 node의 모든 host이름을 적어주자. 만약에 한 host가 2개 이상의 네트워크를 사용하기 위해 2개 이상의 hostname을 갖고 있다면 모든 hostname으로의 network에서 rsh가 가능하게 하기 위해 모두 추가해줘야 한다.

------------/etc/hosts.equiv---------------

localhost

expo

expo1

...

expo8

exp <-- 이 아래는 channel bonding용으로도 rsh를 사용할 수 있도록 하기 위해

exp1

...

exp8

---------------------------

rsh의 보안 및 사용할 기능과 root사용자를 위해 다음처럼 /etc/securetty파일에 내용을 추가해준다.

-------------/etc/securetty----------------

rexec

rlogin

rsh

root@localhost

root@expo

root@expo1

....

root@expo8

-------------------------------------------

또한 root사용자가 rsh를 사용할 때 remote 명령이 안 되는 것을 풀기 위해 다음처럼 내용을 주석 처리해 준다.

------------/etc/pam.d/rsh-----------------

auth required /lib/security/pam_nologin.so

auth required /lib/security/pam_rhosts_auth.so hosts_equiv_rootok

----------------------------------------------

rexec기능을 root도 가능하게 하기 위해 다음처럼 파일에 내용을 추가해준다.

-------------------/etc/pam.d/rexec---------------

.....

auth sufficient /lib/security/pam_rhosts_auth.so hosts_equiv_rootok

...

-------------------------------------------------

rlogin를 root가 사용가능 하게 하기 위해 다음처럼 내용을 추가해준다.

-----------------/etc/pam.d/rlogin-----------------

...

auth sufficient /lib/security/pam_rhosts_auth.so hosts_equiv_rootok

...

---------------------------------------

마지막으로 /root디렉토리에 .rhosts파일을 만들어 준다.

--------------------/root/.rhosts---------------

localhost

expo

expo1

...

expo8

exp

exp1

...

exp8

---------------------------------

2.2.6 syslog

syslog는 각 node마다 각기 쌓이게 되면 관리하기가 불편하다 또한 각 node들이 disk가 없으므로 master node에 모든 log를 쌓는 것이 편리하다. 그렇게 하기 위해 다음처럼 설정하자.

-----------/etc/sysconfig/syslog--------------

SYSLOGD_OPTIONS="-r -m 0" <--- -r 옵션 추가

---------------------------------------------------

-r 옵션은 remote host에서 log정보를 보낼 경우, 받아서 자신의 log파일에 저장하겠다는 것이다. 이렇게 master node에 이것을 설정하고 slave node에 /etc/syslog.conf 에 내용을 master node로 보내게 하면 master node의 log파일에 모든 slave노드의 log까지 들어가므로 하나의 파일만 살펴보면 모든 node의 log를 볼 수 있게 된다.

slave node에서는 다음처럼 파일을 수정해주면 설정된 node로 모든 log내용이 전송된다. 그러므로 slave설정할 때 설정해주면 된다. 물론 adcn를 돌리게 되면 자동으로 master node로 log가 쌓이도록 자동 설정된다.

----------------- /tftpboot/Template/etc/syslog.conf------------------

*.* @expo

-----------------------------------------------------------------

2.2.7 /etc setting

각 node에 대한 cluster용 ip를 설정해준다. 대부분 정보가 hostname으로 사용되기 때문에 hosts파일에 다음처럼 설정해주면 된다.

-------------/etc/hosts--------------------

127.0.0.1 localhost.localdomain localhost

210.200.100.111 expo expo.kma.go.kr

# Cluster

10.1.10.10 expo

10.1.10.11 expo1

........ ...

10.1.10.18 expo8

# Bonding

10.1.100.10 exp exp0

10.1.100.11 exp1

..... ...

10.1.100.18 exp8

--------------------------------------------

/etc/ethers파일은 정확히(??) 뭐에 필요한건지는 모르겠지만 각 node의 lancard macaddress와 각 host의 hostname을 mapping시켜주는 파일이므로 아래 형식처럼 써주면 된다.

/etc/exports파일은 일부러 수정해줄 필요는 없다. 이유는 adcn을 돌리게되면 자동으로 /etc/exports파일이 수정되기 때문이다. 그러나 이 파일은 혹시라도 잘못 된 경우를 대비해서 참조하기 위해 적어둔다.

------------------/etc/exports----------------------

/tftpboot/10.1.10.11 expo1(rw,no_all_squash,no_root_squash,no_subtree_check)

/usr expo1(ro,no_all_squash,no_root_squash,no_subtree_check)

.... ...

--------------------------------------------------------

마지막으로 kernel 및 ip performance 등에 관련된 환경설정 파일이다.

-------------------------/etc/sysctl.conf---------------

net.ipv4.ip_forward = 1

net.core.rmem_default = 262144

net.core.rmem_max = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 262144

#

sys.fs.file-max = 16384

-------------------------------------------------------

2.2.8 kernel setting

kernel을 컴파일 하기 전에 Makefile을 열어서 다음을 수정해준다.

----------/usr/src/linux/Makefile----------------

EXTRAVERSION =-2

--------------------------------------------

이 내용은 kernel compile후에 module를 컴파일 한 후에 module install시 module이 kernel-version-num뒤에 extraversion 이 들어가므로 module들이 서로 꼬이지 않아 좋다. 또한 kernel 적용 버전이 될 수도 있어 편리하다. 이 부분을 잘 활용하면 된다.

master용 kernel setting에 있어 나머지는 각 시스템에 맞게 각자 관리자의 목적에 맞게 설정하면 된다. 그러나 아래의 셋팅은 master node에 있어 꼭 필요한 정보이므로 아래 내용만큼은 꼭 넣어야 하며 나머지는 각 시스템에 맞게 설정해주면 된다.

------------------------------------------------------------------

Code maturity level options

--> Prompt for development and/or incomplete code/drivers --- y

File System

--> Kernel automounter support ---- y

--> Kernel automounter version 4 support (also support v3) ---- y

--> Network File System

--> NFS file system ---- y

--> Provide NFSv3 client support ---- y

--> NFS server support ---- y

--> Provide NFSv3 server support ---- y

--------------------------------------------------------------------

( USB Mouse가 필요한 경우에는 다음 부분을 살펴보면된다.

Input core support

--> mouse support --- y

USB support

--> USB Human Interface Devices (HID)

--> USB HIDBP Mouse (basic) support --- y )

설정이 끝났으면 Save configuration to An Alternate File을 이용하여 master node kernel setting값을 저장해둔다. 그래야 나중에 조금 설정 값을 바꿀 때 이 값을 불러들여서 수정하면 편리하기 때문이다. 이제 설정이 끝났으므로 컴파일을 해야 한다. 컴파일을 하기 위해서는 다음처럼 명령을 이용하면 된다.

make dep; make clean; make bzImage; make modules; make modules_install

위의 명령어를 이용하여 master node kernel을 compile하고 또한 module들을 컴파일하고 module들을 인스톨한다.

+ linux kernel setting 및 lilo 설정.

cp /usr/src/linux/arch/i386/boot/bzImage /boot

cp /usr/src/linux/System.map /boot/System.map-kernel.version.num-EXTRAVERSION

vi /etc/lilo.conf을 해서 아래처럼 master node kernel 부팅을 추가해준다.

-------------------------

image=/boot/bzImage

label=master

root=/dev/hda5 ( / partition )

read-only

-------------------------

lilo 명령을 이용하여 kernel setting한 것을 boot roader에 적용한다.

2.3 Slave node Setting

2.3.1 sdct

sdct는 /tftpboot/Template라는 디렉토리에 master node의 root partition에 있는 내용들을 hard link로 만들어주는 역할을 한다. /tftpboot/Template가 모든 컴퓨팅 노드의 구성을 변경하는 곳이 된다. 이곳의 파일이 바뀌면 앞으로 만들게 될 다른 cluster client node들의 파일도 전부 바뀌게 된다. /tftpboot/Template ( Master node root ), /tftpboot/IPs ( Cluster client node root )가되는 것이다. 그렇기 때문에 /tftpboot/Template 디렉토리 아래에 있는 파일을 자신의 클러스터에 맞게 변경하면 된다.

sdct -s 10.1.10.10

그러나 이것은 초기버전 에서는 조금 수정해야 할 부분이 많다. 그래서 필자가 수정한 파일을 이용하여 주면 조금은 더 편리하다.

sdct -N 10.1.10.10 -P /usr/local/src/cluster/bin [ -s 10.1.10.10 ]

여기서 -N은 NFS-ROOT서버의 IP주소를 써주면 되고 또한 -P 뒤에는 기타 환경 설정용 파일이 존재하는 위치를 적어줌. -s 뒤에는 master node의 IP를 써주면 됨. -s 부분은 굳이 적지 않아도 자동으로 찾아 적힌다. 필자가 수정한 sdct파일은 다음 파일도 필요 한다. sdct.ext.fstab 이 파일은 fstab을 만들어주는데 있어 부수적으로 더 필요한 설정이 들어가 있는 파일이다.

2.3.2 /tftpboot/Template

이 위치에서는 etc/rc0.d와 etc/rc3.d 그리고 etc/rc6.d 디렉토리의 실행순서 등을 만들고 불필요한 파일은 삭제를 해줘야한다. 만약에 XWindows를 사용한다면 etc/rc5.d를 사용하게 될 것이다. 이 부분은 slave하나를 셋팅해 놓고 켜보면서 뜨는 message를 보면서 파일순서 또는 필요 없는 데몬을 삭제하면 된다.

/etc/rc.d/init.d/netfs의 시작순서가 /etc/rc.d/init.d/network 다음에 오도록 수정한다.

/etc/rc.d/rc3.d/S10network와 /etc/rc.d/rc3.d/S11netfs로 만들어준다.

/etc/rc.d/rc2.d/K10netfs와 K20network는 가장 큰 숫자로 바꿔준다.

한가지 /etc/init.d/killall과 halt란 파일을 수정하지 않으면 재부팅 및 shutdown시 killall process이후에 멈추는 문제가 생긴다.

                  2.3.3 slave node kernel

물론 이것 역시 /usr/src/linux/Makefile을 vi로 열어서

----------/usr/src/linux/Makefile----------------

EXTRAVERSION =-2

--------------------------------------------

이 부분을 수정해준 후에 다음 작업을 해주는 것이 좋다.

master용 kernel configure를 불러들인다. 그리고 나서 다음 항목을 수정한다.

------------------------------------------------------

Networking Options

--> IP: kernel level autoconfiguration

--> IP: BOOTP support ---- y

File system

--> Network File System

--> Root file system on NFS ------ y

----------------------------------------------------

그러나 slave용 node에서는 NFS-ROOT용으로 사용할 Network card는 kernel속에 직접 넣어야 한다. 그래야만 kernel을 tftp로 갖고 가서 kernel을 load하면서 network이 구성될 수가 있기 때문이다. 이렇게 하지 않으면 network용 module을 올리기전에 NFS-ROOT가 올라오지 않아서 문제가 되기 때문이다. 그리고 나서 다음처럼 커널을 컴파일 해준다.

참고로 vmware를 사용할 경우 vmware용 렌카드는 lancepci.lzrom(또는 amdhomepna.lzrom)을 사용하면 된다.

Network device support

--> Ethernet (10 or 100Mbit)

--> AMD LANCE and PCnet (AT1500 and NE2100) support ---y

accton lancard는 tulip driver를 사용한다. tulip driver는

Network device support

--> Ethernet (10 or 100Mbit)

--> EISA, VLB, PCI and on board controllers

--> DECchip Tulip (dc2114x) PCI support ---y

make dep; make clean; make bzImage

명령을 이용하여 커널을 컴파일 한다.

이제 컴파일이 끝난 후에 bzImage와 System.map파일을 /tftpboot/Template/boot에 카피해 놓자. 그리고 나서 etherboot용 kernel로 만들기 위해서 만들어진 kernel을 조금 수정해야 한다. 먼저 etherboot용 프로그램을 컴파일 해놓고 다음처럼 프로그램으로 수정해주면 된다.

mknbi 프로그램을 이용하여 network boot가 가능하게 kernel image시작부분에 코드를 추가해준다. 그리고 바뀐 kernel image와 System.map파일이 /tftpboot/Template/boot에 존재해 있게 해주면 된다.

mknbi와 etherboot파일은 http://etherboot.sourceforge.net/ 또는 http://etherboot.sourceforge.net/distribution.html 이곳에서 다운받을 수 있다.

mknbi --format=elf --target=linux --output=bzImage.new --ip=dhcp bzImage

--format : nbi로 하면 커널 로딩을 못한다. elf로 하여야 한다.

--target : linux에서 사용할것이므로 linux로 한다.

--output : kernel image를 변경후 저장할 파일명이다.

--ip : dhcp데몬을 사용할 것이면 dhcp bootp를 사용할 것이면 bootp를 씀.

만약에 etherboot가 아닌 onboard용 lancard를 이용한 rom 부팅을 한다면 다음 프로그램을 이용하여야 하며 이용법은 다음과 같다.

/usr/local/sbin/imggen -a bzImage.nbi bzImage.mba

그러나 mknbi를 먼저 실행한 후에 mknbi를 수행한 kernel image파일을 같고 위처럼 바꾸기 때문에 mknbi역시 꼭 필요한 것이다.

diskless cluster node로 부팅하기 위한 부팅 디스크 만들기를 만들어 보자. 이것은 부팅 image와 간략한 lancard정보만 들어 있는 아주 작은 image파일이다.

ehterboot는 gcc 2.96에서는 컴파일이 되지 않는다. 2.95이하 또는 3.0이상에서만 컴파일이 된다. 한가지 문제점은 컴파일이 잘되고 부팅 이미지 만들어 부팅하면 부팅이 잘되어 찾기는 하지만 찾는 중으로 멈춰 있으면 다음 3가지를 점검하자.

a) cable 연결상태 확인.

b) dhcp 또는 bootp 설정상태.

c) nds상태

e) 컴파일은 되었지만 잘못 컴파일 된 경우 ( 이때는 kgcc 로 컴파일해보자 ).

etherboot는 src디렉토리의 Config 파일이 bootp로 할지 dhcp로 할지 결정하는 옵션 등이 있다. 적당히 수정한다.

make; make bin/boot1a.bin

명령으로 컴파일을 한다.

boot1a.bin은 부팅 image인데 이것은 위처럼 make 명령을 따로 줘야 한다.

cat bin/boot1a.bin bin32/xxx.lzrom > /dev/fd0

명령으로 부팅 이미지를 floppy디스크에 넣는다. 여기서 xxx.lzrom은 cluster client node 컴퓨터에 붙어 있는 렌카드에 맞는 image파일이다.

2.3.4 adcn을 이용한 slave node 추가

adcn을 사용하여 cluster client node의 루트 파티션 설정하기.

이 파일은 각 client node들의 root partition을 잡을 때 사용하는 스크립트로, 필요한 정보는 각 노드의 IP주소, 각종 네트워크 정보, 그리고 그 노드에 있는 Lan card의 하드웨어 주소 등으로 되어 있다.( 하드웨어 주소는 16진수 6자리 숫자로 된 것으로 세계에서 그 렌카드의 하드웨어 주소는 오직 하나임. ) 자세한 설명을 “adcn -h“ 로 살펴보면됨. adcn을 사용하기 전에 아래의 cluster client node 설정하는 부분을 보고 client node용 kernel image를 만들어두고 adcn을 사용하면 편리하다.

adcn -i 10.1.10.12 -c cpu1 -d cep.re.kr -D eth0 -n 255.255.255.0 -s 10.1.10.10 -N 10.1.10.0 -g 10.1.10.10 -b 10.1.10.255 -m 00:D0:80:10:DC:70 -f

-i : 해당 컴퓨터의 cluster client node IP주소임.

-c : 해당 컴퓨터의 cluster client node의 host name임.

-d : 현재 cluster의 domain name이됨.

-D : cluster client node에사 사용될 Lancard의 interface이름을 써주면됨. (lancard가 하나이면 기본적으로 eth0 임.)

-n : netmask를 써줌.

-s : cluster Master node IP를 써주면 됨.

-N : Network를 써주면됨. ( cluster client node 네트워크 주소가 172.16.24.0가됨 )

-g : Network의 기본 네트웍 gateway 주소임.

-b : broadcast용 IP주소.

-m : cluster client node의 Lancard hardware address( Mac address )

adcn을 사용하면 /etc/hosts와 /etc/exports(NFS서버에 필요함) 그리고 /etc/fstab파일도 자동으로 각 node들에 맞게 수정됨.

이 과정은 루트파일시스템을 NFS로 접근하게 만드는 과정이다. (/usr/src/linux/Documentation/nfsroot.txt 참조)

이 내용 역시 손본 것이 많기 때문에 필자가 수정한 것을 사용하면 조금 더 편리하게 수정할 수 있다.

필자가 수정한 adct에는 -M 옵션과 -P 옵션이 있다. 여기서 -M옵션은 NIS 서버의 hostname을 써주면 되고, -P는 기타 부수적인 환경설정 파일이 존재하는 위치를 써주면 된다. 그리고 한번에 여러개의 slave를 만들기 위해서는 여러번 실행하려면 매우 불편할 것이다. 그래서 다음처럼 해보자.

---- slave라는 실행 파일을 하나 만들고 내용을 추가하자.----------------

#!/bin/bash

for AA in $(cat node) ; do

./adcn -i 10.1.10.1$AA -c cpu$AA -M cpu0 -P /usr/local/src/cluster/bin -d cep.re

.kr -D eth0 -n 255.255.255.0 -s 10.1.10.10 -N 10.1.10.0 -g 10.1.10.10 -b 10.1.10

.255 -m 00:50:FC:4F:0E:E3 -f

done

----------------------------------------------------------------

그리고 node라는 파일을 하나 만들어 node의 번호들을 죽 적어 둔 후 slave라는 파일을 실행시키면 각 노드의 slave를 adcn를 실행시켜줄 것이다.

물론 필자가 수정한 adcn이란 파일은 adcn.ext.exports란 파일이 필요하며 이 파일은 추가적으로 exportfs시키는 정보가 들어가는 파일이다.

2.3.5 test node debug

우선 한 개의 slave node를 만들어서 계속 부팅 해가며 문제점을 모두 잡은 후에 모두 문제가 해결되면 나머지 node에 대해서 만들어 주면 cluster완성되는 것이다.

만약에 cluster 이후 rsh에서 명령어가 안될 때 다음을 채크해보자.

/dev/console 파일의 퍼미션이 644로 안되어 있는 경우가 있다. 이런 경우 rsh로 login은 되어도 명령어가 실행되지 (rsh cpu1 ls) 않는 경우가 있다. 이럴 때는 chmod 644 /dev/console 해주면 된다.

가끔 keyboard가 이상할 경우 tset 과 reset 명령을 내려본다. 그러면 이상하던 keyboard가 정상으로 돌아온다.

3. 필요한 소프트웨어 설치

3.1 MPICH

mpirun -v -machinefile machine.cluster.node -nolocal -np 8 mm5.mpp.mpich

여기서 -nolocal 이던가 -nolocalhost이던가??를 해주는 것은 현재 돌리는 node에서는 계산을 하지말고 machine.cluster.node파일에 나열한 node hostname들에서만 계산작업을 하게 하는 것이다.

3.2 PG COMPILER

3.3 OpenMP

3.4 PVM

3.5 NETCDF

3.6 NCARG

4. 추가적인 기술들

4.1 PXE

4.2 Channel Bonding

channel bonding은 linux kernel에서 지원하고 H/W적 slot이 지원되는 한도 내에서 개수를 늘릴 수 있다.

channel bonding은 가상 network device를 만들고 (bond0) 그 device에 실제 물리적 device를 붙여서 같은 mac-address와 같은 IP를 같게 만들어준다. bonding시키는 모들 실제 물리적 device를.... 그러나 mac-address는 실제 device중 가장 먼저 bond0에 붙는 것의 mac-address를 가져가서 가상 device인 bond0의 mac-address가 되어 진다. 하나의 IP로의 네트웍이 실제 물리적으로 분리된 network 경로를 통해 네트웍이 분산되어 나가므로 그많큼 네트웍 bandwidth가 넓어지는 것이다. 하나보단 2개일 때 대략적으로 2배의 bandwidth가 넓어졌다.

1. Kernel에서 channel bonding을 y로 해준다.

2. ------/etc/modules.conf------------

alias bond0 bonding

options bond0 miimon=100

---------------------------------

3. /etc/sysconfig/network-scripts/ifcfg-bond0을 만들어주고 내용은 eth0와 비슷하게 IP를 하나 추가한다. 만약에 NFS-ROOT를 사용중이라면 (eth0에서) eth0와 비슷하게 Network Classs가 다르게 잡아준다.

예) 10.1.10.x를 NFS-ROOT로 사용중이라면

bond0 의 IP는 10.1.100.x를 사용해라. 안 그러면 네트워크이 혼동되어서 네투워크이 꼬일 경우도 있다.

4. /etc/rc.d/rc.local 내용추가

------------------------------

/sbin/ifenslave bond0 eth1

/sbin/ifenslave bond0 eth2

------------------------------

4.3 MON

4.4 MOSIX

M-VIA는 네트웍 속도에는 크게 영향을 주지 못하고 단지 네트웍을 심하게 사용하기 위해 CPU가 사용하는 load를 줄여준다. Network을 cpu가 관리하는 것을 lancard가 직접 관리하도록 해주는 프로그램이다. 실제 테스트를 하여보면 Network을 사용하기 위한 CPU load를 50%가까지 줄여준다. 그러므로 CPU는 계산에 더 사용하고, Network 사용에는 더 줄일 수 있다. 한가지 이것을 사용하려면 기존의 lancard용 device는 모듈로 만들어 주거나 아예 없애야 한다. 왜냐면 m-via용 device가 대신해서 module로 떠야하기 때문이다. 이렇기 때문에 NFS-ROOT용으로 사용하는 lancard는 m-via를 사용할 수가 없다. 왜냐면 NFS-ROOT용 lancard device는 kernel에 직접 넣어두어야만 network boot를 통해 NFS-ROOT를 사용할 수가 있기 때문이다.

참조: http://spcc.uos.ac.kr/clustering/mvia.html

- 지원되는 Lancard

DEC Tulp (kernel 2.2 and 2.4에서 지원) : 장시간 가동시 하드웨어 문제 같아 보이는 현상으로 죽어버린다.

Intel pro 10/100 (kernel 2.2 and 2.4에서 지원)

3com (kernel 2.4에서 지원)

Packet Engines GNIC-I gigabit (kernel 2.2.에서 지원)

Packet Engines GNIC-II gigabit (kernel 2.2.에서 지원)

Syskonnet SK-98XXX gigabit (kernel 2.2 and 2.4에서 지원)

- SMP 지원됨.

- Install

Makefile.config 파일에서 Kernel version/ SMP사용여부/ 깔릴 DEVICE Directory 등 수정

-----------------Makefile.config------------------------

# The version of the Linux kernel for which M-VIA is being built.

LINUX_VERSION = 2.4.9-4 <===== 리눅스 커널버전(현재 사용중인 커널의 커널 버전을 써준다. 이유는 나중에 module이 깔리때 들어갈 /lib/module하의 디렉토리를 맞추기위해서이다.

# Set MVIA_SMP to 1 for SMP machines, 0 for uniprocessors.

MVIA_SMP = 1 <== SMP사용여부

# The location of the Linux kernel source.

LINUX_SRC = /usr/src/linux-2.4.9 <== 현재 사용중인 커널의 소스위치

# The directories to install M-VIA user files in.

INCDIR = $(BASEDIR)/include

LIBDIR = $(BASEDIR)/lib

DEVDIR = $(ROOTDIR)/dev <== M-VIA용 디바이스가 설치될 위치 (Master일때와 slave일때의 위치가 다르므로 잘 생각 : 현재 master용)

#DEVDIR = /tftpboot/Template/dev (slave용 위치)

----------------------------------------------------

make후 인스톨하면 다음이 설치된다.

/lib/modules/kernel-version-num/net 하에 설치됨.

공통으로 사용되는 모듈: via_ka.o via_lo.o via_ering.o

각 카드의 모듈들 : via_3c59x.o (3c59x용) via_eepro100.o (intel용) via_tulip.o (DEC용)

/usr/local/lib/libvipl.a

/usr/local/include/vipl.h 가 또 설치되어 진다.

이렇게 설치후 모듈을 module map파일에 등록하기위해

depmod -a kernel-version-num 명령으로 등록시켜준다.

/dev 디렉토리에 필요한 device(via_lo via_eth1 via_eth0 ...)를 만들기위해 다음명령어를 사용한다.

make devices

/etc/modules.conf파일을 수정해준다.

----------modules.conf---------------

alias char-major-60 via_lo

alias eth2 via_eepro100

-----------------------------------

/etc/sysconfig/network-script/ifcfg-eth2를 생성해도 되지만 잘 되지 않는 편이어서 /etc/rc.d/rc.local파일에 ifconfig명령으로 뜨게 해준다.

/etc/vip_hosts파일 생성

------vip_hosts---------

00:03:47:B2:5B:18 exp

00:03:47:B2:22:BF exp1

00:03:47:B2:5B:19 exp2

00:03:47:B2:55:03 exp3

-----------------------

앞에는 각 호스트의 m-via로 사용할 lancard mac-address고 뒤는 host의 hostname이다.

추후에 m-via를 이용하여 channel bonding을 해보면 어떨지??? 아마도 UTP gigabit을 두개정도 사용하면 myrinet정도의 효과가 나오지 않을까?? 생각한다. 가격 대 성능 비에서 좋지 않을까???

한가지 문제점은 M-VIA를 이용하여 네트웍 구성 후 MPI를 사용하기 위해서는 MVICH를 깔아야만 하는데 네트웍 구성을 되었지만 MPI를 사용하기 위한 MVICH가 문제가 있어 잘 깔리지 않는다. 이것만 해결되면 한번 사용해 봄직 할 것 같다.

4.5 M-VIA

4.6 MYRINET

4.7 BPROC

5. 참고 자료

1. diskless node script

ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils/disk-less

2. Root file system over NFS

/usr/src/linux/Documentation/nfsroot.txt

3. Myrinet

http://www.myri.com

4. Etherboot

http://etherboot.sourceforge.net

5. OpenPBS

http://www.openpbs.org

6. MOSIX

http://www.mosix.org

7. MPICH

http://www.mcs.anl.gov/mpi/mpich/index.html

8. OpenMP

http://www.openmp.org

9. PXE

http://www.lanworks.com

10. GFS

http://www.sistina.com/products_gfs.htm

11. PVFS

http://www.parl.clemson.edu/pvfs/index.html

12. spcc.uso.ac.kr 은 각종 벤치마크가 잘되어 있다.

2007/07/28 23:24 2007/07/28 23:24
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC

박광기

(기상연구소 예보연구실)

1. 서 론

1940년대에 범용 컴퓨터의 급속한 발전을 계기로 1980년대 개인용 컴퓨터의 출현으로 소형이며 컴퓨터의 보급이 늘어나면서 1991년도 리누스 토발츠가 연구해낸 멀티태스팅이 지원되는 미니 유닉스 시스템 소스의 인터넷 배포로 수많은 프로그래머의 계속적인 보강에 의해 현재의 리눅스 시스템이 출현하였다.

컴퓨터 하드웨어 산업의 발전 속도에 맞게 이에 영향을 받은 많은 컴퓨팅 파워의 발전이 급속하게 이뤄졌다. 이러한 컴퓨팅 파워의 만족을 위해 급속히 발전된 개인용 컴퓨터의 하드웨어를 사용하여 고성능을 내기위해 1994년 미국 NASA의 계약사인 CESDIS에서 최초의 Beowulf클러스터를 제작 하였다.

소스가 공개된 유닉스 구조의 리눅스가 저가의 고성능 개인용 컴퓨터와 발달된 통신 기술의 네트워크에 다양한 개발에 적합하여 이를 이용한 클러스터 연구가 활발하게 되었다.

적은 비용으로 성능을 높일 수 있는 클러스터 연구에 사용되는 다양한 기법들의 소개로 기상모델의 적용과 더불어 앞으로 기상연구에 도움이 되고자 소개하려한다.

2. Cluster

Cluster라함은 “무리”,“집단”을 의미한다. 컴퓨터에 넘어오면서 개인용 컴퓨터 무리를 소프트웨어적으로 하나의 시스템처럼 묶어 하나의 문제의 계산을 이 컴퓨터 집단이 처리하도록 하는 것을 의미한다.

현재 Cluster는 크게 HA Cluster(High Available Cluster)와 HPC(High Performance Computing) Cluster로 나눌 수 있으며 본 연구에서는 고성능을 내기위한 연구이므로 HPC관련 클러스터에 중점으로 설명을 해나갈 것이다.

3. HPC Cluster

HPC Cluster를 연구하기위해 다양한 프로젝트 들이 존재하나 초석이 된 것은 Beowulf 프로젝트일 것이다. 본 장에서는 HPC 클러스를 위한 공통되는 기술적인 부분을 소개하려 한다. 병렬 컴퓨팅은 분산메모리 방식과 공유메모리 방식으로 크게 두 부류로 나눌 수 있다.

Cluster에 병렬 프로그램을 run시키기 위해서는 프로그램을 병렬 Library를 이용하여 coding 해줘야한다. 현재 병렬 컴퓨팅 연구에 사용되는 병렬 Library는 병렬 표준 Library인 MPI(Message Passing Interface)를 따르고 있으며 리눅스 클러스터에서는 MPI의 일환으로 MPICH와 LAM을 주로 사용하고 있으며 MPI 프로그래밍은 프로그래머가 일을 하나하나 분석하여 메시지의 전송 및 동기화 등과 같은 일련의 문제를 고려하여 프로그램을 작성해야 한다. 이는 모델 개발자에게 과도한 프로그래밍 부담을 준다는 단점이 있지만 프로그램의 성능을 최대로 이끌어 낼 수 있다는 장점이 있다.

이와 같은 병렬 방식을 분산메모리 방식이라 하며 이러한 HPC Cluster는 가능한 같은 기종으로 구성하여 최대의 performance를 내기위해 사용한다. 그러나 이기종 간에 HPC Cluster를 구성하기위해 사용되는 기법으로 PVM(Parallel Virtual Machine)를 사용하기도 한다. 본장에서 PVM기법은 앞으로 거론하지 않기로 한다.

공유메모리 방식의 병렬 Library로는 OpenMP가 잠정적으로 표준화가 되어 있다. 최근들어 하드웨어의 발전으로 인해 Dual CPU이상의 컴퓨터들이 나오고 있다. 이러한 컴퓨터를 SMP (Symmetric Multi-Processing) 장비라하며 공유메모리 방식의 병렬화가 가능한 장비이다.

OpenMP는 기존의 HPF(High Performance Fortan)에 대한 대안으로 제안된 것으로서 사용자가 순차적 프로그램 소스에 몇 개의 컴파일러 directive만을 추가함으로써 병렬프로그래밍이 간단해지며, 병렬화가 필요한곳에서 여러 thread로 분산되어 공유메모리를 참조하도록 컴파일이 된다.

최근 Cluster는 SMP장비를 이용한 Cluster구성을 많이 하므로 각각의 장점을 활용하여 공유메모리 방식과 분산메모리 방식을 절충한 Hybrid(혼합형 병렬화) 기법을 많이 사용하기도 한다(Fig. 1). 혼합형 병렬화 기법이 클러스터 성능에 주는 영향은 네트워크와 클러스터 항목에서 추가적인 설명을 하기로 한다.

4. 네트워크와 클러스터

클러스터 발전방향에 네트워크 장비의 발전은 많은 영향력을 주었다. 그러나 초고속 네트웍크는 가격대 성능비를 내기위해 사용하는 클러스터에 범용적으로 사용하기에는 부담스러운 면이 있게 된다. 이러한 부분을 해결하기위한 전세계의 클러스터 개발자 및 컴퓨터 산업 관련자들이 범용 장비를 이용한 초고속화를 위한 연구가 이뤄져 다양한 방법들이 나왔고 또한 실용화 된 것도 있다.

Channel bonding 기법은 물리적인 Fast Ethernet 네트워크 2개 이상을 소프트웨어적으로 논리네트워크 하나로 만들어 사용하는 것으로 네트워크 대역폭을 물리적인 네트워크 대역폭 합의 약 85~95%가량 늘릴 수 있다. Channel bonding에 의한 네트워크 대역폭의 향상 효과는 대체로 15~20%의 성능을 향상시키는 것으로 나타났다.

그러나 Gigabit Network을 UTP Category 5를 이용한 Dumi S/W HUB를 이용한 Gigabit Channel bonding에서는 1byte ~ 8Mbyte사이의 패킷 크기에서의 네트웍 퍼포먼스에는 큰 효과를 주지 못한다. 이유는 Gigabit 하나로도 충분한데 bond 모듈을 거쳐 좀더 많은 일을 해야 하기에 나타나는 증상 같다. 또한 본 연구에는 Disk-less Cluster만 사용하였다. Fig. 2참조)

Fig. 3에서 Channel bondig과 Fast Ethernet사이의 성능 비교를 위해 MM5 모델을 이용하여 테스트하였다.

그러나 3개 이상의 물리적인 네트워크 장비를 channel bonding시키는 것은 가격대 성능비에 적합하지 않아 잘 사용하지 않는다. 또한 M-via 기법은 네트워크 통신을 위해 CPU가 over head를 내는 것을 줄이고자 고안된 기법으로 고가의 초고속 네트워크 하드웨어에 장착된 방법을 소프트웨어적으로 해결한 것이다. 이 방법을 이용하게 되면 네트워크 over head를 줄이며 초고속 네트워크 통신을 할 수가 있다. Fig. 4의 상단 그림은 TCP/IP기반과 M-VIA기반의 네트워크 대역폭을 벤치마크한 표이다. 하단 그림은 MPI를 TCP/IP기반과 M-VIA기반하에서 각각 성능 비교를 한 것으로 약 10%정도 TCP/IP기반보다 성능이 좋음을 보여주고 있다(Fig. 4).

이렇게 네트워크 성능에 따라 클러스터 성능을 좌우하는데 큰 영향력이 있다는 것을 알게 되면서 이부분의 성능 개선을 위한 많은 노력을 하고 있다.

한 예로 혼합형 병렬화의 효율을 살펴보면 단일 네트워크에서는 119%, channel bonding에서는 123%의 성능향상을 보이는 것으로 나타났다. 즉 혼합형 병렬화의 효과는 대체로 19~23%의 성능향상을 가져오는 것으로 나타났다. 하지만 channel bonding과 혼합형 병렬화에 의한 효과를 종합하면 141%의 성능 향상을 보여 클러스터의 계산 성능이 획기적으로 개선된 것을 알 수 있다.

본 연구에서 다른 초고속 네트워크(Gigabit Fiber, Myrinet, Infini band)를 중점으로 설명하지 않은 이유는 저가의 범용 장비를 이용한 클러스터링 소개를 통하여 많은 클러스터연구에 활성화에 초석이 되고자 고가의 장비 소개는 빼기로 한다.

참고 문헌

김영태, 이용희, 최준태, 오재호, 2002: 초고속 네트워크를 이용한 PC 클러스터의 구현과 성능평가, 한국정보과학회논문집: 시스템 및 이론, 29, 57-64.

박광기, 이용희, 조천호, 2003: 중규모 기상모델운영을 위한 클러스터상에서의 혼합형 병렬화기법 개발, 한국기상학회보 대기 : 제 13권 1호 574-575

SPCC Univ of Seoul : http://spcc.uos.ac.kr/

예전에 내가 기상연구소에 다닐때 썼던 글중의 하나이다.  내 홈페이지 (http://www.cep.kr) 에 올렸던것인데...  너무나 가려져있는 홈페이지인것 같아 이렇게 테더툴에 생각난김에 꺼내어 본다. 출처역시 내 홈페이지구나... ㅋㅋ
좀더 자세한것은 아래의 파일을 다운 받아 보시면 그림도 나옵니다.

[DN=1100532101.pdf]paper download[/DN]


2007/07/28 00:28 2007/07/28 00:28
[로그인][오픈아이디란?]