`xargs -P 0`은 정확히 무엇을 하고 있으며 그것을 사용하는 것이 좋은 생각입니까?

`xargs -P 0`은 정확히 무엇을 하고 있으며 그것을 사용하는 것이 좋은 생각입니까?

xargs는 명령을 제공하며 xargs -P 0문서에서는 명령을 병렬로 실행하기 위해 가능한 한 많은 프로세스를 생성한다고 언급합니다. 그러나 예를 들어 사용 가능한 CPU 수 또는 거의 수만 개의 스레드에서 중지됩니까? 두 번째 옵션이라면 CPU 스레드 수를 중심으로 생성하는 것보다 효율성이 떨어지나요? 프로세스 간에 끊임없이 변경하는 데는 무시할 수 없는 시간이 걸릴 것이라고 생각합니다. 그렇죠?

답변1

결국 제가 직접 테스트를 해봤습니다. 따라서 -P 0모든 프로세스를 동시에 실행하려고 시도하지만(한계는 OS당 허용되는 최대 스레드 수 정도이며 아마도 수천 개일 것으로 생각됩니다) CPU 집약적인 작업에 사용하는 것은 속도가 느려지므로 매우 나쁜 생각입니다. 다운되면 시스템이 매우 느려집니다.

약 200개의 프로세스로 pdflatex테스트했는데 전체 실행 시간은 실제로 200개의 프로세스를 사용할 때보다 더 길었습니다(1:10분이 아닌 2:05분) -P 16(프로세스 간 전환에 추가 시간이 이 시점에서 설명된 것 같습니다). 게다가 -P 0OS 전체가 렉이 걸려서 사용하기 힘든데 -P 16... (제 CPU는 CPU 쓰레드가 8개입니다.)

관련 정보