GNU parallel
GNU 병렬은 사용자가 쉘 스크립트나 명령을 병렬로 실행할 수 있도록 하는 Linux 및 기타 Unix 계열 운영 체제용 명령줄 기반 유틸리티입니다.
GNU 병렬은 Perl로 Ole Tange가 작성한 자유 소프트웨어입니다.
GPLv3의 조건에 따라 사용할 수 있습니다.
CPU 개수 확인
Core 개수 확인
여러 줄 명령 실행하기
만약 어떤 파일에 완벽한 상태의 command가 여러 줄 들어있고, 이를 병렬 실행하려면 어떻게 하면 좋을까? 다시말해서 parallel 명령어에 인수를 전달하는 것이 아니라 명령행 자체를 제공하려면? 아주 간단하다.
여러 병렬 프로세스에서 stdout을 로깅하여 별도의 로그 파일에 저장
You could use GNU Parallel instead and its -k
option to keep the output in order, in a single log file:
You can add -j 8
after parallel to keep 8 cores busy, but it will keep all cores busy by default anyway.
See also
Favorite site
- GNU parallel - Wikipedia
- GNU Parallel Tutorial — GNU Parallel 20221022 documentation
- [추천] gnu_parallel (Genome Informatics Laboratory at KRIBB)
- GNU Parallel을 왜 그동안 몰랐을까? | GeekNews
- GNU Parallel은 E2E 테스트를 병렬로 실행하는데 유용
- 저자가 HTTP를 통한 라이브 서비스에 대해 오랜 시간 동안 실행되는 테스트 세트의 합격/불합격 비율에 대한 통계를 수집하려고 함
- 처음에는 저자가 bash에서 중첩 루프를 사용하여 테스트를 실행했지만, 각 테스트의 실행 시간이 길어서 이 방법은 느렸음
- 그 후 GNU Parallel을 사용하여 테스트를 병렬로 실행, 성능과 기능이 적은 코드로 크게 향상됨
- GNU Parallel에서는 명령이 병렬로 실행되도록 지정되며, 플레이스홀더 ({1}, {2} 등)는 입력 값으로 대체됨
- 명령에 대한 입력은
:::
연산자 다음에 지정되며, 가능한 모든 조합으로 명령에 제공됨 - GNU Parallel은 동시 작업 수를 제한하거나 각 작업의 시작을 지연시키는 등, 동시성을 제어하고 리소스 경합을 피하는 옵션을 제공함
- 이 도구는 작업 완료 결과를 포함한 CSV 파일을 출력하는 기능도 제공함: 지속 시간, 종료 코드, 캡처된 stdout/stderr 포함
- 저자는 GNU Parallel의 저자 Ole Tange의 책을 추천함: SSH를 사용하여 다른 호스트에 작업을 분배하거나, 작업 완료 시간을 모니터링하거나, 실패 가능성이 높은 작업을 재시도하거나, 병렬 실행이 중간에 중단된 경우 작업을 재개하거나, CPU 사용률에 기반한 작업 동시성을 제한하는 등의 도구 기능을 더 깊게 탐색하기 위해