
データドリブン経営の前提として考えるMVV:ミッション・ビジョン・バリューと戦略・戦術・戦法
今回は、ハイパースレッドの話をしましょう。
「ハイパースレッディング・テクノロジー」とは、インテルがCPUコアを効率よく使用するために提供している手法です。
Core i7をCPUにPCは、4つの物理コアを持ちますが、Windowsのタスクマネージャーで見ると、あたかも8つのCPUコアが存在するように見えます。このうち4つのコアがハイパースレッディングの論理コアになります。
詳細な説明は前記リンクのWikipediaに譲りますが(非常に簡潔にわかりやすく書いてあるので感激しました)、
簡単に言うと、インテルのハイパースレッドはひとつのコアを論理的に2つに見せて、通常は同時に動かない整数演算の回路と浮動小数点演算回路が2つのコアでそれぞれ同時に要求されたときだけ性能が2倍になります。しかしその他の回路は共有ですので、その性能は1CPU時の1.2~1.4倍程度だそうです。
特にGUIを多用するWindows等のクライアントPCでは効率がよいため実装されているマシンが多いのですが、例えばCore-i7で8つのCPUが見える場合、8つのプロセスを並列で実行してもよいものでしょうか?
答えは否です。
8つのCPUコアがみえていても、そのうつ4つは仮想ですので、6本のプログラムが最大のパフォーマンスで動作することはできません。プログラム以外にOSや他のアプリもCPUを使用しますから、4プロセスを限度に考えた方がよいと私は考えます。
Core i7のマシンを専用の仮想マシンとして動作させた場合などは、BIOSでハイパースレッディングをOFFにする例も多いです。
Windowsの2003ぐらいまでは、OSのCPUコア数のレポートでは、ハイパースレッドと物理コアの区別がありませんでした。しかし、いまではきちんとOSからハイパースレッドの数が返ってきます。しかし、VM:仮想マシンの場合はそうは行きません。 「VMWare」は仮想マシンに割り当てられたCPUコアを、物理コアとしてゲストマシンにレポートしますから、きちんとハイパースレッドのコアを意識して動作するSQL Serverなどは、本来の性能が出せないのです。
C:>ProcessInfo64 |
(自作プログラムによるCPUレポート)
先日、あるデモの際に、Windows Server 2012でハイパースレッド抜きの合計64コアのCPUを積んだマシンのタスクマネージャを見ましたが、なんと、あのCorei7で横に8個並ぶCPUグラフが8個×8段並んでいました。
昔、「80286」だったか、2CPU搭載可能なPC9821を買って、2CPUにするために秋葉原で部品を探し回ったのを思い出し、技術の進歩に唖然とした次第です。
並列処理の話(その1) ~変換処理の並行動作について(後編)~
並列処理の話(その2) Windowsでコマンドを並列実行する(前編)
並列処理の話(その2) Windowsでコマンドを並列実行する(後編)
20年以上の実績に裏打ちされた信頼のデータ連携ツール「Waha! Transformer」で、自社に眠るデータを有効活用。まずは無料のハンズオンセミナーや体験版で効果を実感していただけます。
Rankingランキング
New arrival新着
Keywordキーワード