원격으로 명령을 실행하지만 여전히 호스트를 제어합니다.

원격으로 명령을 실행하지만 여전히 호스트를 제어합니다.

여러 대의 Linux 시스템이 있고 클러스터된 컴퓨터 네트워크를 설정하고 싶습니다. 컨트롤러에는 1개의 모니터가 있습니다. 컨트롤러는 작업을 수행하고 컴퓨터에 부하를 분산시키는 스크립트를 실행합니다.

컨트롤러에 4대의 컴퓨터가 모두 연결되어 있다고 가정해 보겠습니다. GCC를 사용하여 프로그램을 컴파일하고 싶지만 작업을 3가지 방법으로 분할하고 싶습니다. 어떻게 해야 하나요?

어떤 도움이라도 대단히 감사하겠습니다.

답변1

distcc여러 컴퓨터에서 코드를 컴파일하는 데 사용할 수 있습니다.

데비안 distcc패키지 정보에서:

패키지: distcc

Description-en: 간단한 분산 컴파일러 클라이언트 및 서버

distcc네트워크의 여러 컴퓨터에 C컴파일이나 코드를 배포하는 프로그램 입니다. 항상 네이티브 컴파일과 동일한 결과를 생성해야 하며 설치 및 사용이 쉽고 일반적으로 네이티브 컴파일보다 훨씬 빠릅니다. 모든 시스템이 파일 시스템을 공유하거나, 시계를 동기화하거나, 동일한 라이브러리 또는 헤더 파일을 설치할 필요는 없습니다.C++distccdistcc

홈페이지:http://distcc.org/

다른 작업의 경우 "작업을 수행하고 컴퓨터에 로드를 분산"하는 스크립트보다 더 복잡합니다. 스케줄러를 사용해야 합니다(예:진흙또는토크- 둘 다 Debian 및 대부분의 다른 배포판용으로 패키지되어 있습니다. 내 선호는 slurm)입니다.

즉, Linux 시스템 컬렉션을 클러스터로 전환합니다. 특별히 어렵지는 않지만 꽤 많은 작업이고 많은 읽기와 이해가 필요합니다(읽은 내용의 대부분은 대학이나 연구실의 대규모 HPC 클러스터와 관련이 있지만 소규모 가정 클러스터에는 해당되지 않습니다).

클러스터의 여러 시스템에 작업 부하를 동시에 분산시키는 프로그램을 실행하려면 다음을 수행해야 합니다.

  1. 병렬 실행에 적합한 작업 실행(예: 작업을 독립적으로 처리할 수 있는 작은 덩어리로 나누고 결과를 나중에 병합할 수 있음)

  2. 필요한 리소스(예: 파일 읽기 및 쓰기를 위한 NFS 서버)에 대한 공유 액세스 권한을 갖습니다.

그리고:

  1. 클러스터의 다른 노드에서 실행되는 다른 인스턴스와 통신하려면 특별히 작성해야 합니다(예: 다음을 사용).MPI다음과 같은 도서관MPI 열기)

또는

  1. 통신과 제어를 위한 주요 제어 프로세스가 있습니다. 그것이 바로 그 역할 distcc입니다.

답변2

당신은베오울프 클러스터. 한 호스트를 마스터로 설정하고 나머지 호스트를 노드로 설정합니다. NASA를 포함한 다른 사람들도 과거에 그렇게 했습니다.베오울프 클러스터에 대한 Wikipedia 항목설명하다.

클러스터된 컴퓨팅 팜을 직접 구축하면 얻는 컴퓨팅 리소스보다 전기 비용이 더 많이 들 수 있습니다.

직접 시도해본 적은 없지만 항상 하고 싶었습니다.

관련 정보