質問: cpuコアの使われ方についてご教授ください はじめまして。cpuのコア数に関する質問です。 例えば、ある一つのサーバにcpuが2個、1cpuあたり6コアのスペックとします。 毎時定刻に、一つのバッチ処理が起動します。 そのバッチ処理は、多数のcsvファイルを入力として、チェック後、dbへ必要情報を更新します。 csvファイルがめちゃめちゃ多い(数万件)ため、できる限り早く処理を実行したいと考えてます。 バッチ処理のアプリケーションは、シングルタスクです。 こうした条件のもと、osは自動的に12コアのメリットを生かすようにジョブをコアに割り当てて くれるものでしょうか? 私の周りには、技術者もどきが多く、いろんな意見があります。 ある人は、アプリを多重化したつくりにしないと、いくらコアがあっても一つの処理に使われるコアは一つだけという人と、アプリは意識しなくともosが自動的にコアに割り当ててくれるという意見の人もいます。 本当のところどうなんでしょうか? 専門家のご意見をいただきたくお願いします。
回答: バッチ処理自体はシングルコアで実行されるが、dbのプロセスとは(おそらく)別コアで実行される、です。バッチ処理がプログラムの中でフォークする仕組みでない限りは複数コアを使って演算してくれたりはしないと思います。もちろん、バッチ処理がスクリプト言語などで書かれており、その内部処理でフォークなどがプログラマに見えないところで実行されているのであれば、その限りではありません。 ちなみに、現代のcpuはスーパースケーラといって、1コア内にも複数の演算ユニットがあり、cpu自身がが命令レベルの並列性を見出したインストラクションについては可能な限り空いている演算ユニットに命令を詰め込んで処理を高速化しています。