私はxargs
pythonスクリプトを呼び出して約3000万の小さなファイルを処理するために使用しています。xargs
プロセスの並列化に使用したいと思います。私が使用しているコマンドは:
find ./data -name "*.json" -print0 |
xargs -0 -I{} -P 40 python Convert.py {} > log.txt
基本的にConvert.py
は、小さなjsonファイル(4kb)を読み取り、いくつかの処理を行って、別の4kbファイルに書き込みます。CPUコアが40のサーバーで実行しています。また、このサーバーでは他のCPU負荷の高いプロセスは実行されていません。
htopを監視することで(ところで、CPUパフォーマンスを監視する他の良い方法はありますか?)、私はそれ-P 40
が期待されるほど速くないことを発見しました。場合によっては、すべてのコアがフリーズして3〜4秒間ほぼゼロになり、その後60〜70%に回復します。次に、並列プロセスの数をに減らしてみますが-P 20-30
、まだそれほど高速ではありません。理想的な動作は、線形スピードアップである必要があります。xargsの並列使用に関する提案はありますか?