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

HPC라 하면 컴퓨터 군집을 묶어서 하나의 시스템처럼 사용할수 있게 꾸며놓은 컴퓨터 군으로 Cluster의 한 종류로서 고성능 컴퓨팅을 위한 기술이라 보면 된다. 그래서 HPC를 슈퍼컴퓨터라 불리우기도 한다.

HPC를 사용하기위해서는 빠른 컴퓨팅을 위해 하드웨어을 대부분 똑같은 스팩으로 맞추게 된다. 이유는 속도가 낮을 노드가 있게된다면 대부분의 컴퓨팅 속도는 이 속도가 낮은 노드의 컴퓨터 속도에 맞춰 움직이므로 가치가 떨어지게 되므로 하드웨어 스펙을 똑같게 맞춰준다. (물론 틀려도 사용하는데는 문제가 될수도 있고 문제가 안될수도 있다. 그러나 대부분 큰 문제는 없다. 단지 가치가 떨어져 클러스터를 안쓰는 경우가 더 나을수 있으므로 클러스터를 스펙이 틀리게 구성하지 않는다.)

그리고 클러스터는 분산 메모리 계산(MPP) 방식이 기본 개념이므로 분산된 노드들의 메모리의 데이터를 공유해서 사용하기위해 이 데이터를 네트워크를 통해 각 노드들끼리 통신하여 데이터를 공유하게 되므로 클러스터에서 CPU성능의 중요성만큼 네트워크의 성능(FastEthernet/Myrinet/Infiniband) 또한 크게 자리를 찾이하고 있다.

여러대의 컴퓨터를 하나의 시스템처럼 사용하기위해 여러 시스템에 있는 보안을 풀어줘야만 클러스터로서 작동하는데 큰 문제가 없다. 그렇다고 무족건 보안는 풀수많은 없기때문에 적정 수준으로 환경에 맞춰 보안 설정을 해야한다. 그러나 가장 기본적으로는 ssh(hostbase ssh/패스워드없이 ssh login) or rsh를 이용하여 패스워드 물어보는것 없이 로그인 및 명령어 실행이 가능해야한다. 이것은 클러스터의 기본이기때문에 꼭 둘중 하나는 써야 된다.

그리고 이렇게 구성된 시스템에 병렬 라이브러리를 사용하지 않는다면 관리하기 편한 서버군밖에 되지 않는다. 즉, 병렬 라이브러리를 사용하여 여러노드에서 하나의 결과물을 얻기위해 병렬로 작업할수 있도록 데이터 공유할수 있도록 도와주는 병렬 라이브러리가 꼭 있어야한다. 프로그램 개발시 개발된 프로그램내에 병렬 라이브러리까기 포함된경우라면 그것의 환경에 맞춰 설정만하면 되겠지만 그렇지 않은경우라면 병렬 라이브러리가 (MPI/MPICH/PVM/OpenMP) 클러스터에 꼭 깔려 있어야만 한다.

이런정도가  클러스터의 기본 개념이라고 생각하고 이것에 살을 붙여가며 보안(iptables/etc), 관리툴(ACE/CMU/Ganglia), 계정(NIS/LDAP/local), 환경설정(profile/csh.cshrc/module), 파일 시스템(ext3/xfs/lustre(sfs)/GFS/PVFS/PVFS2), Job Scheduler(SGE/LSF/PBSpro), 네트워크, NIC 등등에 대한 구조와 설정 그리고 어떻게 편리하게 사용할것이냐의 살들을 붙여가면 멋진 클러스터가 된다고 보면된다.

2008/11/11 13:09 2008/11/11 13:09
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC
Lustre는 병렬 파일시스템으로 많이 각광을 받고 있는 파일 시스템이다.
내 홈페이지에 올렸던글을 내 홈페이지에서는 찾기가 힘들다는 평을 많이 받아 Lustre설치 방법과
테스트 방법을 간단히 올려본다.
아마 아래 방법대로 따라면 하면 뭔가 되긴 될것이다. 그외 많은 정보가 있다....
지금은 내가 알고 있는 버전으로는 1.6.5이상이 있는것으로 알고 있다.
찾기 어려워 하시는 분들을위해 잘 되었던 글을 하나 내 홈페이지에서 블로그로 옮겨본다.
필요하신분은 힌트가 되기를 바라며...
   
설치 OS: SuSE Ent. 9 & SuSE Ent. 10
kernel : 2.6.x
System : 설치 테스트 장비는 두대
VMWare W/S 5.x (CPU : AMD Turio 64)
조립 PC: AMD Athlon 64 (dual core)


lustre 용으로 패치된 kernel source와 lustre 파일을 다운 받는다.

kernel : kernel-source-2.6.16-27_0.6_lustre.1.4.9.1.x86_64.rpm
lustre : lustre-source-1.4.9.1-2.6.16_27_0.6_lustre.1.4.9.1smp.x86_64.rpm

이 두 파일을 lustre 사이트에서 다운받는다.
그리고 설치한다.

rpm -Uhv kernel-source-2.6.16-27_0.6_lustre.1.4.9.1.x86_64.rpm
rpm -Uhv lustre-source-1.4.9.1-2.6.16_27_0.6_lustre.1.4.9.1smp.x86_64.rpm

kernel compile:
cd /usr/src/
ln -s linux-2.6.16-27-0.6_lustre.1.4.9.1 linux
cd linux
vi Makefile
-----------------------------------------------------------------
EXTRAVERSION = -27-0.6_lustre.1.4.9.1custorm
to
EXTRAVERSION = -27-0.6_lustre.1.4.9.1c1
------------------------------------------------------------------
make mrproper
make menuconfig -------> system에 맞도록 환경 설정하여 컴파일
( ext3는 환경설정되어 있는대로 설정한다. 가능하면 환경설정은 되어 있는것을 유지하되 꼭 안써도되는 몇몇개만 삭제하여준다. )

make
make modules_install
make install

vi /boot/grub/menu.lst <------------- 정확하게 lustre로 부팅가능하게 되어 있는지 확인한다.

시스템 재가동으로 lustre kernel로 올린다.

lustre 컴파일하기 1) lustre를 다른 디렉토리에 설치하기

cd /usr/src/lustre-1.4.9.1/
./configure --prefix=/usr/local/lustre --enable-mpitests --enable-quota
( --enable-mpitests 옵션을 넣으면 error가 난다. 이 옵션은 아직 어떻게 해야 해결할수 있는지 찾지 못했다. )

make
make check
make install
cd /lib/modules/`uname -r`
depmod -a <------- 이것을 하지 않으면 lustre 모듈을 올릴때 에러가 난다. 꼭 해줘야한다.

lustre를 위한 환결설정
----------------------------------------------------------
export LUSTRE=/usr/local/lustre
export PATH=${PATH}:${LUSTRE}/bin:${LUSTRE}/sbin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${LUSTRE}/lib
export MANPATH=${MANPATH}:${LUSTRE}/man
-----------------------------------------------------------
이 환경을 로딩한다.

cd /usr/lib
이곳에서 관련 library를 링크를 걸어준다. 아래처럼
lrwxrwxrwx 1 root root 33 Apr 1 20:51 liblustre.a -> /usr/local/lustre/lib/liblustre.a
lrwxrwxrwx 1 root root 34 Apr 1 20:51 liblustre.so -> /usr/local/lustre/lib/liblustre.so
lrwxrwxrwx 1 root root 36 Apr 1 20:51 liblustreapi.a -> /usr/local/lustre/lib/liblustreapi.a
lrwxrwxrwx 1 root root 33 Apr 1 20:51 libptlctl.a -> /usr/local/lustre/lib/libptlctl.a
lrwxrwxrwx 1 root root 32 Apr 1 20:51 libsysio.a -> /usr/local/lustre/lib/libsysio.a
lrwxrwxrwx 1 root root 28 Apr 1 20:52 lustre -> /usr/local/lustre/lib/lustre

cd /etc/init.d/
vi lustre
------------------------------------------------------------
: ${LUSTRE_CONFIG_XML:=/etc/lustre/config.xml}
: ${LCONF:=/usr/sbin/lconf}
: ${LCTL:=/usr/sbin/lctl}

# Be sure the proper directories are in PATH.
export PATH="/sbin:$PATH"

start() {
if [ -x "/usr/sbin/clustat" -a "${SERVICE}" = "lustre" ] ; then
if [ ! -f "/etc/lustre/start-despite-clumanager" ] ; then
cat >&2 <
to

: ${LUSTRE_CONFIG_XML:=/etc/lustre/config.xml}
: ${LCONF:=/usr/local/lustre/sbin/lconf}
: ${LCTL:=/usr/local/lustre/sbin/lctl}

# Be sure the proper directories are in PATH.
export PATH="/usr/local/lustre/sbin:$PATH"

start() {
if [ -x "/usr/local/lustre/sbin/clustat" -a "${SERVICE}" = "lustre" ] ; then
if [ ! -f "/etc/lustre/start-despite-clumanager" ] ; then
cat >&2 < --------------------------------------------------------------------------------------------------
mkdir /etc/lustre

cd /usr/local/lustre/share/lustre/example
NAME=local sh local.sh <-------------- local.xml 환경설정 생성

ln -s /usr/local/lustre/share/lustre/example/local.xml <------------ /etc/init.d/lustre 가 사용하는 환경이므로 링크를 걸어줌.

lconf --write-conf local.xml <------lustre config system에 적용
lconf -v local.xml <---------lustre start

/etc/init.d/lustre stop <--------- lustre stop
/etc/init.d/lustre start <---------- lustre mount


lustre 컴파일하기 2) lustre를 /usr 에 설치(default 위치)
make & make check & make install
cd /lib/modules/`uname -r`
depmod -a
cd /usr/share/lustre/example
NAME=local sh local.sh
lconf --write-conf local.xml
lconf -v local.xml

mkdir /etc/lustre
cd /etc/lustre
ln -s /usr/share/lustre/example/local.xml
/etc/init.d/lustre stop
/etc/init.d/lustre start

이렇게하면 잘된다.
df -k
/mnt/lustre에 약 400MB정도가 마운트된다.

local.sh 또는 기타 sample용 shell을 수정해서 돌리면 잘된다.
/etc/init.d/lustre는 xml파일을 올리고 내릴때만 쓰면된다. 즉, system 부팅할때 사용하는것이다.


cep
2007-04-01 21:27:41
2008/11/03 18:33 2008/11/03 18:33
[로그인][오픈아이디란?]
Posted
Filed under Photo&Tour/Oversea
Bangkok에서 APJ Technical Symposium에 참가해서 마지막날 Group 사진찍은것을 이번에는 참가자들에게 모두 메일로 보내왔다.

나도 역시 맨 뒷열 왼쪽 4번째쯤에 있는것이 보인다. ㅎㅎ
그런데 역시 사진빨이 안받는다... ㅋㅋ
그러나 사진이 너무 작게 나와서 정확하게 안보여서 다행이다... 푸하하...

User inserted image

그 외 더 많은 APJ 행사 사진을 보고 싶다면 다음 아래 주소에서 보시면 됩니다.
http://www.zonixservices.com/album/hp/APJalbum
2007/09/19 09:05 2007/09/19 09:05
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC

각 솔루션에대해 딱히 뭐라 정해서 말하기는 어렵겠지만 대략적으로 특성들을 비교해봅니다.


NASTRAN : (http://www.mscsoftware.com)
  시스템 구조물 해석에 사용

ABAQUS : (http://www.abaqus.com)
  NASTRAN과 더불어 대표적인 구조해석 프로그램

LS-Dyna : (http://www.ansys.com/)
  대표적인 충돌 해석 프로그램 ( pam-crash와 더불어 충돌 해석 프로그램의 대표 )
  MPP 기반으로 940버전에서 기능이 많이 강화됨.
  8~32개의 프로세서로 산업현장의 대부분 충돌해석 계산업무의 90%이상을 하룻밤사이에 수행을 할정도라고 함.
  mpich,mpipro를 이용해 Linux, WCCS에서 병렬처리 가능.
  (4 node 기반으로 mpi에서 3배, 상용 mpi에서 3.8배정도 성능이 향상된다.)

IPSAP :
  항공우주 구조 연구실에서 개발한 구조해석 프로그램으로 병렬장비에서 성능이우수하다함.

PATRAN : (http://www.mscsoftware.co.kr)
  전 세계적으로 가장 널리 알려져 있는 CAE전용 Pre/Post Processor 로, 주요 CAD/ CAE 프로그램과 호환이 가능한, 가장 앞서가는 유한요소 해석 전후 처리 프로그램으로 인정 받음.
  (I-DEAS와 더불어 pre-processor의 하나로 형상모델을 finite elemation모델로 generation 하기위해 사용함.)
  MSC.NASTRAN과의 완벽한 통합, MSC.MARC, MSC.DYTRAN, ABAQUS, ANSYS, LS-DYNA 등의 다양한 Solver와의 원활한 호환성을 제공함.

Fluent : (http://www.fluent.com)
  유한체적법(FVM: Finite Volume Method)을 사용해 질량, 운동량, 에너지와 화학종의 보존방정식을 푸는 CFD 코드로 병렬처리에 성능이 좋다.

CFD :
  전산유체해석 (열, 유동해석) 프로그램으로 대표적인 Application은 StarCD(http://www.cd-adapco.com/)가 있다.

Gaussian :
  양자역학기본법칙과 에너지, 분자구조, 분자계, 진동주파수 등의 다양한 분자의 성질을 예측하는데 사용한다. 수명이 짧은 화학 화합물의 반응 실험이 어려운것을 수치적으로 예측할때에도 사용된다.
  Linda를 이용하여 리눅스 병렬 환경에서 가우시안을 사용가능함.

IMSL : (http://www.vni.co.kr)
  수치해석 Library로 자신의 응용 Application 개발에 사용되는 폭넓은 수학, 통계 함수들의 Library 세트입니다. IMSL은  C, C#, Java™, Fortran 등을 지원하므로 어떤 언어를 사용하더라도 편리하게 프로그램을 하도록 도와줄수 있다.
  ( 최적화 / FFT / 보간 / 미분방정식 / 상관 / 회귀 / 시계열 분석 /기타 다양한 기능 지원 )



* ANSYS(LS-Dyna), ABAQUS, NASTRAN 등 주요 구조해석 프로그램들은 대부분 병렬 수행을 지원함.

2007/08/11 20:02 2007/08/11 20:02
[로그인][오픈아이디란?]