원격 병렬 명령에 사용하는 pdsh 설치 방법입니다.

http://www.wbitt.com/my-howtos/91-installing-pdsh-on-hpc-cluster.html

multi-thread 로 실행되기 때문에 빠르다고 합니다.
Rocks 에 들어있는 rocks run host 보다 좋은 듯.

pdsh, pdcp, rpdcp 등의 명령이 제공되고, 노드 선택할 때 유연성이 있습니다.

pdsh -w node[01-05] 'uptime'

범위를 설정하기 편하더군요..

참고 : http://linuxer.pe.kr/300

'Rocks' 카테고리의 다른 글

Rocks Command  (0) 2010.12.09
Adding a Login Appliance to Your Cluster  (0) 2010.12.09
Channel Bonding Interfaces  (0) 2010.12.09
Add roll on an existing server  (0) 2010.11.23
What you have to do after channel bonding  (0) 2010.10.19
Rocks Command 중 특이한 명령이 있어 올려봅니다.
이미 있었는데,, 제가 좀 늦게 눈치챈 것도 있고, Rocks 5.4에서 추가된 것도 있습니다.

rocks add host bonded compute-0-0 channel=bond0 interface=eth0,eth1 ip=10.1.255.254 network=private
http://www.rocksclusters.org/roll-documentation/base/5.4/x1640.html#ROCKS-ADD-HOST-BONDED

rocks create mirror http://mirrors.kernel.org/contos/4.5/updates/i386/RPMS rollname=updates version=4.5
http://www.rocksclusters.org/roll-documentation/base/5.4/x3097.html#ROCKS-CREATE-MIRROR

rocks iterate host compute commnad="scp file %:/tmp/"
http://www.rocksclusters.org/roll-documentation/base/5.4/x3755.html

rocks open host console {host} [key=string] [vncflags=string]
http://www.rocksclusters.org/roll-documentation/base/5.4/x4603.html#ROCKS-OPEN-HOST-CONSOLE

rocks set host interface channel compute-0-0 iface=eth1 channel="bond0"
http://www.rocksclusters.org/roll-documentation/base/5.4/x6200.html#ROCKS-SET-HOST-INTERFACE-CHANNEL

rocks set host power action=on/off/install
http://www.rocksclusters.org/roll-documentation/base/5.4/x6200.html#ROCKS-SET-HOST-POWER

rocks swap host interface {host} [ifaces=string] [sync-config=boolean]
http://www.rocksclusters.org/roll-documentation/base/5.4/x7772.html

rocks update
http://www.rocksclusters.org/roll-documentation/base/5.4/x7861.html

'Rocks' 카테고리의 다른 글

Installing pdsh on HPC cluster  (0) 2010.12.15
Adding a Login Appliance to Your Cluster  (0) 2010.12.09
Channel Bonding Interfaces  (0) 2010.12.09
Add roll on an existing server  (0) 2010.11.23
What you have to do after channel bonding  (0) 2010.10.19

Rocks 5.4 에서 추가된 또 다른 기능입니다.
Login 노드를 추가할 수 있습니다.
예전에는 별도로 다운받거나 XML을 수정해서 Login 노드 타입을 설정할 수 있었지만,,
기본 기능으로 추가되었네요..

http://www.rocksclusters.org/roll-documentation/base/5.4/login-appliance.html


7.3. Adding a Login Appliance to Your Cluster

A login appliance is a host that users use to build, launch and monitor their application(s). This host is a subset of a frontend appliance (a frontend runs several other services that are used to install and maintain all the nodes in the system).

First, we need to perform the initial installation of the login appliance. On the frontend, execute:

# insert-ethers

Select "Login" as the appliance type.

Then PXE boot the host that you want to be a login appliance.

Login hosts are generally hosts that also have a public network interface so users can directly access the login host. After the login appliance installs, to configure the public network interface on the login host, see Adding a public IP address to the second ethernet adapter on a compute node.

7.3.1. Making any Host a Submission and/or Execution Host

If you've installed a batch queueing system (e.g., by using the SGE Roll or Torque Roll), you can change any host in your system to be a submission host (a host where users can submit jobs) and/or an execution host (the queueing system schedules jobs on execution hosts).

Note

By default, a login host is a submission host, but not an execution host. By default, a compute node is an execution host, but not a submission host.

To make a host a submission host (e.g., tile-0-0), on the frontend execute:

# rocks set host attr tile-0-0 submit_host true

Then reinstall tile-0-0.

To make a host an execution host (e.g., tile-0-0), on the frontend execute:

# rocks set host attr tile-0-0 exec_host true

Then reinstall tile-0-0.


'Rocks' 카테고리의 다른 글

Installing pdsh on HPC cluster  (0) 2010.12.15
Rocks Command  (0) 2010.12.09
Channel Bonding Interfaces  (0) 2010.12.09
Add roll on an existing server  (0) 2010.11.23
What you have to do after channel bonding  (0) 2010.10.19

Rocks Cluster 5.4에서 추가된 Channel Bonding 관련 내용입니다. 간단한 명령으로 채널 본딩을 구성할 수있게 되었네요..

http://www.rocksclusters.org/roll-documentation/base/5.4/bonding.html 

7.4. Channel Bonding Interfaces

Channel bonding enables two or more network interfaces to act as one. The following procedure describes how to channel bond interfaces in Rocks.

We'll use the example of channel bonding two interfaces for compute-0-1. First, let's list the current configuration of the interfaces for compute-0-1:

# rocks list host interface compute-0-1
SUBNET IFACE MAC IP NETMASK MODULE NAME VLAN OPTIONS
private eth0 00:1e:4f:b0:74:ef 10.1.255.253 255.255.0.0 tg3 compute-0-1 ---- -------
------- eth1 00:10:18:31:74:43 ------------ ----------- tg3 ----------- ---- -------

Here's what we'll do:

  • Bond eth0 and eth1.

  • Name the bonded channel "bond0".

  • Give bond0 the IP address 10.1.255.253.

  • Associate bond0 with the private network.

# rocks add host bonded compute-0-1 channel=bond0 interfaces=eth0,eth1 ip=10.1.255.253 network=private

The above command changes the interface configuraion for compute-0-1 in the following way:

# rocks list host interface compute-0-1
SUBNET IFACE MAC IP NETMASK MODULE NAME VLAN OPTIONS CHANNEL
private bond0 ----------------- 10.1.255.253 255.255.0.0 bonding compute-0-1 ---- ------- -------
------- eth0 00:1e:4f:b0:74:ef ------------ ----------- tg3 ----------- ---- ------- bond0
------- eth1 00:10:18:31:74:43 ------------ ----------- tg3 ----------- ---- ------- bond0

To apply the configuration, execute:

# rocks sync config
# rocks sync host network compute-0-1

7.4.1. Adding Parameters to the Kernel Bonding Module

There are several options that can be added to the kernel bonding module (see RedHat's documentation The Channel Bonding Module for a full description of all the options).

To set options "miimon=100" and "mode=balance-rr" for the kernel bonding module associated with bond0, execute:

# rocks set host interface options compute-0-1 bond0 options="miimon=100 mode=balance-rr"
Warning

The "options" value (e.g., "miimon=100 mode=balance-rr") must be a space-separated list.

And now we see:

SUBNET  IFACE MAC               IP           NETMASK     MODULE  NAME        VLAN OPTIONS                    CHANNEL
private bond0 ----------------- 10.1.255.253 255.255.0.0 bonding compute-0-1 ---- miimon=100 mode=balance-rr -------
------- eth0 00:1e:4f:b0:74:ef ------------ ----------- tg3 ----------- ---- -------------------------- bond0
------- eth1 00:10:18:31:74:43 ------------ ----------- tg3 ----------- ---- -------------------------- bond0

To apply the options to the bond0 interface, execute:

# rocks sync host network compute-0-1

'Rocks' 카테고리의 다른 글

Rocks Command  (0) 2010.12.09
Adding a Login Appliance to Your Cluster  (0) 2010.12.09
Add roll on an existing server  (0) 2010.11.23
What you have to do after channel bonding  (0) 2010.10.19
Dell Blade 성능이슈 및 해결 방법  (0) 2010.10.08
이미 설치된 Cluster 에 Roll을 추가하는 방법입니다.
아래 설명은 Area51 매뉴얼이지만,, 대부분의 roll cd에 적용 가능합니다.

2.2. On an Existing Server

The area51 Roll may also be added onto an existing server (or frontend). For sake of discussion, assume that you have an iso image of the roll called area51.iso. The following procedure will install the Roll, and after the server reboots the Roll should be fully installed and configured.

$ su - root
# rocks add roll area51.iso
# rocks enable roll area51
# cd /export/rocks/install
# rocks create distro
# rocks run roll area51 | bash
# init 6

Rocks Cluster에서 Channel Bonding 구성을 하면 몇가지 문제가 생긴다.

1. 일반계정 홈디렉토리 마운트가 안됨
2. Job Submit 후 connection refused 에러
3. Ganglia 모니터링 안됨

Firewall 때문에 발생한 문제인데,,
Rocks에서는 Private Network 을 eth0로 고정되어 있다.
eth0로 되어 있는 부분을 몽땅 bond0로 바꿔줘야 문제가 안된다.

Frontend
/etc/sysconfig/iptables
/etc/sysconfig/static-routes

Compute
/etc/sysconfig/iptables
/etc/sysconfig/static-routes


'Rocks' 카테고리의 다른 글

Channel Bonding Interfaces  (0) 2010.12.09
Add roll on an existing server  (0) 2010.11.23
Dell Blade 성능이슈 및 해결 방법  (0) 2010.10.08
Install ofed, intel-developer, intel-icr without support roll  (0) 2010.09.20
Rocks+ 설치 주의사항  (0) 2010.09.18
이번에 Dell Blade 에 Rocks+ 를 구성하면서 여러가지 많은 공부를 했습니다.
잊어먹기 전에 간단히 메모라도 해두어야죠..

  • IPMI 패스워드 설정
    • Rocks 문서에 보면, 파워 관리를 위해 IPMI를 사용하는 방법이 나와 있습니다.
    • 네트워크를 통해 관리하려면, IP를 입력하고, 네트워크 관리를 활성화 하고, 계정에 패스워드를 입력하여 활성화 시켜줘야 합니다.
    • 계정을 활성화할 경우 Dell Blade의 샤시 관리 모듈 (CMC)와 각 블레이드의 IPMI 모듈(iDRAC6)의 통신이 안된다는 군요.
    • 이 문제때문에 블레이드 서버가 관리 모듈에서 사라지는 문제를 겪었습니다.
    • 해결 방법은 패스워드를 설정하지 않는 것이죠...
    • default 계정으로 root/calvin을 사용하면 됩니다.
    • 참고 : Google 그룹스(Rocks Cluster)

  • Infiniband  연결방법
    • Blocking <-> Non-Blocking 구조가 있다고 합니다.
    • 총 16개의 블레이드가 장착되는데,, Infiniband 카드를 장착할 때 8대는 B위치에 나머지 8대는 C위치에 장착해야 하고,
    • Infiniband 스위치 모듈 또한 B위치/C위치에 각각 연결해야 합니다.

  • 블레이드 서버 MAC <--> 샤시 MAC 매칭
    • 이번에 이 기능을 보고 참 좋아졌구나 생각했습니다.
    • 블레이드 서버에 문제가 생겨서 보드를 교체할 경우 Onboard NIC의 MAC주소가 바뀌게 됩니다.
    • 이런 문제를 해결하기 위해 만들어진 것인지는 모르겠지만, Onboard NIC의 MAC주소를 샤시의 MAC 주소로 1:1 매핑시켜주는 기능이 있습니다.
    • 이 기능은 샤시 관리 모듈(CMC)의 Add-on 기능이며, 메모리를 꽂아서 활성화 시켜주어야 합니다.
    • 이 메모리는 샤시의 Service Tag를 기억하고 있으며, Service Tag가 다를 경우 동작하지 않습니다.

  • ifcfg-eth0 의 MAC 주소와 성능관계??
    • 이번 프로젝트의 최대 미스테리입니다.
    • 일반적으로 RedHat 계열 리눅스에서 네트워크 설정을 하면 /etc/sysconfig/network-scripts/ifcfg-eth0 안에 HWADDR=xx:xx:xx:xx:xx:xx 형태의 MAC을 기록하게 됩니다.
    • 이 항목을 주석처리하고 리부팅했는데 성능이 향상되었다?
    • 성능과 MAC주소와 무슨 관계가 있는지.. ??? 연구가 필요한 부분이네요..

왜 설치가 안됐을까 고민고민하다가 rocks 의 graphs 에 대해서 확인하고, 그 원인을 찾았습니다.
graphs 는 rocks 패키지 설치의 지도와 같습니다.
지도에 support 가 설치되어 있어야 설치가 된다고 연결이 되어 있더군요.



당연히 안되는 걸 가지고,, 한참을 헤맸네요..
그럼 해결 방법은 ??

support-client ==> client
support-server ==> server

로 연결 고리를 바꾸면 가능하지 않을까요? ㅎㅎㅎ

[root@rocks ~]# cd /export/rocks/install/rocks-dist/x86_64/build/graphs/default/
[root@rocks default]# cp ofed.xml intel-developer.xml intel-icr.xml /export/rocks/install/site-profiles/5.3/graphs/default/
[root@rocks default]# cd /export/rocks/install/site-profiles/5.3/graphs/default/

ofed.xml
FROM
<edge from="support-server">
  <to>ofed-server</to>
  <to>ofed-base</to>
  <to>ofed-prune-packages</to>
</edge>

<edge from="support-client" cond="ofed">
  <to>ofed-client</to>
  <to>ofed-base</to>
  <to>ofed-prune-packages</to>
</edge>

TO
<edge from="server">
  <to>ofed-server</to>
  <to>ofed-base</to>
  <to>ofed-prune-packages</to>
</edge>

<edge from="client" cond="ofed">
  <to>ofed-client</to>
  <to>ofed-base</to>
  <to>ofed-prune-packages</to>
</edge>


intel-developer.xml
FROM
<edge from="support-server" to="intel-developer-server"/>
<edge from="support-client" to="intel-developer-client"/>
<edge from="support-base"   to="intel-developer-base"/>

TO
<edge from="server" to="intel-developer-server"/>
<edge from="client" to="intel-developer-client"/>
<edge from="base"   to="intel-developer-base"/>


intel-icr.xml
FROM
<edge from="support-server">
<to>intel-icr-frontend</to>
</edge>

<edge from="support-client">
<to>intel-icr-client</to>
</edge>

TO
<edge from="server">
<to>intel-icr-frontend</to>
</edge>

<edge from="client">
<to>intel-icr-client</to>
</edge>

[root@rocks default]# cd /export/rocks/install/
[root@rocks install]# rocks create distro

'Rocks' 카테고리의 다른 글

What you have to do after channel bonding  (0) 2010.10.19
Dell Blade 성능이슈 및 해결 방법  (0) 2010.10.08
Rocks+ 설치 주의사항  (0) 2010.09.18
HPC Cluster 구성 툴의 다양화  (0) 2010.07.07
Rocks 5.4 발표 일정  (5) 2010.06.25
얼마전 Cluster 를 구성하다가,, 한참을 헤맨적이 있습니다.
고객이 Infiniband 환경을 구성하고, Intel Compiler 설치를 요구해서,, 아래와 같은 Roll CD를 준비했죠.

base + ganglia + hpc + kernel + OS + sge + web-server : from http://www.rocksclusters.org
ofed + intel-developer + intel-icr : from http://www.clustercorp.com

이렇게 설치를 하니,, clustercorp 에서 가져온 Roll CD가 하나도 설치되지 않더군요.
그럼 모두 clustercorp 에서 가져온다면 ??

base + ganglia + hpc + kernel + sge + web-server : from http://www.clustercopr.com
CentOS 5.4 : from http://www.centos.org
ofed + intel-developer + intel-icr : from http://www.clustercorp.com

모두 clustercorp 에서 가져왔는데,, 설치가 되었을까요??
결과는 똑같습니다. ofed, intel-developer, intel-icr 모두 설치 안됩니다.

기존 구성과 다른 점을 찾아봤죠..
바로 바로,, clustercorp 에서 제공하는 support roll을 설치하지 않은 거죠..
support roll을 사용하지 않을 경우 clustercorp에서 가져온 roll은 모두 설치되지 않는다는 결론을 얻었습니다.
어디에 스크립트가 정의되어 있는지 찾아봤지만,, 꼭꼭 숨겨놓은 것 같네요..
혹시라도 발견하면 다시 포스팅하겠습니다.
정말 급변하는 시대이다.
잠시 한눈 팔면,, 변화에 뒤쳐지기 마련이다..
최근에 HPC Cluster 구축 요청을 받으면서,,
고객은 이미 한발 앞서가고 있는데,, 서비스를 제공한다는 사람이 관련 내용을 전혀 모르고 있다니 !!
급 실망.. ~~~~
하지만 늦었다고 생갈할 때가 가장 빠르다는 격언을 되새기며,, 최근의 Cluster 툴을 살펴보자.

1. http://www.rocksclusters.org
 - 가장 애용하는 클러스터 툴이다. 이 툴을 접해본지도 벌써 5년이 다되간다.
   무엇보다 구성하기가 쉽다. 그동안 구축한 reference 도 상당히 많다.
   앞으로도 가장 많이 사용하게될 툴....

2. http://www.clustercorp.com (Rocks+)
 - Rocks Cluster 는 OpenSource 이다. 이 패키지 안에 포함되어 있는 툴들도 모두 OpenSource 이다.
   하지만,, 클러스터를 구성하다 보면 상용툴을 설치해야 하는 경우가 종종 있다.
   예를 들면, Intel Compiler, TotalView, PBS Pro 등 상용 Scheduler 등등..
   ClusterCorp는 OpenSource Rocks 를 기반으로 하며, 상용 툴들에 대한 Roll CD를 제공해 준다.
   Roll CD를 다운로드 받으려면 반드시 등록된 ID가 있어야 하며,,
   구매 가격은 $149/node 부터 시작한다.

3. http://rocks.stanford.edu/doku.php
  - 상용 툴을 사용하기 위해 반드시 반드시 Rocks+ 를 구매해야 하는 것은 아니다.
    위 싸이트에 접속하면 Intel, PGI, openIB, MPI Library 등을 구할 수 있다.

4. http://www.redhat.com/hpc
   http://www.platform.com/cluster-computing/cluster-management
   http://www.hpccommunity.org/
  - 이 툴은 정말 최근에야 소식을 접했다
    예전에 Platform 에서는 Rocks를 기반으로 Open Cluster Stack (OCS) 을 제공했는데,
    최근에 PCM (Platform Cluster Management)  으로 그 툴이 변경되었다.
    KUSU 라는 프로젝트를 기반으로 하고 있다는데,,
    알아봐야 할 내용이 많은 부분이다.
  - RedHat HPC 를 구매하면 yum을 통해서 PCM을 구성할 수 있다고 하는데,,
    현재 Evaluation 중인데, 완전 까막눈이라 갈 길이 멀다.

5. http://www.penguincomputing.com/software/scyld_clusterware
   - Scyld ClusterWare 라는 클러스터 구축 툴이다.
     얼마전 S대에 펭귄클러스터가 납품되었는데, diskless 구성이다.
     사용해 본 분이 그 어떤 툴보다 사용이 편리하다고 하더라...
     Evaluation 을 해봤는데,, 구축하기도 쉽다.
     좀 더 테스트가 필요한 툴이다.

6. http://svn.oscar.openclustergroup.org/trac/oscar/wiki
   - OSCAR
   - 한번도 시도해 보지 않은 툴이다.
      현재도 계속 업데이트되고 있는데,, 언젠가 한번 테스트 해봐야지.

7. http://xcat.sourceforge.net/
  - xCAT Extreme Cloud Administration Toolkit
   2005년 이후에 설치해 볼 기회가 없었다.
   IBM에서 OpenSource 로 넘어오면서, 구조 자체가 바뀌었다고 하던데,,,
   언젠가는 테스트해 볼 기회가 오겠지..
현재 다운로드 가능한 버전은 5.3 Tacos 입니다.
Rocks 5.3 (Rolled Tacos) for Linux

Rocks 홈페이지에 방문하면 오른쪽 하단에 Google Calendar 가 있습니다.
여기에 보면 9월 14일 쯤에 5.4 버전이 출시된다는 군요..

Rocks-A-Palooza 에 가보면,, 5.4에 추가되는 기능이 나옵니다.
http://www.rocksclusters.org/rocksapalooza/2010/whats-in-5-4.pdf

NIC Bonding 기능이 눈에 띠네요..
요즘엔 서버 또는 PC에 장착된 CD-ROM 이 IDE/SATA 방식이 아니라,
USB 방식으로 연결되어 있는 경우가 있습니다.
이럴 경우 초기에 Kernel 이 올라온 후 CD-ROM 을 못찾는다는 메시지와 함께,,
더이상 설치를 진행할 수 없게 되죠..

The Rocks CD was not found in any of your CDROM drives.  Please insert the Rocks CD and press OK to retry.

이럴 때 아래 방법을 사용해 보세요..

https://wiki.rocksclusters.org/wiki/index.php/Tips_and_tricks

 

Q: How do I use a USB attached DVD drive to install the frontend?

A. Append driverload=usb-storage to the build command when you first boot the frontend.


# build driverload=usb-storage
Rocks 5.3에서 samba 서버를 사용할 경우
iptables Firewall 때문에,, 외부에서는 접속이 안됩니다.
아래와 같은 명령으로 samba 관련 포트를 열어야 사용할 수 있습니다.

/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto tcp --dport 137 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto tcp --dport 138 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto tcp --dport 139 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto tcp --dport 445 --jump ACCEPT

/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto udp --dport 137 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto udp --dport 138 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto udp --dport 139 --jump ACCEPT
/sbin/iptables --insert INPUT --source your.ip.networks.0/255.255.255.0  --in-interface eth1 --proto udp --dport 445 --jump ACCEPT

iptables -L
service iptables save

Rocks 5.2 + RHEL 5.3 (x86_64) 버전
SGE-v62u2_1-1

qrsh 를 실행하면 아래와 같이 에러가 발생합니다.

error: error: ending connection before all data received
error:
error reading job context from "qlogin_starter"

아래 내용을 근거로 Queue 설정에서 아래쪽 두줄을 삭제합니다.

rsh_command                  /usr/bin/ssh
rlogin_command               /usr/bin/ssh


[root@frontend ~]# qconf -sconf
#global:
execd_spool_dir              /opt/gridengine/default/spool
mailer                       /bin/mail
xterm                        /usr/bin/X11/xterm
load_sensor                  none
prolog                       none
epilog                       none
shell_start_mode             posix_compliant
login_shells                 sh,ksh,csh,tcsh
min_uid                      0
min_gid                      0
user_lists                   none
xuser_lists                  none
projects                     none
xprojects                    none
enforce_project              false
enforce_user                 auto
load_report_time             00:00:40
max_unheard                  00:05:00
reschedule_unknown           00:00:00
loglevel                     log_warning
administrator_mail           none
set_token_cmd                none
pag_cmd                      none
token_extend_time            none
shepherd_cmd                 none
qmaster_params               none
execd_params                 none
reporting_params             accounting=true reporting=true \
                             flush_time=00:00:15 joblog=true sharelog=00:00:00
finished_jobs                100
gid_range                    20000-20100
qlogin_command               builtin
qlogin_daemon                builtin
rlogin_command               builtin
rlogin_daemon                builtin
rsh_command                  builtin
rsh_daemon                   builtin
max_aj_instances             2000
max_aj_tasks                 75000
max_u_jobs                   0
max_jobs                     0
max_advance_reservations     0
auto_user_oticket            0
auto_user_fshare             0
auto_user_default_project    none
auto_user_delete_time        86400
delegated_file_staging       false
reprioritize                 0
jsv_url                      none
qrsh_command                 /usr/bin/ssh
rsh_command                  /usr/bin/ssh
rlogin_command               /usr/bin/ssh
jsv_allowed_mod              ac,h,i,e,o,j,M,N,p,w

[root@frontend ~]# qconf -mconf
#rsh_command                  /usr/bin/ssh   ## 삭제
#rlogin_command               /usr/bin/ssh   ## 삭제


신규 서버를 도입한 이후에 성능이 예전만 못하다!!
돈들여 구입했는데,, 예전만 못하다면,, 실망이 이만 저만이 아니죠..
분명히 최근에 나온 신규 서버이고,,
Intel에서 CPU의 성능이 월등히 좋아졌다고 하는데,,
2년전에 도입한 서버보다도 성능이 떨어지다니!!!

여기서 잠깐,,,
성능비교 환경을 잠깐 살펴보죠..

1. CPU
   OLD : Intel 3000-series "Conroe" 3070 (2.66GHz Dual-core, 4MB L2 Cache, 1066MHz FSB)
   NEW : Intel 5500-series "Nehalem-EP" (Gainestown) E5504 (2.0GHz Quad-core, 4MB L3 Cache)

2. Application
   User Developed MPI Program. USE 4 cores

아~~~ 눈물이 앞을 가립니다.
Dual-core <--> Quad-core
"Conroe" <--> "Nehalem-EP"
어느것 하나 떨어지는 것이 없는데,, 왜 성능이 떨어지는 것입니까????

이것이 바로 성능 비교의 오류입니다.
사용하는 application은 MPI 프로그램으로 CPU를 많이 사용합니다.
비교에 사용된 core 개수는 OLD / NEW 모두 4 core를 사용했습니다.
4 core를 사용할 경우 초당 부동소수점 연산 (FLOPS)를 이론치는,,

Rpeak (OLD) = 2.66 * 4 cores * 4 = 42.56
Rpeak (NEW) = 2.0 * 4 cores * 4 = 32

같은 core를 사용할 경우 성능을 좌우하는 것은 CPU Clock 입니다.
Clock 이 낮으므로,, 신규 서버의 성능이 당연히 떨어질 수 밖에 없습니다.
당연한 것 때문에,, 고민하는 분이,,, 앞으로는 안계시길...

Performance Tuning !!!
무슨 작업을 하던 간에,, 가장 어려운 주제입니다.
얼마전에 Rocks 5.1 Cluster 를 구성했는데,
성능이 예상만큼 안나온다는 얘기를 들었습니다.
올 것이 왔구나!!!

성능을 개선하기 위해서 여러가지 접근 방법이 있겠지만,,
우선은 Compiler와 MPI Library를 변경하기로 하였습니다.
Intel Roll CD가 제공되지만,, Roll CD를 사용하지 않고,,
개별적으로 Intel Fortran Compiler + Intel MPI Libray 를 설치하는 방법을 사용했습니다.

  1. Compatibility Package 설치
    • Intel Compiler 설치를 위해서는 미리 설치되어 있어야 합니다.
    • compat-gcc-34, compat-gcc-34-g77, compat-gcc-34-c++, compat-libstdc++ 패키지 설치
    • yum -y install compat-gcc-34 compat-gcc-34-g77 compat-gcc-34-c++ compat-libstdc++
    • [compute node only] yum -y install gcc-g++
       
  2. Intel Fortran Compiler 설치
    • Intel Software download 싸이트에서 Evaluation 을 다운로드
    • 메일로 라이센스 키를 받으면 /opt/intel/licenses 디렉토리 아래에 복사
    • Evaluation 설치 파일을 받으면, /tmp로 이동 후 압축 해제
    • ./install.sh 스크립트로 설치 시작
    • 설치 과정에서 현재 OS(CentOS 5.2)가 호환되지 않는다는 메시지가 뜨지만 무시하고 넘어가면 설치를 계속할 수 있습니다.
    • 설치 완료 후 환경변수 load
      # source /opt/intel/Compiler/11.0/081/bin/ifortvars.sh intel64
       
  3. Intel MPI Library 설치
    • 설치 파일을 /tmp로 이동 후 압축 해제
    • machine.LINUX 파일을 편집해서 설치하기 위한 모든 노드 목록을 작성
      master
      slave
    • ./install.sh 스크립트로 설치 시작
    • 설치 완료 후 환경변수 load
      # source /opt/intel/impi/3.2.1/bin64/mpivars.sh
       
  4. MPI Program compile
    • 환경변수를 load 하면, ifort 명령으로 fortran compile이 가능함
    • MPI 프로그램을 compile 하기 위해서는 mpiifort 를 사용
    • mpif90 을 사용할 경우 gfortran 으로 compile됨
       
  5. SGE 와 연동해서 mpirun
    • Intel MPI Library 는 MPI-2 를 기반으로 구성되어 있음
    • mpdboot, mpdallexit 가 필요한데,, mpirun 스크립트를 사용하면 자동으로 실행해 줌
    • job submit 예제
       
      #!/bin/sh

      #
      #$ -cwd
      #$ -j y
      #$ -S /bin/bash
      #$ -pe mpich 4
      #
      echo '------------------------------------------'
      echo 'host='$HOSTNAME
      echo "Got $NSLOTS slots."
      echo '------------------------------------------'
      /opt/intel/impi/3.2.1.009/bin64/mpirun -np $NSLOTS /your/program/full/path/application

       
    • -cwd 옵션을 사용했는데도,, application full path를 적어줘야 동작함
      full path를 사용하지 않을 경우 [Errno 2] No such file or directory 발생
       

일단,, Intel Compiler 를 사용해서 성능이 개선되길 바래야죠..
성능 개선이 안될 경우 일이 더 복잡해지는데요...

'Rocks' 카테고리의 다른 글

SGE error: ending connection before all data received  (0) 2009.11.17
성능비교의 오류  (0) 2009.07.15
Rocks 설치 중 네트워크 연결 실패  (0) 2009.06.21
PXE-E32: TFTP open timeout  (0) 2009.06.21
rocks command  (0) 2009.06.21

Rocks 또는 WCCS 2003 또는 HPCS 2008 등등
클러스터를 구성하는 경우,,
대부분 PXE Network 부팅을 통해 Compute Node를 설치합니다.

Rocks 4.3을 이용해서 Compute Node를 설치하던 중,,
Frontend 노드와 연결이 되지 않아 설치 초기 과정에서 실패하는 경우가 있습니다.

실패가 나타나는 경우
- CISCO Catalyst 29xxG Switch 사용
- PXE 부팅과정에서 DHCP에서 IP를 받아오며,, 설치 초기 화면까지는 나타남
- 설치가 진행되는 듯 싶다가,, 멈춘 후 리부팅 됨

실패 원인
- 좀 특이한 경우겠지만,, CISCO Switch 의 경우 Learning Time 이란 것이 있습니다.
- 스위치에 새로운 서버를 연결했을 경우 처음에는 주황색 이었다가,,
  한참이 지난 후에야 초록색으로 바뀝니다.
- 정확하게는 Blocking, Listening, Learning, Forwarding, Disabled 상태 중 하나이지요.
- 서버를 부팅했을 경우 Forwarding 상태이기 때문에,, PXE 부팅이 진행됩니다.
- PXE 부팅과정에서 리눅스 커널이 올라옵니다.
- 리눅스 커널이 네트워크 드라이버 모듈을 다시 올리는 과정에서
  스위치와의 링크가 끊어졌다가 다시 연결됩니다.
- 다시 연결되었기 때문에,, 스위치는 Spanning-Tree 설정에 따라
  Forwarding 되기까지 시간이 걸립니다.
- 지연되는 시간 때문에,, 네트워크가 끊긴 것으로 인식하고, 설치를 종료시켜버립니다.

해결방법
- Switch의 Learning Time을 줄여줘야 합니다.
- Spanning-Tree를 사용하지 않거나,, Port Fast를 적용합니다.
- Catalyst 2960G 스위치의 매뉴얼은 아래 링크를 참조하세요.
http://www.cisco.com/en/US/docs/switches/lan/catalyst2960/software/release/12.2_25_see/configuration/guide/scg_1.html

Catalyst Switch 연결
- Serial Cable 사용
   Linux의 minicom 이란 프로그램 실행
   # minicom -s

      위와 같이 설정하고,, 연결이 되면,,
      Switch> en

   또는,,
 
__

'Rocks' 카테고리의 다른 글

SGE error: ending connection before all data received  (0) 2009.11.17
성능비교의 오류  (0) 2009.07.15
Install Intel Fortran Compiler and MPI Library on Rocks 5.1  (0) 2009.06.23
PXE-E32: TFTP open timeout  (0) 2009.06.21
rocks command  (0) 2009.06.21
Rocks 클러스터를 설치하는 과정에서,
PXE Network 부팅을 진행하다가,,
아래와 같은 메시지가 발생했을 경우???

PXE-E32: TFTP open timeout

생각지도 못했던 문제에 상당히 고생했습니다.
DHCP 에서 IP를 받아가고 나서,,
TFTP Server 에서 부팅에 필요한 파일들을 가져가야 하는데,,
TFTP에 접근을 못해 timeout 이 발생합니다.

해결 방법
  1. Firewall 점검
    TFTP Server가 동작하고 있는 서버에서 iptables firewall을 사용할 경우
    우선 iptables 를 내린 후 다시 진행
    iptables 내린 후 정상 동작한다면,, iptables firewall 설정을 점검할 것
     
  2. TFTP 서버
    Rocks 5.1 버전에서는 TFTP 서버가 xinetd 서비스로 묶여서 돌아갑니다.
    xinetd 서비스를 재시작해보세요.

Platform OCS 는 Open Source Rocks를 기반으로 만들어졌습니다.
Rocks 4.0 버전일때,, Rocks 에 비해서 OCS가 편한점은
명령어를 통해서,, 클러스터 구성을 customizing 하기가 쉽다는 것이었습니다.
하지만,, rocks 란 명령어를 알고부터,, OCS와 비교해도 전혀 불편함이 없더군요..
modules roll 빼구요.. !!

암튼,, rocks command 중 중요한거 몇개만 설명해 드리겠습니다.

1. 설치할 때,, 호스트 추가


rocks add host <hostname> cpus=<cpu#> membership=compute rack=<#> rank=<#>
예를 들어,, node01, node02를 추가할 경우

# rocks add host node01 cpus=8 membership=compute rack=0 rank=1
# rocks add host node02 cpus=8 membership=compute rack=0 rank=2

호스트가 정상적으로 추가되었는지 확인

# rocks list host

2. 호스트에 인터페이스 추가


이번에는 추가된 호스트에 ip, mac 설정

rocks add host interface <hostname> <eth?> ip=<your_ip> mac=<your_mac> subnet=private name=<hostname>
node01, node02에 ip, mac 설정

# rocks add host interface node01 eth0 ip=192.168.0.11 mac=00:50:56:00:00:11 subnet=private name=node01
# rocks add host interface node02 eth0 ip=192.168.0.12 mac=00:50:56:00:00:12 subnet=private name=node02

정상 추가되었는지 확인

# rocks list host interface

3. rocks 설정 동기화 관련


일반 설정 동기화
# rocks sync config

user 설정 동기화
# rocks sync users

4. Roll 설정 관련


구성된 roll 확인
# rocks list roll

roll 비활성화
# rocks disable roll <roll-name>

비활성화된 roll 활성화
# rocks enable roll <roll-name>

roll 삭제
# rocks remove roll <roll-name>



+ Recent posts