여러 프로세스가 실행 중일 때 한 프로세스의 CPU 사용량이 떨어지는 이유는 무엇입니까?

여러 프로세스가 실행 중일 때 한 프로세스의 CPU 사용량이 떨어지는 이유는 무엇입니까?

나는 다음과 같이 gnu 병렬을 사용하고 있습니다.

find conf/20230214/ -name "conf.yaml" | parallel run_backtest

run_backtest함수는 conf.yaml을 읽고 일부 코드를 실행합니다.

conf/20230214/에 conf.yaml이 하나만 있는 경우 프로세스의 CPU 사용량이 200%에 도달할 수 있습니다.

PID    USER PR NI VIRT    RES   SHR  S %CPU %MEM TIME+ COMMAND
154561 xxx  20 0 1355764  1.1g  3608 R  200  0.1  0:32.25  bt_atm 

conf/20230214/에 2/3/4 conf.yaml이 있으면 각 프로세스의 CPU 사용량이 120%/100%/80%로 떨어집니다.

답변1

AST가 작성한 것처럼 이는 일반적으로 시스템 병목 현상으로 인해 발생합니다.

내 시스템에서는 거의 모든 디스크 IO입니다.

iostat -dkx 1

디스크 로드를 확인하는 데 적합합니다.

병렬화가 너무 많으면 처리 속도가 느려지므로 최적의 병렬화는 실제로 다양한 양의 병렬화를 시도해야만 결정할 수 있습니다(https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/).

관련 정보