Ubuntu15.10オペレーティングシステムでRを使用して統計分析を行っています。私のRスクリプトは完了するのに非常に長い時間がかかります。約2〜3時間。
その間、CPUの負荷を確認しました。 1つを除いてすべてのCPUがほとんどアイドル状態であることに気づきました。下の図では、ご覧のとおり、CPU 8のみが100%です。
LinuxカーネルがすべてのCPUのワークロードのバランスをとらないのはなぜですか?
Linuxは、すべてのCPU間でワークロードのバランスを取ります。ただし、そのためには、ワークロードをマルチスレッド化する必要があります。シングルスレッドのワークロードを複数のCPUに分散することはできません。実際、シングルスレッドのタスクを単一のCPUに保持するのが最も効率的です。
ここでの問題は、問題のRスクリプトがマルチスレッド用に作成されていないことです。
プロセスがmapReduceにつながる場合は、スクリプトを断片に分割し、各断片を異なるCPUで実行できます。