![`xargs -P 0`은 정확히 무엇을 하고 있으며 그것을 사용하는 것이 좋은 생각입니까?](https://linux55.com/image/226436/%60xargs%20-P%200%60%EC%9D%80%20%EC%A0%95%ED%99%95%ED%9E%88%20%EB%AC%B4%EC%97%87%EC%9D%84%20%ED%95%98%EA%B3%A0%20%EC%9E%88%EC%9C%BC%EB%A9%B0%20%EA%B7%B8%EA%B2%83%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%EC%A2%8B%EC%9D%80%20%EC%83%9D%EA%B0%81%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
xargs는 명령을 제공하며 xargs -P 0
문서에서는 명령을 병렬로 실행하기 위해 가능한 한 많은 프로세스를 생성한다고 언급합니다. 그러나 예를 들어 사용 가능한 CPU 수 또는 거의 수만 개의 스레드에서 중지됩니까? 두 번째 옵션이라면 CPU 스레드 수를 중심으로 생성하는 것보다 효율성이 떨어지나요? 프로세스 간에 끊임없이 변경하는 데는 무시할 수 없는 시간이 걸릴 것이라고 생각합니다. 그렇죠?
답변1
결국 제가 직접 테스트를 해봤습니다. 따라서 -P 0
모든 프로세스를 동시에 실행하려고 시도하지만(한계는 OS당 허용되는 최대 스레드 수 정도이며 아마도 수천 개일 것으로 생각됩니다) CPU 집약적인 작업에 사용하는 것은 속도가 느려지므로 매우 나쁜 생각입니다. 다운되면 시스템이 매우 느려집니다.
약 200개의 프로세스로 pdflatex
테스트했는데 전체 실행 시간은 실제로 200개의 프로세스를 사용할 때보다 더 길었습니다(1:10분이 아닌 2:05분) -P 16
(프로세스 간 전환에 추가 시간이 이 시점에서 설명된 것 같습니다). 게다가 -P 0
OS 전체가 렉이 걸려서 사용하기 힘든데 -P 16
... (제 CPU는 CPU 쓰레드가 8개입니다.)