리눅스 클러스터 HPC 구축에 대해서 질문
실험을 하는데 동시에 여러개를 돌려야하는 실험이 있어서 문의 드립니다.
HPC, MPI, diskless cluster등 여러가지 자료가 있어서 해깔리기도 하고 해서 조언을 구합니다.
정확한 용어를 모르므로 클러스터로 통일하겠습니다.
저에게 우분투가 깔린 6코어 12쓰레드 2대, 4코어 8쓰레드 1대, 4코어 2대, 2코어 1대 PC가 있습니다.
현재 작업을 일일히 콘솔로들어가서 할당해주고 있는데요 예를 들면 a.exe를 100번 실행시켜야한다고하면 100/(12*2+8+4*2+2) 해서
각각 배치파일을 만들어서 돌립니다. 실행파일은 같지만 argument 는 전부 다릅니다.
제가 얻고자 하는 결과는 다음과 같습니다.
1. 제가 100개의 작업을 시켜 놓으면 알아서 비는 CPU에 작업 넣어줬으면 좋겠습니다.
2. NS2, NS3(이건 MPI가 있더군요),그리고 for루프가 중첩이 있는 프로그램의 성능향상이 코드 변경없이 이루어졌으면 좋겠습니다.
3. 메모리가 각각 다른데요 12G, 8G, 4G 입니다. 이게 통합되서 36기가로 관리되는건지 아니면 각각 작업만 따로 할당되는건지도 궁금합니다. 리소스 관리를 어떻게 하는걸까요
4. 그리고 다른 사용자가 로러에서 클러스터를 안이용하고 작업을 실행시켰을경우 해당 프로그램도 고려해서 작업할당을 하는지 궁금합니다.
5. 추가 제거가 용이 했으면 좋겠습니다. MPICH이것도 exports와 mount관리만 해주면 쉽게 되는건가요?
문서는
https://help.ubuntu.com/community/Servers
이곳의 클러스터설치관련 문서를 보고 NFS로 폴더를 공유해서 클러스터 프로그램들이 작업을 할당해주는거같던데요 왠만하면 재설치 할 필요가 없는 첫번째 방법으로 했으면 좋겠습니다.
문서에는 작업할당을 시키는 방법은 안나오고 구축후에 테스트만 보여주고 있어서요
시간만 있으면 삽질을 하고 다 알아내면 좋겠지만 시간이 없어서 염치 불구하고 미리 경험하신 분들의 조언을 구합니다.
제가 물어보는내용이 너무 뻔한내용이라서 특성 문서나 책 구글등에 널려있다면 해당 키워드와 최신 링크를 알려주셨으면 좋겠습니다.
감사합니다.
이책을 참고하시는 게 도움이 될것
이책을 참고하시는 게 도움이 될것 같습니다.
http://www.yes24.com/24/goods/1972803?scode=032&OzSrank=1
저도 이제 막 시작하는 단계인데, 사용하시는 프로그램 또는 라이브러리, 소스, 알고리즘에 따라서 방법이 다양할 것 같습니다.
제가 사무실에서 지원하는 프로그램은 설치 이후에 NFS mount정도만 추가해주면 cluster node가 추가되는 형태입니다.
몇년전 기억이지만... grid(혹은 모든 노드)의
몇년전 기억이지만...
grid(혹은 모든 노드)의 비어있는 노드에 job을 할당해서 던져주는 자동화된 제대로 된 스크립트/패키지는 없던 것으로 기억하고,
좀더 단순한 클러스터용 스크립트/패키지는 존재했던 것으로 기억합니다.
dsh가 그 예이고...
mpi 경우에도 두가지가 있는데, mpich는 하나의 mpich 스크립트가 p4 백앤드를 통해서 tcp/ip를 통해 job을 던져주는 비교적 저차원의 간단한 스크립트로 구성된 것이고,
lam-mpi의 경우에는 이보다 약간 복잡하게 lam client가 클러스터노드에서 모두 실행이 되고있고, 서버단에 lam server가 실행되어서 client의 상태를 주고받으면서
job이 실행되는 형태입니다.
mpich는 소규모에서 간단히 구성해서 사용하기 편리한 것 같고, lam-mpi + job queue 서비스를 통해서 좀 더 대규모 클러스터 서비스를 관리하는 것 같더군요.
---------
mpi를 쓰는게 아니라 그냥 일반 실행파일을 여러개를 돌리는 것이라면 그냥 스크립트를 만들어서 node별로 출력파일 이름만 다르게 하되,
나머지 클라이언트의 모든 구성은 동일하게 (/home만 nfs로 마운트, 그 이외의 클라이언트 OS는 개별/혹은 램상주+nfs 조합)하는게 간단합니다.
요새는 어떤지 잘 모르겠습니다.
댓글 달기