[해결] MPI 관련 고민
글쓴이: jpyoun / 작성시간: 화, 2010/11/02 - 11:23오전
분산처리 관련 프로젝트건으로 MPI를 사용하여 개발 중입니다.
초기에는 자체적으로 로직을 만들어서 구현하려고 했는데
고객쪽에서 굳이 MPI를 사용하기를 원하더군요.
그런데 MPI의 주 사용처가 과학/수학 계산용(아주 시간이 많이 걸리는)이던데
다른 용도.. 순수하게 작업을 분산하기 위한 용도로 사용하는것이 관련
합리적인가에 의문이 듭니다..
1. 파일 단위로 시간이 많이 걸리는 작업이 있습니다.(이 작업은 쪼갤수 없습니다.)
2. 파일이 아주 많을때 한서버에서 처리 할 경우 순차적인 처리 밖에 안되기 때문에 시간이 아주 많이 걸릴것입니다.
3. 파일단위의 처리를 여러서버에서 분산하여 처리하는 시스템을 구성하고 있습니다.
4. 파일들은 충분히 빠른 네트웍에 SAN storage 에 물려 있어서 각 처리 서버에서 동일한 환경으로 물려 있습니다..
5. 작업 결과는 성공유무만 모으면 됩니다. ( 성공/실패 )
어떨까요? 이런 작업에 MPI 의 적용이 적합 할까요????
이번 MPI 라는건 처음 접하고 , C/C++도 근 5년만에 다시 잡으니 머리가 많이 복잡하네요.
p.s. 이곳은 항상 눈팅만 하다 오늘 처음 글을 올려 봅니다..
이미 진행은 반정도 되었기에 뒤집기는 힘들지만 그래도 뭔가 확신을
가지고 진행을 하고싶어서 여쭈어봅니다.. ^^;
Forums:
헐... MPI 라니...
구글의 map reduce 배워서 프로그래밍할 때 조차도 MPI 는 답이 없으므로 손대지 말라는 선배의 말이 있었는데... 대단하시군요
작업이 어떤 작업이냐에 따라 많이 달라지겠지만... (map reduce 는 검색 인덱싱 작업 특화...)
분산처리를 요구하는 경우 안정성을 요구하는 경우가 많아서 그럴 듯도 합니다. 혹시 failover 처리에 민감한 경우 아닌지요
-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr
헉..
답이 없을 정도인가요?
그정도로 문제가 많은 방식인가요?
아님 어려워서..?
failover 보다는 처리 시간을 얼마나 단축시키는냐에 치중을 하다보니.. ㅜㅜ
failover 하시니까 문든 생각 나는게 mpi로 돌린후 한대라도 맛이가면 다른 서버의 프로세스까지 영향을 받는것 같던데 좀 걱정 되네요..
완벽하게 문제가 안생기게 만들어야 하겠지만.. 현실적으로는 불가능하고..
좀더 구체적으로 어떤 문제가 있는지 알려주시면 감사하겠습니다...
비가 오면 비 맞고 눈이 오면 눈 맞고
우산은 있으면 좋고 없어도 그만......
저도 잘 모르지만...
어렵고, 어렵기 때문에 문제가 많은 방식이라고 들었습니다....
제가 아는 건 맵리듀스쪽이라...
구글의 맵리듀스가 병렬처리에서 각광받은건 그 퍼포먼스 때문이 아니라 안정성 때문이라고 들었고요
Granulity 라던가? 암튼 작업이 한 두개 서버에 몰리게 되는 방식이 병렬처리의 맹점이라고 하던데요...
맵리듀스에서는 그래뉼리티를 거의 포기한 배치 처리 방식을 썼고, 그 대신에 reliability 를 얻은 걸로 압니다.
문제는 서버 한대가 맛이 갔을 때, 마스터 서버에서 맛이 간 놈을 제외시키고 다른 서버에 해당 job을 할당해야 하는 건데요.
MPI 방식에서 완전 P2P 방식으로 마스터 서버가 없는 방식으로 하면 failover 시 다른 서버에 job 할당이 답이 없는걸로압니다.
job order table 을 제각각 모두 가지고 있으면 그거 싱크 맞춰야 하는데 그게 비잔틴 패러독스 일으키고,
마스터 서버를 둘 경우에는 MPI 방식 자체가 크게 의미가 없어진다고 하더군요...
제가 아는 건 이 정도입니다... 일단 MPI 만들어 보신 분의 답변이 올라왔으면 좋겠네요 ㅠ.ㅠ
-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr
음
저는 과학계산용으로 밖에 안했지만 별 문제는 못느꼈습니다. 사실 간단한 프로그래밍밖에 안해서 그런지 모르겠는데 글쓴님이 말씀하신 작업쪽으로는 잘 모르겠군요. 근데 MPI 많이 쓰이는 방식 아닌가요?
hadoop이 적당해
hadoop이 적당해 보이는데요.
==========================================
http://star4u.org
http://mirror.star4u.org
http://star4u.org
http://mirror.star4u.org
굳이 MPI를 활용할
굳이 MPI를 활용할 필요가 있을까.. 하는 생각이 들긴 합니다.
MPI는 각각 계산 노드(컴퓨터)의 중간 연산 값들이 다른 노드에게 영향이 있을 경우,
이들의 중간 값들을 공유(?) 하고 서로 계산할 때 sync를 맞추려고 사용되는 솔류션으로 알고 있습니다.
클러스터 환경을 전제로 만들어진 솔류션이기 때문에 failover에 대한 처리는 없는 것으로 알고있구요.
일반 인터넷(WAN)환경까지 확장하여 failover를 보정한 MPI라이브러리가 어디선가 개발되고 있다고 들었긴 했는데,
성능이 잘 안나온다는 얘기도 있고...
쨌든,
jpyoun님이 말씀하시는 작업 같은 경우는
단위 파일 연산할 때 서로 서로간 통신이 언급하지 않는 것을 보아서는
굳이 MPI를 사용할 필요성은 없어 보이긴 합니다만...
고객이 MPI를 고집한다면, 해주는게 좋지 않을까요? ㅎㅎㅎ
비유하자면,
텍스트 파일에 글자 몇개 추가하기 위해서 대형 오피스 프로그램을 설치해서 편집하는 경우와 비슷하다고 할까요?
간단한 편집 프로그램을 활용하면 되는데 말이죠...
--------------------------
`0-
-0`
--------------------------
`0-
-0`
특별히 해결할것도 없지만..
일단 답변주신 모든 분게 감사드립니다..
제가 생각해봐도 그리고 어울리지 않는 조합이라는 결론이 납니다. ^^;;
그래도 거의 다 만들었는데 어떻게던 밀고는 나가 보겠습니다..
그래도 혹시 몰라도 다른 방식으로도 한벌 더 만들어놓을 생각입니다.. ㅜㅜ
언어만 바뀌지 않는다면 대부분 재활용할 수 있는 형태로 코드를 작성하였습니다.
p.s. 현재 OpenMPI 를 사용하고 있는데 valgrind로 돌려보니 메모리 누수가 있는것 같은데...
다른 패키지도 그럴까요????
비가 오면 비 맞고 눈이 오면 눈 맞고
우산은 있으면 좋고 없어도 그만......
댓글 달기