2014-10-30 2 views
0

다양한 플랫폼/환경에 대해 C++ 교차 플랫폼 응용 프로그램을 빌드하는 병렬 빌드 팜을 작성 중입니다. 새로운 코드가 git repo에 푸시 될 때마다 모든 플랫폼에 대한 최신 코드를 빌드하고 테스트합니다.GNU 병렬 호스트 끈적한 작업

--sshlogin 옵션을 사용하여 여러 호스트간에 작업을 올바르게 분배하도록 병렬 설정을했습니다. 파일을 전송하고 결과 및 결과를 수집합니다. 모든 것이 잘 돌아가고 있으며 나는이 도구를 좋아합니다.

일부 플랫폼에서는 빌드 시간이 꽤 길기 때문에 가능한 한 증분으로 빌드하고 싶습니다.

내 유일한 문제는 스케줄러가 작업을 동일한 시스템에 보내고이 특정 호스트에서 이전 빌드의 아티팩트를 재사용하는 경우에만 빌드가 증분된다는 것입니다.

3 개의 호스트가 있다고 가정 해 봅시다. 빌드가 증가 할 때마다 3 번에 1 번 기회가 있습니다. 호스트가 잠시 동안이 플랫폼을 구축하지 않은 경우 오랜 시간이 걸릴 수 있습니다.

특정 입력 소스가 실행될 호스트를 제어 할 수 있으며 호스트가 사용중인 경우 다른 호스트로만 폴백 할 수 있습니까?

이상적으로는 입력 소스에 이름을 붙이고 여러 호스트에 이름을 붙인 태그 시스템을보고 싶습니다. 작업 풀과 해당 빌드 유형에 특화된 기계 풀을 만듭니다.

그러나 입력 소스가 sshlogins가 정의 된 순서와 동일한 순서로 배포되는 매우 간단한 구현은 내 상황에서 간단한 & 빠른 수정 일 수 있습니다.

내가 직접 구현할 소스 코드를 찾으려고했지만 사바나에서 코드를 탐색 할 때만 문서 생성을 볼 수 있습니다.

아이디어가 있으십니까?

감사합니다,

M

답변

0

나는 당신이 제안한대로 메일 링리스트에서이 아이디어에 대해 토론하려고 노력했지만 10 일 넘게 회동하지 못했습니다 ... 지금은 다른 것들로 바쁘다 고 생각합니다. 그래서 나는 필요한 변화를 만들고 내 솔루션을 작동시키기 위해 소스 코드를 포크했다. 일주일 전에 거기를 밀어 : 소스 코드가있다로

https://github.com/michaKFromParis/gnu-parallel-sticky

어떤지도없이 정확하게 쉬운 일이 아니었다 :

http://michakfromparis.github.io/gnu-parallel-sticky/

소스 코드는 여기 github에 볼 수 있습니다 많은 역사가 있었기 때문에 미래의 병합을 용이하게하기 위해 외과 수술을 유지하려고했습니다. 저는 1 주일 이상 프로덕션에서 사용 해왔고 제 구성에서도 완벽하게 작동합니다. 또한 기존 형식과 호환되며 옆에 여분의 기능이있는 일반적인 병렬 용도의 드롭 인 대체품이어야합니다. 완전히 건조하지 않을 수도 있기 때문에 다른 사용자로부터 피드백을 받기를 원합니다. 원본 소스 코드를 공유해 주셔서 감사합니다.

최고 감사합니다,

M

0

주어진 sshlogin에 지정된 인수의 우선 순위에 대한 지원은 현재 없습니다. https://lists.gnu.org/mailman/listinfo/parallel 작업이 sshlogin에 실패했을 때 코드에서 유일하게 우선 순위는

은 다음 GNU 평행 것을 시도하는 것을 선호 : 소스 코드는 https://savannah.gnu.org/git/?group=parallel

메일 링리스트에 가입하고 아이디어를 논의 자유롭게에있다 다른 sshlogin에서 작업. 어쩌면 그게 연장 될 수 있니?

주어진 sshlogin에 대해 작업이 -1 회 실패한 것으로 표시되면 GNU Parallel은 해당 sshlogin에서 작업을 실행해야합니다.