Linux 2.6.39 x86_64 の Core i7 930 @2.8GHz (クアッドコア) の BIOS でハイパースレッディングを有効または無効にして、wine のコンパイル時間をいくつか測定しました。各測定値は次のようになりました。
git clean -xdf
./configure --prefix=/usr
time make -j$N
ここで、N
は 1 から 8 までの数字です。
結果は次のとおりです (「速度」は time(1) から 60/real です):
ここで、青色の線は HT 無効、紫色の線は HT 有効に対応しています。HT が有効な場合、1 ~ 4 スレッドを使用すると、HT がない場合よりも遅くなるようです。これは、カーネルがプロセスを異なるコアに分散せず、すでに使用中のコアの 2 番目のスレッドを再利用していることに関連している可能性があると思います。
では、私の質問: 同じコアの別のスレッドにプロセスを追加するよりも、コア スケジューリングごとに 1 つのプロセスを優先させるようにカーネルを強制するにはどうすればよいでしょうか? または、私の推論が間違っている場合、1 ~ 4 個のプロセスを並行して実行する場合に、HT を使用しない場合よりも HT を使用した場合のパフォーマンスが低下しないようにするにはどうすればよいでしょうか?