배치별 명령 병렬 처리

배치별 명령 병렬 처리

따라서 처리할 CPU 코어는 10개이고 데이터는 20개입니다. 데이터를 병렬로 처리하고 싶은데 한 번에 20개만 처리하면 문제가 생길까봐 걱정됩니다. 그래서 10개의 데이터를 2번 처리하고 싶습니다. 이를 수행하는 명령이 있습니까?

정보 추가:

데이터는 파일 형식입니다. 파일당 최대 10GB까지 꽤 큰 용량입니다. 제 경험상 10개 이상의 프로세스를 시작하면 PC가 매우 느려지거나 심지어 랙이 발생하기도 합니다. 그래서 프로세스를 코어 수와 동일한 10개로 제한했습니다. 내 RAM의 경우 파일을 처리하는 소프트웨어가 모든 것을 한 번에 로드하지 않기 때문에 RAM 사용량이 매우 낮다고 생각합니다. 그렇기 때문에 데이터 10개마다 병렬화하면 됩니다. 이제 병렬로 실행되는 10개의 셸 스크립트를 생성했습니다. 각 셸 스크립트에는 순차 명령이 포함되어 있습니다.

답변1

GNU 병렬 처리 사용:

parallel my_process {} ::: files*

이는 my_process fileCPU 스레드당 하나씩 실행됩니다.

다음 작업을 시작하기 전에 사용 가능한 RAM이 10G인지 확인하도록 GNU Parallel에 지시할 수 있습니다.

parallel --memfree 10G my_process {} ::: files*

사용 가능한 메모리가 5G 미만으로 떨어지면 GNU Parallel은 최신 작업을 종료하고 10G의 메모리를 다시 사용할 수 있게 되면 다시 시작합니다.

답변2

GNU 병렬이것은 가능합니다. 데비안에서 실행한 apt-get install parallel다음 매뉴얼을 읽어보세요.

Gnu 병렬 처리는 비슷하게 작동 xargs하지만 더 많은 병렬 프로세스를 시작할지 여부를 결정하는 데 더 효과적입니다.

( make그것도 가능합니다.)

관련 정보