为什么当多个进程运行时,一个进程的cpu使用率会下降?

为什么当多个进程运行时,一个进程的cpu使用率会下降?

我正在使用 gnu parallel,如下所示:

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/)。

相关内容