고해상도 수치 모의 병렬 프로그램 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