클러스터링 하다가 열받아서 글올립니다 ㅠㅠ

xiangyue의 이미지

이거 뭐 암만 해도 속도가 안나오네요 ㅜㅜ

머신 사양은 다음과 같습니다.

cput : core 2 duo xeon 3000/3200
mainboard : intel S3000 Server chipset / 1-socket support , LGA775, FSB 800/1066 MHz
DDR2-533/667 SDRAM(4 DIMMs), Un-bufferd ECC Support
Gigabit Ethernet
RAM : 2GB DDR2 SDRAM (PC2-5300/DDR667)
HDD : 320 GB SATA 3.0 Gb/s (7200 rpm/16MB)

사용하는 어플은 StarCD구요, CFD 상용 프로그램입니다.

cpu의 시간은 정말 잘나옵니다.
듀얼로 4대 돌리면 cpu 하나로 돌릴 때보다 6.2배 빨라집니다. 이정도면 굉장히 훌륭하지요??

그런데 문제는 cpu time이 아니라 elaped time입니다. 이거 lam, mpich 옵션 막 바꾸면서 돌려봐야
고작 2.2배 빨라지는군요-_-;;

하드 속도는 다음과 같습니다.
hdparm -t /dev/sda1

/dev/sda1:
Timing buffered disk reads: 260 MB in 3.01 seconds = 86.30 MB/sec

네트웍 속도는 다음과 같구요. 큰 파일 옮겼을 때 나오는 속도입니다.
670메가 14초 걸리는군요. 대략 50MB/s 정도 되는 것 같습니다.

이정도면 훌륭한 스펙 아닌가요? ㅠ.ㅠ

200 iteration 굴렸을 때 결과는 다음과 같습니다.
single processor : cpu time 9330.6, elapsed time 9330.7
4 machine * 2 processor : cpu time 1507.2, elapsed time 4325.5

아....이거 어떻게 해야 시간을 좀 줄일 수 있을까요 ㅠ.ㅠ

@메모리가 8기가나 되는데 이거 좀 활용할 방법이 없을까요?

neosphere의 이미지

정확히 시스템을 어떻게 구성하셨는지 잘 모르겠는데요. Diskless 인지, 각자
HDD에 OS 를 설치하고 사용하는지, Diskless 라면, 네트웍이 1개인지,
2개로 분리하셨는지... 스위치는 어떤 제품을 사용하시는지...

제 경험으로는 네트웍 부분이 속도에 많은 영향을 미칩니다.
단일 파일 복사야 저정도가 나온다고 하더라도 여러게의 노드가 동시에
마스터 노드에 접근해서 통신을 하기 시작하면, 스위치의 성능이 정말
중요한 요소가 되더군요.

특히 Diskless 라면, 마스터 노드 I/O 가 더 큰 역할을 하겠죠.

----
Gentoo. Bioinformatics, Protein Interaction.

Gentoo. Bioinformatics, Protein Interaction.

xiangyue의 이미지

스위치는 한 30만원정도되는거 쓰고있어요.
넷기어 24p JGS524 Switch
입니다. 스위치의 성능을 테스트해볼수는 없나요 ㅠ.ㅠ

wkpark의 이미지

netpipe로 일단 테스트해보시죠.

http://www.scl.ameslab.gov/netpipe/

http://kldp.org/node/36985

온갖 참된 삶은 만남이다 --Martin Buber

xiangyue의 이미지

0: 1 bytes 488 times --> 0.07 Mbps in 102.39 usec
123: 8388611 bytes 3 times --> 896.38 Mbps in 71397.98 usec

이정도 나왔습니다. 0.07초 정도 되는군요
Max는 이정도면 괜찮은 결과라고 하는 것 같은데
Min은 잘 모르겠네요 @_@

wkpark의 이미지

Quote:

0: 1 bytes 488 times --> 0.07 Mbps in 102.39 usec
...
123: 8388611 bytes 3 times --> 896.38 Mbps in 71397.98 usec

노드 <-> 노드 측정인가요? 마스터 <-> 노드 측정인가요?

지금 마스터에서 작업중이라 속도가 많이 안나오는 것 같고.. 놀고있는 노드간 속도를 측정해보니..

Quote:

0: 1 bytes 2090 times --> 0.16 Mbps in 48.65 usec
...
44: 1024 bytes 619 times --> 97.00 Mbps in 80.54 usec
...
64: 12285 bytes 310 times --> 465.98 Mbps in 201.14 usec
...
123: 8388611 bytes 3 times --> 1044.47 Mbps in 61275.16 usec

그래프를 그려보니 좀 값이 튀는군요...

온갖 참된 삶은 만남이다 --Martin Buber

xiangyue의 이미지

노드 <-> 노드는 다음과 같습니다.

0: 1 bytes 488 times --> 0.08 Mbps in 100.09 usec
44: 1024 bytes 221 times --> 34.70 Mbps in 225.17 usec
64: 12285 bytes 221 times --> 413.85 Mbps in 226.47 usec
123: 8388611 bytes 3 times --> 896.06 Mbps in 71423.85 usec

이거 님과 비교해보니 속도가 엄청 느린 것 같네요 !!!! 그쵸??

스위치 어떤 제품 쓰세요?

wkpark의 이미지

예전에 테스트해볼때는 ~890Mbps 정도 나왔던 것으로 기억합니다... fedora core8로 업을 한 후에 테스트 해보니 속도가 향상된 것인지...
(시간 되면 더 테스트 해봐야겠네요... 지금 계산 돌리고 있는게 있어서 못하겠고,.)

BayStack 제품을 샀습니다.. 듣기론 엄청 비싸다고 하더군요...

아무튼.. ~890Mbps 정도면 터무니 없게 나쁘게 나오는 것 같지는 않습니다..

온갖 참된 삶은 만남이다 --Martin Buber

linlin의 이미지

네트워크 트래픽 기다린다고 노드들이 놀고 있는 것 아닐까요? configuration을 싱글 머신, 네트워크로 연결된 듀얼 머신으로 해서 돌려보면 감이 올 것 같은데요? 일단 전송되면 전송 속도는 빠르지만 무슨 이유에서인지 전송 시작했을때 한참 있다가 패킷이 출발한다든가 혹은 받는 쪽에서 특정 데이터가 오기 전까지는 시피유가 계속 놀아야 한다든가 그렇겠죠. 그런데 후자의 경우는 네트워크 대신 빠른 메모리 채널을 이용해도 똑같이 발생하는 문제일테니 전자 문제일 가능성이 높다고 가설을 세우는게 낫지 않을까 싶네요.

configuration은

1. 싱글 머신. 시피유 코어 두개 활성화
2. 노드 둘. 둘 사이는 네트워크로 연결. 노드마다 코어를 하나씩 비활성화시켜 싱글 코어로 돌림.

요즘은 가상 머신이 잘 되어 있으니 가상머신을 두개 만들어서 한번은 컴퓨터 한대에 두 개 집어넣고 돌리고 다른 한번은 컴퓨터 두 대에 따로 하나씩 집어넣고 돌리면 되겠네요. 코어 활성화 비활성화 신경 쓸 것도 없겠군요. 아 좋은 세상.