기상연구소 응용 프로그램 (MM5/MPP) 시스템 별 성능 측정 결과 보고 2004. 8. 4 ㈜ 클루닉스 기술부
목 차 테스트 요구 사항 테스트 시스템 환경 테스트 적용 환경 테스트 결과 테스트 진행자 결론 - 첨부 : 테스트 진행 과정 테스트 결과 측정 과정 테스트 진행 시 시스템 모니터링 자료
테스트 요구 사항 MM5-MPP 성능 테스트 Process Architecture별로 테스트 진행 Linux 환경에서의 MM5/MPP 프로그램을 설치 하고 building 하여 생성되는 mm5.mpp 를 실행 했을 경우 수행 시간 측정 64bit 시스템 환경에서 MM5/MPP 의 정상 수행 여부 테스트 진행 중 시스템 Resource (CPU/Disk/Mem/Net) 의 사용 현황 파악 및 병목 Resource 측정 Process Architecture별로 테스트 진행 Opteron AMD64 / Itenium2 / Xeon 시스템 별 테스트 성능 측정 각 시스템 환경에 최적한 구성 요소로 테스트 진행 함 ( OS, Compiler )
테스트 시스템 환경 Opteron AMD 64 시스템 Itenium2 IA 64 시스템 P-IV (Xeon) IA 32 시스템 Opteron AMD 64 Dual Processor ECC registered Memory 2G Ultra 320 SCSI 36G PGI –AMD64 Compiler Itenium2 IA 64 시스템 Itenium2 IA 64 Dual Processor ECC registered Memory 1G Intel Fortran Compiler ( Itenium2 전용 ) P-IV (Xeon) IA 32 시스템 Xeon 2.4G(Hyper Threading) IA 32 Dual Processor PGI –X86 Compiler
테스트 적용 환경 MPI 프로그램 환경 네트워크 환경 테스트 DATA MPI 병렬 프로그램 환경은 LAM-MPI 와 MPICH 두가지 방식으로 테스트를 하였고, 동작 작업 진행 시 LAM-MPI 방식이 10% 정도의 성능향상이 있었음. 추후 테스트 진행은 LAM-MPI 방식으로 진행 네트워크 환경 Gigabit 환경과 100M 환경에서 테스트를 진행함. 테스트 DATA MM5 테스트 DATA 는 기본 input2mm5.tar.gz으로 진행함.
테스트 결과 수행 프로세스 개수 별 수행 속도 ( 단위 : 분/ 초 ) AMD64 IA64 IA32 1개 2개 4개 6개 수행 프로세스 개수 별 수행 속도 ( 단위 : 분/ 초 ) proc개수 시스템 1개 2개 4개 6개 AMD64 3분 30초 2분 0.18초 1분 51초 1분 39초 IA64 4분 0.4초 2분 21.8초 IA32 7분 6.66초 4분 16초 3분 31초 3분 28초
테스트 진행자 결론 -1 Process 개수를 1개로 하여 mm5.mpp 를 실행했을 경우 opteron 이 가장 우수한 성능을 가지고 있음을 확인함. Process 개수를 늘려 나갈 경우에도 역시 opteron 이 가장 우수한 성능을 나타냄( 앞장의 측정 결과 참조 ) 프로세스 통신 방식을 Ethernet 방식으로 했을 경우 실제 할당되는 네트워크 대역폭이 20M/b ~30M/b 임. 그러므로 100M Switch 환경이나 1000M Switch 환경의 차이는 크게 없어 보임. Myrinet 의 경우에는 Ethernet 방식과 다른 통신 방식임으로 노드 수가 늘어 날수록 성능 향상 요인이 있음. 실제 프로세스의 수가 늘어남에 따라 CPU 사용률이 저하 되는것을 확인할 수 있음. 두 가지 요인으로 추측되는데, Cpu 이외의 다른 resource 의 병목으로 인한 경우와 실제 테스트에 사용된 테스트 Domain 의 size 가 작은 것임으로 작업량이 작은 경우일수 있는 가능성이 있다.
테스트 진행자 결론 -2 Xeon 의 Hyper Threading 기능을 사용 했을 경우 Process 의 수가 작을 경우에만 10%~20% 정도의 성능향상이 있음 process 수가 4개 이상 일 경우에는 오히려 성능이 더 떨어짐. Xeon 의 4개 프로세스를 사용하여 수행 했을 때가 8개 Hyper Threading 기능을 사용 했을 때 보다 더 성능이 좋은 것을 확인함. 추측되는 원인으로 Memory sharing 에 의한 메모리 병목 유발과 Process 간 system bus 의 병목 유발을 들 수 있음. Hyper Threading 기능을 사용할 경우 CPU 사용량이 현저하게 떨어짐. Multi node 구성 시에는 Xeon Hyper Threading 기능을 사용하지 않는 것을 권장
테스트 진행 과정 -1 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 Configure.user file 수정 , 시스템 환경과 Compile 환경에 맞게 Makefile Option 수정 # cd MPP/RSL/RSL # make linux # cd ../../.. # make mpp
테스트 진행 과정 -2 # 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
테스트 진행 과정 -3 Mm5.mpp 프로그램 수행 이제 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 가 생성된다.
테스트 결과 측정 과정 – opteron 1 Process number : 1 [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 Process number : 2 [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
테스트 결과 측정 과정 – opteron 2 Process number : 4 [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 Process number : 6 [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
테스트 결과 측정 과정 – Itenium2 Process number : 1 [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 Process number : 2 [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 1 Process number : 1 [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 Process number : 2 [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
테스트 결과 측정 과정 – xeon 2 Process number : 4 [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 Process number : 6 [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
테스트 진행 시 시스템 모니터링 자료 프로세스 모니터링
테스트 진행 시 시스템 모니터링 자료 네트워크 모니터링 ( NFS 사용 시 20Mb~30Mb 사용 ) Opteron System ( 3node ) Itenium System ( 1node ) Xeon System ( 3node )
테스트 진행 시 시스템 모니터링 자료 Disk I/0 모니터링 ( 노드 당 1MB 정도 사용 ) Opteron System ( 3node ) Itenium System ( 1node ) Xeon System ( 3node )
테스트 진행 시 시스템 모니터링 자료 Memory 모니터링 ( 시스템 별 80% 정도 사용 ) Opteron System ( 3node ) Itenium System ( 1node ) Xeon System ( 3node )
테스트 진행 시 시스템 모니터링 자료 리소스 모니터링
Supercomputing for Everyone Clunix, Inc. ㈜클루닉스 152-766 서울특별시 구로구 구로3동 197-22 에이스테크노타워 5차 1007호 Tel : + 82 2 3486 5896 Fax : + 82 2 3486 3959 www.clunix.com