나는 다음과 같이 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/).