マルチスレッドな話

仕事でマルチスレッドを扱う必要が出てきたので、昨年来プログラミングの勉強をしています。それで面白いことを見つけたので、メモしておきます。

職場には、2コア、4コア+ハイパースレッド、6コア+ハイパースレッドのマシンがあります。これらにマルチスレッドの数と計算時間を求めるベンチマークプログラムを走らせてみました。

ちなみに1コアのマシンでは、理論的にはマルチスレッド数と計算時間は比例関係にあります。また、簡単なプログラムの場合、マルチスレッド数が、ハイパースレッド有りの場合はコア数*2まで、無の場合はコア数まで計算時間はほぼ一定のはずです。

ところが、ベンチマークでは、マルチスレッド数がコア数に達するまでに、計算時間は漸増し、ハイパースレッド有りの場合は、コア数を超え、コア数*2−1までより増加するようになり、コア数*2以上は比例関係になりました。

コア数*2−1というのが面白いところで、多分OS機能に1スレッド使われているのでしょう。

from ですくとっぷ powered by HatenaSync!