我正在使用 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/)。