複数のプロセスが実行されていると、1つのプロセスのCPU使用率が低下するのはなぜですか?

複数のプロセスが実行されていると、1つのプロセスのCPU使用率が低下するのはなぜですか?

私は次のようにgnuパラレルを使用しています。

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

このrun_backtest関数は conf.yaml を読み、いくつかのコードを実行します。

conf / 20230214 /にconf.yamlが1つしかない場合、プロセスの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/)。

関連情報