멀티코어 CLI 명령 질문

멀티코어 CLI 명령 질문

12개 코어 시스템의 파일에서 실행할 수 있는 150개의 CLI 명령 모음이 있습니다. 백그라운드에서 150개의 작업을 모두 실행하면 시스템이 중단되고 경험상 12~18개의 작업을 실행하는 것이 최적이라는 것을 알았습니다.

과거에는 단순히 분할 명령을 사용하여 150개의 명령을 12개 또는 13개 조각의 배치 파일로 쪼개고 각 명령을 실행했습니다. 그러나 일부 배치 파일은 다른 배치 파일보다 먼저 완료되었으며, 결국 다른 9개 또는 8개 코어가 유휴 상태인 동안 완료하는 데 다른 파일보다 훨씬 더 오랜 시간이 걸리는 3개 또는 4개의 배치 파일이 생성되었습니다.

내 목표는 150개의 CLI 명령이 모두 실행될 때까지 12개의 코어를 모두 실행하는 것입니다.

각 프로세서가 150개의 CLI 명령 목록에서 하나의 작업을 가져오고, 해당 명령을 실행 중인 것으로 표시하고, 프로세서가 서로 걸려 넘어져 가져오는 일 없이 150개가 모두 완료될 때까지 다른 11개의 프로세서가 자신의 항목을 가져오도록 할 수 있습니까? 동일한 CLI 명령? 파일 쓰기는 고유해야 합니다.

이를 수행하는 쉬운 방법이 있습니까?

답변1

GNU Parallel을 사용하면 다음과 같습니다:

cat 150commands.txt | parallel

코어당 하나의 작업을 실행합니다.

GNU Parallel은 일반적인 병렬 처리기이며 동일한 시스템 또는 SSH 액세스 권한이 있는 여러 시스템에서 작업을 병렬로 쉽게 실행할 수 있도록 해줍니다. 종종 for루프를 대체할 수 있습니다.

4개의 CPU에서 32개의 서로 다른 작업을 실행하려는 경우 병렬화하는 간단한 방법은 각 CPU에서 8개의 작업을 실행하는 것입니다.

간단한 스케줄링

대신 GNU Parallel은 프로세스가 완료되면 새 프로세스를 생성하여 CPU를 활성 상태로 유지하여 시간을 절약합니다.

GNU 병렬 스케줄링

설치

GNU Parallel이 배포용으로 패키지되어 있지 않은 경우 루트 액세스가 필요하지 않은 개인 설치를 수행할 수 있습니다. 다음과 같이 하면 10초 안에 완료할 수 있습니다.

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

다른 설치 옵션은 다음을 참조하세요.http://git.savannah.gnu.org/cgit/parallel.git/tree/README

더 알아보기

더 많은 예시 보기:http://www.gnu.org/software/parallel/man.html

소개 동영상 보기:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

튜토리얼을 살펴보세요:http://www.gnu.org/software/parallel/parallel_tutorial.html

지원을 받으려면 이메일 목록에 가입하세요.https://lists.gnu.org/mailman/listinfo/parallel

관련 정보