Windows XPより一つのCPUコア上に、二つのCPUを格納するというデュアル・コアCPUをサポートするようになった。
最初はIntelのハイパースレッディング技術によって、空いているプロセッサ・パイプラインを有効活用すべく擬似的に二つのCPUに見せた。次に物理的に二つのCPUを持つPentiumDとAthlon64 X2が登場した。
CQGとTradestreamを同時に起動すると、TradestreamのCPU負荷が単独起動時より上昇することは、以前から確認していた。
(セミナールームは、Pentium4でハイパースレッディングを有効にしている。)
次のような記事がある。
インテルのハイパースレッディング技術でサーバ性能の低下が発生か
http://japan.cnet.com/news/ent/story/0,2000047623,20091397,00.htm?tag=blogger.cr
この記事はハイパースレッディング技術を使用したときに、高負荷状態で複数のプロセスが動作したときに性能が著しく低下すると一部で報告があるということである。
このこと自体は、それほど疑問を持たなかった。なにせパイプラインの隙間を縫ってもう一方のプロセスを実行するのだから、同じキャッシュを使っていることだしありえることだと思った。
ただ、この記事を見て、さてAthlon64 X2でCQGとTradestreamを同時に起動するとどうなるか試してみたところ、TradestreamのCPU負荷がやはり上昇する。ところがTradestreamを起動し直してみたところ、TradestreamのCPU負荷が低下した。このことは何を意味するのだろう。
(アプリケーション個別のCPU負荷はパフォーマンスモニタによりグラフで表示することができる。)
今までWindows XPは、CPUの負荷状況によってアプリケーションを適当なCPUに割り当ててくれるのだろうと思ったのだが、どうも違う気がする。最初にたまたま割り振られたCPUから動かないのではないか?
CQGとTradestreamは共にマルチプロセッサ対応したアプリケーションではないのだが、そのことが最初に割り当てられたCPUのみに負荷が掛かる状況になっているのだろうか?この疑問に応えてくれるWebサイトを見つけられないでいる。現在アプリケーションがどのCPUが割り当てられていることがわかればいいのだが。
こういった疑問がでたところに、おもしろいソフトが登場した。アプリケーションを指定のCPUに割り付けることができる。どなたか試してみてほしい。(人柱か?)
マルチCPU環境で各プロセスが使用するCPUを自動的に指定するソフト
http://www.forest.impress.co.jp/article/2005/11/16/cpudah.html
作者サイト: http://www.takke.jp/
追記: CQGとTradestreamの同時起動は2~3分ほどの状況を確認したのみで、マーケットが開いているときの高負荷状態で連続して確認しているわけではない。
コメント