[클러스터] 고해상도 수치 모의 병렬 프로그램 MM5-MPP 벤치마킹

고해상도 수치 모의 병렬 프로그램 MM5-MPP 벤치마킹 테스트 보고서

===============================================================

                      테스트 진행 자 : 서 진우 ( alang@syszone.co.kr )

                      테스트 진행 일 : 2004년 8월 4일

===============================================================

1. 시스템별 테스트 환경 구축 하기

MM5 설치 및 시스템 환경 구축 하기

1.1 컴파일러 설치

PGI, Intel 컴파일러 설치

1.2 MPI 병렬 프로그램 설치

여기서는 LAM-MPI 를 사용하였습니다. MPICH 와 LAM-MPI 의 경우 LAM-MPI 가 MPICH

보다 30% 정도의 성능 향상이 있었고, 안정성에서도 좋을것을 확인함.

( 실제 MPICH 의 경우 MM5 수행중에 프로그램이 비정상 종료되는 경우가 빈번히 발생함 )

1.3 MM5/MPP 설치

MM5/MPP download : http://www.mmm.ucar.edu/mm5/ 에서 MM5V3와 MPP 다운

# wget ftp://ftp.ucar.edu/mesouser/MM5V3/MM5.TAR.gz

# wget ftp://ftp.ucar.edu/mesouser/MM5V3/MPP.TAR.gz

# cd /home/clunix

# tar xzvf MM5.TAR.gz

# cd MM5

# tar xzvf MPP.TAR.gz

MM5 의 경우 원래 UNIX (cray) 시스템을 표준 시스템으로 만든 프로그램으로

리눅스에서 사용할 경우, 그리고 64bit 환경에서 사용할 경우 여러가지 Source

의 수정을 해 주어야 한다. 자세한 수정 과정은 각 플랫폼별 설치 과정에서

자세히 설명 하도록 하겠다. 여기서는 기본적으로 리눅스 OS 에 설치 하는 방법에

대해서만 다루도록 하겠다.

먼저 MM5_HOME 에 configure.user 란 파일을 configure.user.unix 로 변경한다.

그런 후 configure.user.linux 를 configure.user 로 변경한다.

# mv configure.user configure.user.unix

# mv configure.linux configure.user

그런 후 configure.user.unix 의 [7. MPP options ] 부분과 [ 7g. LINUX PCs.

Need Portland Group pgf77 and MPICH ] 부분을 복사해서 configure.user 의

[ 6. Physics option ] 다음 부분에 추가 한다.

그런 후 FCFLAGS or CFLAGS 등의 옵션을 프로세스 아키텍쳐에 맞게 변경한다.

Xeon 의 경우

FCFLAGS = -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio

LDOPTIONS = -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio

Opeteron 의 경우

FCFLAGS = -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe -byteswapio -DDEC_ALPHA

LDOPTIONS = -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe -byteswapio

그런 후

# vi MPP/RSL/Makefile.RSL

—————————————————-

INCLUDES 세션에 -I/usr/local/lam/include 를 추가한다.

만일 MPI 프로그램을 MPICH를 사용할 경우에는

-I/usr/local/mpich/include 를 추가한다.

INCLUDES = -I$(MPPTOP) -I$(MPPTOP)/$(MPP_LAYER)  \\

           -I$(DEVTOP)/pick -I$(MPPTOP)/debug -I$(RSLLOC) \\

                        -I/usr/local/lam/include

—————————————————-

# vi MPP/RSL/RSL/makefile.linux

—————————————————-

CFLAGS 세션에 -I/usr/local/lam/include 추가

CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O \\

        -I/usr/local/lam/include

—————————————————-

# vi MPP/RSL/RSL/rsl_mpi_compat.c

—————————————————-

mpi_init 로 문자열을 검색하면…

mpi_init___ 로 된 부분이 있다. 이것을 mpi_init_ 로 변경해 준다.

—————————————————-

그런 후

# vi MPP/RSL/RSL/makefile

—————————————————-

linux 세션 부분에 LINUX_MPIHOME=/usr/local/mpich 로 되어져 있는데

이부분을 각 MPI 프로그램 설치 환경에 맞게 변경한다.

linux :

       $(MAKE) -f makefile.linux LINUX_MPIHOME=/usr/local/lam $(MAKE_OPTS) all

—————————————————-

# cd MPP/RSL/RSL

# make linux

# cd /home/clunix/MM5

# make mpp

무사히 컴파일이 되면 /home/clunix/MM5/Run 디렉토리 밑에 mm5.mpp 란 실행

파일이 생길 것이다. 만일 그렇지 않으면 configure.user 를 적절히 수정해야 한다.

# make mm5.deck

무사히 컴파일이 되면 /home/clunix/MM5 디렉토리 밑에 mm5.deck 가 생긴다.

이것을 실행 한다.

# ./mm5.deck

그럼 /home/clunix/MM5/Run 밑에 mmlif 가 생성된다.

# cd /home/clunix/MM5/Run

MM5 사이트에서 테스트 INPUT DOMAIN DATA 를 다운 받아서 테스트 한다.

# wget ftp://ftp.ucar.edu/mesouser/MM5V3/TESTDATA/input2mm5.tar.gz

# tar xzvf input2mm5.tar.gz

-rw-r–r– bruyerec/users 1825164 2003-07-01 02:47:46 BDYOUT_DOMAIN1

-rw-r–r– bruyerec/users  170936 2003-07-01 02:47:46 LOWBDY_DOMAIN1

-rw-r–r– bruyerec/users 2889044 2003-07-01 02:47:46 MMINPUT_DOMAIN1

-rw-r–r– bruyerec/users  210980 2003-07-01 07:15:27 TERRAIN_DOMAIN2

이제 LAM-MPI 를 실행한다. LAM은 일반 계정에서 실행되어져야 한다.

# lamboot -v /etc/lamhost

—————————————————–

LAM 6.5.9/MPI 2 C++/ROMIO – Indiana University

Executing hboot on n0 (otn1 – 2 CPUs)…

Executing hboot on n1 (otn2 – 2 CPUs)…

Executing hboot on n2 (otn3 – 2 CPUs)…

topology done

—————————————————–

# mpirun -np 1 mm5.mpp

otn1 — rsl_nproc_all 1, rsl_myproc 0

수행이 완료되면..

rsl.error.000x

rsl.out.000x

show_domain_000x 가 생성된다.

여기서 주의 할점으로 실제 이 Data file 이 생성되는 디스크 장치가

한곳으로 정해져 있어야 한다. 즉 NFS 방식과 같은 디스크 저장 방식을 사용해야 한다.

여러 노드로 동시에 작업을 할 경우에 생성되는 데이터 파일간의 의존되는 부분이

있는데 이 부분이 각 노드별로 별로로 관리될 경우 mpi 데몬에서 에러를 발생한다.

그러므로 데이터가 생성되는 곳의 저장방식은 Sync 방식이 아닌 share 방식으로

나가야 한다.  ( share 방식도 가능함, 하지만 데이터 파일 수집등의 문제가 있음

실제 성능은 sync 방식으로 실행하는 것이 더 나음 )

이제 시스템 별 구체적인 변경 사항에 대해 알아보도록 하겠다.

– Opteron ( AMD-64bit )

configure.user 의 RWORDSIZE 값을 4에서 8로 변경함.

configure.user 의 FCFLACS 세션에 -qrealsize=8 값을 추가함.

MPP/RSL/RSL/rsl.inc 파일안의 RSL_REAL 파라미터 값을 0 에서 1로 변경함.

    parameter (RSL_REAL=1)

configure.user 에서 PGI Compiler 해당 FCFLAGS 에 -DDEC_ALPHA 를 추가함.

MPI Building 시에 CFLAGS , CPPFLAGS 에 -DDEC_ALPHA 를 추가함.

  /// Opteron system configure.user Sample File ///

——————————————————————————

SHELL = /bin/sh

.SUFFIXES: .F .i .o .f

RUNTIME_SYSTEM = “PC_PGF77”

LIBINCLUDE = $(DEVTOP)/include

FC = pgf77

FCFLAGS = -I$(LIBINCLUDE) -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe \\

           -byteswapio -DDEC_ALPHA -qrealsize=8  

CPP = /lib/cpp  CFLAGS = -O3 -DDEC_ALPHA  

CPPFLAGS = -I$(LIBINCLUDE) -DDEC_ALPHA  

LDOPTIONS = -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe -byteswapio  

LOCAL_LIBRARIES =  

MAKE = make -i -r

AR = ar ru

RM = rm -f

RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o *.i core errs ,* *~ *.a \\

.emacs_* tags TAGS make.log MakeOut *.f !

GREP = grep -s

CC = cc

FDDAGD = 0

FDDAOBS = 0

MAXNES = 2

MIX = 49

MJX = 52

MKX = 23

IMPHYS = “4,4,1,1,1,1,1,1,1,1”

MPHYSTBL = 0

ICUPA  = “3,3,1,1,1,1,1,1,1,1”

IBLTYP  = “5,5,2,2,2,2,2,2,2,1”

FRAD = “2,0,0,0,0”

IPOLAR = 0

ISOIL = 1

ISHALLO  = “0,0,0,0,0,0,0,0,0,0”

MPP_LAYER=RSL

PROCMIN_NS = 1

PROCMIN_EW = 1

ASSUME_HOMOGENEOUS_ENVIRONMENT = 1

RUNTIME_SYSTEM = “linux”

MPP_TARGET=$(RUNTIME_SYSTEM)

LINUX_MPIHOME = /usr/local/lam

MFC = $(LINUX_MPIHOME)/bin/mpif77

MCC = $(LINUX_MPIHOME)/bin/mpicc

MLD = $(LINUX_MPIHOME)/bin/mpif77

FCFLAGS = -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe -byteswapio \\

          -DDEC_ALPHA -qrealsize=8

LDOPTIONS = -fast -Mcray=pointer -tp k8-64 -pc 64 -Mnoframe -byteswapio

LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpi -llam

MAKE = make -i -r

AWK = awk

SED = sed

CAT = cat

CUT = cut

EXPAND = expand

M4 = m4

CPP = /lib/cpp -C -P -traditional

CPPFLAGS = -DMPI -Dlinux -DSYSTEM_CALL_OK -DDEC_ALPHA

CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include -DDEC_ALPHA

ARCH_OBJS =  milliclock.o

IWORDSIZE = 4

RWORDSIZE = 8

LWORDSIZE = 4

.F.i:

        $(RM) $@

        $(CPP) $(CPPFLAGS) $*.F > $@

        mv $*.i $(DEVTOP)/pick/$*.f

        cp $*.F $(DEVTOP)/pick

.c.o:

        $(RM) $@ && \\

        $(CC) -c $(CFLAGS) $*.c

.F.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.F

.f.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.f

——————————————————————————

;;; LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpi -llam 부분은 MPI 프로그램을

LAM-MPI로 했을 경우에 추가 되는 부분이다. MPICH 사용시에는 반드시 ..

LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpich -lfmpich 로 변경해 주어야 한다

– Xeon System ( IA-32bit )

Xeon의 경우는 그냥 MM5 리눅스 표준 환경에 맞게 구축하면 크게 무리 없이 설치할

수 있습니다. 예제 configure.user 파일을 참조하라.

        /// Xeon System ‘s Configure.user Sample File ///

——————————————————————————

SHELL = /bin/sh

.SUFFIXES: .F .i .o .f

RUNTIME_SYSTEM = “PC_PGF77”

LIBINCLUDE = $(DEVTOP)/include

FC = pgf90

FCFLAGS = -I$(LIBINCLUDE) -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio  

CPP = /lib/cpp  

CFLAGS = -O  

CPPFLAGS = -I$(LIBINCLUDE)  

LDOPTIONS = -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio  

LOCAL_LIBRARIES =  

MAKE = make -i -r

AR = ar ru

RM = rm -f

RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o *.i core errs ,* *~ *.a \\

.emacs_* tags TAGS make.log MakeOut *.f !

GREP = grep -s

CC = cc

FDDAGD = 0

FDDAOBS = 0

MAXNES = 2

MIX = 49

MJX = 52

MKX = 23

IMPHYS = “4,4,1,1,1,1,1,1,1,1”

MPHYSTBL = 0

ICUPA  = “3,3,1,1,1,1,1,1,1,1”

IBLTYP  = “5,5,2,2,2,2,2,2,2,1”

FRAD = “2,0,0,0,0”

IPOLAR = 0

ISOIL = 1

ISHALLO  = “0,0,0,0,0,0,0,0,0,0”

MPP_LAYER=RSL

PROCMIN_NS = 1

PROCMIN_EW = 1

ASSUME_HOMOGENEOUS_ENVIRONMENT = 1

RUNTIME_SYSTEM = “linux”

MPP_TARGET=$(RUNTIME_SYSTEM)

LINUX_MPIHOME = /usr/local/lam

MFC = $(LINUX_MPIHOME)/bin/mpif77

MCC = $(LINUX_MPIHOME)/bin/mpicc

MLD = $(LINUX_MPIHOME)/bin/mpif77

FCFLAGS = -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio

LDOPTIONS = -fast -Mcray=pointer -tp p7 -pc 32 -Mnoframe -byteswapio

LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpi

MAKE = make -i -r

AWK = awk

SED = sed C

AT = cat

CUT = cut

EXPAND = expand

M4 = m4

CPP = /lib/cpp -C -P -traditional

CPPFLAGS = -DMPI -Dlinux -DSYSTEM_CALL_OK

CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include

ARCH_OBJS =  milliclock.o

IWORDSIZE = 4

RWORDSIZE = 4

LWORDSIZE = 4

.F.i:

        $(RM) $@

        $(CPP) $(CPPFLAGS) $*.F > $@

        mv $*.i $(DEVTOP)/pick/$*.f

        cp $*.F $(DEVTOP)/pick

.c.o:

        $(RM) $@ && \\

        $(CC) -c $(CFLAGS) $*.c

.F.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.F

.f.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.f

—————————————————————————–

– Itenium System ( IA-64bit )

Itenium System 의 경우 Fortran Compiler 를 PGI 가 아닌 Intel Fortran Compiler

를 사용한다. 그러므로 configure.user 및 기타 Makefile 의 Compile Option 을 모두

Intel Compile Option 으로 변경을 해 주어야 한다.

configure.user 의 수정 내용으로 ..

FC = /opt/intel_fc_80/bin/ifort

FCFLAGS = -I$(LIBINCLUDE) -O3 -fpp -convert big_endian -DDEC_ALPHA  

CFLAGS = -I$(LIBINCLUDE) -O3 -fpp -convert big_endian -DDEC_ALPHA  

CPPFLAGS = -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA  

LDOPTIONS = -O3 -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA  

LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpi -llam

MPP/RSL/RSL/makefile.linux 의 수정 내용으로

CFLAGS = -I$(IDIR) -DMPI -DRSL_SYNCIO -Dlinux -DSWAPBYTES -O \\

        -I/usr/local/lam/include

FCFLAGS = -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA

FFLAGS = -O -convert big_endian -DDEC_ALPHA

등이 있다.

    /// Itenium System ‘s Configure.user Sample File ///

—————————————————————————–

SHELL = /bin/sh

.SUFFIXES: .F .i .o .f

RUNTIME_SYSTEM = “PC_PGF77”

LIBINCLUDE = $(DEVTOP)/include

FC = /opt/intel_fc_80/bin/ifort

FCFLAGS = -I$(LIBINCLUDE) -O3 -fpp -convert big_endian -DDEC_ALPHA  

CPP = /lib/cpp  

CFLAGS = -I$(LIBINCLUDE) -O3 -fpp -convert big_endian -DDEC_ALPHA  

CPPFLAGS = -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA  

LDOPTIONS = -O3 -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA  

LOCAL_LIBRARIES =  

MAKE = make -i -r

AR = ar ru

RM = rm -f RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o *.i core errs ,* *~ *.a \\

.emacs_* tags TAGS make.log MakeOut *.f !

GREP = grep -s

CC = cc

FDDAGD = 0

FDDAOBS = 0

MAXNES = 2

MIX = 49

MJX = 52

MKX = 23

IMPHYS = “4,4,1,1,1,1,1,1,1,1”

MPHYSTBL = 0

ICUPA  = “3,3,1,1,1,1,1,1,1,1”

IBLTYP  = “5,5,2,2,2,2,2,2,2,1”

FRAD = “2,0,0,0,0”

IPOLAR = 0

ISOIL = 1

ISHALLO  = “0,0,0,0,0,0,0,0,0,0”

MPP_LAYER=RSL

PROCMIN_NS = 1

PROCMIN_EW = 1

ASSUME_HOMOGENEOUS_ENVIRONMENT = 1

RUNTIME_SYSTEM = “linux”

MPP_TARGET=$(RUNTIME_SYSTEM)

LINUX_MPIHOME = /usr/local/lam

MFC = $(LINUX_MPIHOME)/bin/mpif77

MCC = $(LINUX_MPIHOME)/bin/mpicc

MLD = $(LINUX_MPIHOME)/bin/mpif77

FCFLAGS =  -O3 -I$(LIBINCLUDE) -fpp -convert big_endian -DDEC_ALPHA

LDOPTIONS = -O3

LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/lib -lmpi -llam

MAKE = make -i -r

AWK = awk

SED = sed

CAT = cat

CUT = cut

EXPAND = expand

M4 = m4

CPP = /lib/cpp -C -P -traditional

CPPFLAGS = -DMPI -Dlinux -DDEC_ALPHA -traditional

CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include

ARCH_OBJS =  milliclock.o

IWORDSIZE = 4

RWORDSIZE = 8

LWORDSIZE = 4

.F.i:

        $(RM) $@

        $(CPP) $(CPPFLAGS) $*.F > $@

        mv $*.i $(DEVTOP)/pick/$*.f

        cp $*.F $(DEVTOP)/pick

.c.o:

        $(RM) $@ && \\

        $(CC) -c $(CFLAGS) $*.c

.F.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.F

.f.o:

        $(RM) $@

        $(FC) -c $(FCFLAGS) $*.f

—————————————————————————

2. 성능테스트 결과

2.1 프로세스별 성능 결과 process_num/time

np=1 경우

—————————————————————————

opteron :

[clunix@otn1 Run]$ time mpirun -np 1 mm5.mpp

otn1 — rsl_nproc_all 1, rsl_myproc 0

real    3m30.214s

user    0m0.000s

sys     0m0.000s

itenium :

[clunix@rx2600 Run]$ time mpirun -np 1 mm5.mpp

rx2600 — rsl_nproc_all 1, rsl_myproc 0

real    4m0.434s

user    0m0.001s

sys     0m0.001s

xeon :

[clunix@www1 Run]$ time mpirun -np 1 mm5.mpp

www1 — rsl_nproc_all 1, rsl_myproc 0

real    7m6.661s

user    0m0.000s

sys     0m0.000s

—————————————————————————-

np=2 경우

—————————————————————————-

opteron :

[clunix@otn1 Run]$ time mpirun -np 2 mm5.mpp

otn1 — rsl_nproc_all 2, rsl_myproc 0

otn1 — rsl_nproc_all 2, rsl_myproc 1

real    2m0.184s

user    0m0.000s

sys     0m0.000s

itenium :

[clunix@rx2600 Run]$ time mpirun -np 2 mm5.mpp

rx2600 — rsl_nproc_all 2, rsl_myproc 0

rx2600 — rsl_nproc_all 2, rsl_myproc 1

real    2m31.815s

user    0m0.002s

sys     0m0.003s

xeon :

[clunix@www3 Run]$ time mpirun -np 2 mm5.mpp

www3 — rsl_nproc_all 2, rsl_myproc 0

www3 — rsl_nproc_all 2, rsl_myproc 1

real    4m16.842s

user    0m0.000s

sys     0m0.000s

————————————————————————–

np=4 경우

————————————————————————–

opteron :

[clunix@otn1 Run]$ time mpirun -np 4 mm5.mpp

otn1 — rsl_nproc_all 4, rsl_myproc 0

otn1 — rsl_nproc_all 4, rsl_myproc 1

otn2 — rsl_nproc_all 4, rsl_myproc 2

otn2 — rsl_nproc_all 4, rsl_myproc 3

real    1m51.920s

user    0m0.000s

sys     0m0.000s

xeon :

[clunix@www1 Run]$ time mpirun -np 4 mm5.mpp

www1 — rsl_nproc_all 4, rsl_myproc 0

www2 — rsl_nproc_all 4, rsl_myproc 1

www3 — rsl_nproc_all 4, rsl_myproc 2

www3 — rsl_nproc_all 4, rsl_myproc 3

real    3m31.522s

user    0m0.000s

sys     0m0.010s

———————————————————————–

np=6 경우

———————————————————————–

opteron :

[clunix@otn1 Run]$ time mpirun -np 6 mm5.mpp

otn1 — rsl_nproc_all 6, rsl_myproc 0

otn1 — rsl_nproc_all 6, rsl_myproc 1

otn2 — rsl_nproc_all 6, rsl_myproc 2

otn2 — rsl_nproc_all 6, rsl_myproc 3

otn3 — rsl_nproc_all 6, rsl_myproc 4

otn3 — rsl_nproc_all 6, rsl_myproc 5

real    1m39.816s

user    0m0.000s

sys     0m0.000s

xeon :

[clunix@www1 Run]$ time mpirun -np 6 mm5.mpp

www1 — rsl_nproc_all 6, rsl_myproc 4

www1 — rsl_nproc_all 6, rsl_myproc 0

www3 — rsl_nproc_all 6, rsl_myproc 2

www3 — rsl_nproc_all 6, rsl_myproc 3

www2 — rsl_nproc_all 6, rsl_myproc 1

www2 — rsl_nproc_all 6, rsl_myproc 5

real    3m28.397s

user    0m0.000s

sys     0m0.010s

———————————————————————

2.2 프로세스별 시스템 자원(CPU, NET) 사용 측정

np=2

———————————————————————

분석 : process 갯수를 2개를 사용. 즉 Dual process system 1 node 로 계산을

할 경우 가장 높은 CPU 사용함을 볼수 있음. (평균 95% 정도)

1 node 일 경우 disk 작업을 local file system 에 작업 함으로 네트워크 부하

는 거의 없는 걸 확인 할수 있음.

———————————————————————

opteron :

——————————————————————–

– cpu

94.0 2.0

96.2 2.1

94.6 2.2

96.2 2.3

89.4 2.2

90.8 2.3

96.8 2.2

98.6 2.3

99.7 2.2

91.6 2.3

97.6 2.2

99.2 2.3

96.8 2.2

98.1 2.3

98.8 2.2

90.3 2.3

97.4 2.2

– net

14.18 Kb/s 1.40 Kb/s

7.32 Kb/s 3.40 Kb/s

88.40 Kb/s 11.51 Kb/s

4.47 Kb/s 1.13 Kb/s

87.20 Kb/s 12.26 Kb/s

3.33 Kb/s 1.88 Kb/s

80.02 Kb/s 13.13 Kb/s

4.27 Kb/s 1.88 Kb/s

82.96 Kb/s 15.74 Kb/s

14.41 Kb/s 1.13 Kb/s

——————————————————————–

itenium :

——————————————————————–

– cpu

99.9 2.3

99.9 2.3

91.2 4.9

90.7 5.1

92.6 5.3

89.2 5.5

94.4 5.3

89.0 5.5

93.8 5.3

87.4 5.5

93.4 5.3

86.7 5.5

93.4 5.4

86.2 5.5

93.0 5.3

85.4 5.5

92.4 5.3

– net

2.53 Kb/s 0 Bits/s

73.01 Kb/s 9.55 Kb/s

11.77 Kb/s 0 Bits/s

3.48 Kb/s 0 Bits/s

74.42 Kb/s 9.78 Kb/s

11.41 Kb/s 0 Bits/s

75.98 Kb/s 9.78 Kb/s

12.00 Kb/s 0 Bits/s

4.06 Kb/s 0 Bits/s

83.52 Kb/s 9.78 Kb/s

2.77 Kb/s 0 Bits/s

75.37 Kb/s 9.78 Kb/s

——————————————————————-

xeon :

——————————————————————-

– cpu

90.8 4.0

94.4 4.2

92.4 4.0

94.2 4.1

93.0 4.0

94.0 4.1

92.4 4.0

93.9 4.1

91.1 4.0

92.5 4.1

92.0 4.1

93.5 4.1

92.4 4.0

93.0 4.0

93.3 4.2

92.5 4.0

93.3 4.1

– net

10.64 Kb/s 2.42 Kb/s

8.54 Kb/s 9.81 Kb/s

7.85 Kb/s 8.06 Kb/s

12.92 Kb/s 428 Bits/s

8.02 Kb/s 9.29 Kb/s

7.25 Kb/s 7.50 Kb/s

12.73 Kb/s 3.04 Kb/s

7.84 Kb/s 7.58 Kb/s

8.94 Kb/s 8.33 Kb/s

8.47 Kb/s 1.42 Kb/s

7.63 Kb/s 7.28 Kb/s

9.65 Kb/s 9.06 Kb/s

10.64 Kb/s 2.42 Kb/s

7.13 Kb/s 8.33 Kb/s

8.15 Kb/s 8.40 Kb/s

11.05 Kb/s 428 Bits/s

6.97 Kb/s 6.62 Kb/s

6.75 Kb/s 7.06 Kb/s

——————————————————————

np=6

——————————————————————

분석 : 다중 프로세스를 사용할 경우 CPU 사용량이 현저히 줄어드는 것을 볼수 있음.

특히 옵테론의 경우 50% 정도의 사용량을 보이고 있는데, 이는 실제 테스트 를 하는

INPUT_DOMAIN 이 small size 임으로 실제 다른 병목등을 고려할때 Process  2개로

작업하기에 적당한 작업 규모인거 같음.

Disk 작업을 network file system 을 이용하여 작업을 함으로 각 서버의 Network

bandwidth 가 평균 27M 정도 나오는 것을 볼수 있다.

——————————————————————-

opteron :

——————————————————————-

– cpu

67.7 2.0

68.5 2.0

67.2 1.9

63.6 2.0

66.3 2.0

67.3 1.9

63.3 2.0

62.1 2.0

64.0 1.9

63.0 2.0

62.6 2.0

67.1 2.0

63.3 2.0

62.1 2.0

64.0 1.9

63.0 2.0

62.6 2.0

– net

37.97 Mb/s 28.13 Mb/s

33.77 Mb/s 35.50 Mb/s

22.18 Mb/s 27.66 Mb/s

25.71 Mb/s 19.61 Mb/s

31.45 Mb/s 31.88 Mb/s

22.36 Mb/s 28.03 Mb/s

38.73 Mb/s 29.13 Mb/s

34.91 Mb/s 33.52 Mb/s

22.86 Mb/s 30.29 Mb/s

26.57 Mb/s 19.65 Mb/s

29.56 Mb/s 29.29 Mb/s

23.02 Mb/s 28.71 Mb/s

——————————————————————-

xeon :  

——————————————————————-

– cpu

80.8 1.8

87.0 3.7

90.8 3.8

89.0 3.8

92.8 3.7

75.5 1.9

71.9 1.8

85.7 3.7

88.2 3.8

90.4 3.8

92.7 3.7

73.8 1.9

69.6 1.8

86.1 3.7

76.0 3.7

77.3 3.8

80.9 3.8

82.3 3.7

– net

20.61 Mb/s 19.98 Mb/s

24.49 Mb/s 24.91 Mb/s

24.14 Mb/s 24.43 Mb/s

19.69 Mb/s 18.99 Mb/s

23.99 Mb/s 24.28 Mb/s

21.26 Mb/s 21.69 Mb/s

19.77 Mb/s 18.99 Mb/s

23.86 Mb/s 24.21 Mb/s

24.99 Mb/s 24.95 Mb/s

19.78 Mb/s 19.00 Mb/s

23.39 Mb/s 23.62 Mb/s

22.21 Mb/s 22.41 Mb/s

———————————————————————

주요 사이트

http://www.mmm.ucar.edu/mm5/mpp/helpdesk/index.html

http://mailman.ucar.edu/pipermail/mm5-users/

http://www.mmm.ucar.edu/mm5/mm5v3/clues/mm5-intel2.html

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.