Mac ProでHyper-threadingをオフしてもcpuコアを100%使用しない

Mac Pro 3.33GHz6 core Westmere)で数値計算を行っています。

デフォールトではHyper-threadingがオンになっており、計算能力が落ちるので、Xcodeからシステム環境設定にProcessorをインストールしてHyper-threadingをオフにしました。結果はアクティヴィティモニタでは確かに6コアのみで動作しているのですが、1コアの使用率は50%で頭打ちになり計算性能は全く上昇しません。全体のcpuユーザー使用率は1/12の約8%のままです。

Mac Pro 2.66GHz (2006)2.8GHz (2008)の結果と比較するとクロック周波数換算で1.9GHz程度です。このことからもHyper-threadingをオフしてもコアあたり1/2しか使用していないことが推測できます。

これはHyper-threadingの仕様なのでしょうか。それとも何か設定し忘れていることがあるのでしょうか。

因に数値計算では1ジョブが1cpu100%使用します。

Mac Pro, Mac OS X (10.6.4)

投稿日 2010/10/02 09:50

返信
返信: 7

2010/10/03 01:24 s_kid への返信

使用したProcessor環境設定パネルはいつのものでしょうか? 最新のXcodeには添付されていませんし、ADCのサイトにある最新の物も昨年の夏のようです。最新のcpuに対応していない可能性があるのでは?

MacProは持っていないので、iMac core i3で確認しましたが、コマンドラインツールのhwprefsでcpu_ht=falseを指定したところ、2 core をフルに稼働させることができました。アクティビティモニターでそれぞれが100%を示します。hwprefsで試してみるとどんな結果になるでしょう?

2010/10/03 06:43 品川地蔵 への返信

品川様、ご回答有り難うございます。


Processor環境設定パネルは/Developer/Extras/PreferencePanes/Processor.prefPaneを実行してインストールしました。

Processor.prefPaneのタイムスタンプは09/07/08 16:39です。したがってWestmereに対応していない可能性はあります。

Xcodeは最新の3.2.3です。


コマンドラインからhwprefs cpu_ht=falseを実行して試してみましたが、変化がありませんでした。

core i3とXeonでは状況が異なるのかも知れませんね。


数値計算プログラムはC/Fortranでビルドしていますが、最近アップデートしたFortran compilerがcore i7対応をうたっていますので、

ひょっとするとコンパイラ側の問題かも知れません。最新版が手に入ったら検証してみます。

2010/10/03 07:03 s_kid への返信

> Processor環境設定パネルは/Developer/Extras/PreferencePanes/Processor.prefPaneを実行してインストールしました。


あれ、そんなところにありましたか(^_^;

ところで、今確認したら2010/5/6の日付でバージョン4.7.3となっています。数日前にXcodeが3.2.4にアップデートされたので、それで対応したのかも知れませんね。

2010/11/10 01:50 s_kid への返信

(もう解決したでしょうか?)


その数値計算のプログラムはどのようなプログラムでしょうか。

自作のプログラムとかでしょうか。( あまり最適化はされてない? )

1スレッドのみを使うプログラムを 1つ動かし、1つのコアのみが動作している状態(他のコアは 5%未満)ということでしょうか。

( 動作するコアが移り変わることはあると思いますが。)


> Mac Pro 2.66GHz (2006)、2.8GHz (2008)の結果と比較するとクロック周波数換算で1.9GHz程度です。

この 1.9GHz というのは、同一のプログラムを動作させたときの実際に計算するのにかかった時間から求めたものでしょうか。

( 2.66[GHz] * (2.66GHz MacPro での計算時間) / (Westmere Mac Pro での計算時間) = 1.9[GHz] ? )


また、メモリ容量も 2.66GHz や 2.8GHz の Mac Pro より多いということで良いでしょうか。


( あまりはっきり覚えてませんが、2.66GHz とか 2.8GHz の Mac Pro というのは、Core 2 Quad のような Xeon と FB-DIMM のシステムだったでしょうか。)


1スレッドのプログラムで、実際の動作速度が 2.8GHz Mac Pro より遅いというのはあまり考えられないように思いますが、

一つ思いついたのがメモリですが、メモリの構成はどのようになってるでしょうか。

もし、'同一のメモリを 3枚' という構成でないなら、トリプルチャンネルでアクセスできなくなって遅くなる可能性があると思います。

( 4枚構成だと遅いかもしれません。また、3枚の場合も適切な位置にメモリは搭載されている必要があります。)

( それ以外に理由が思いつきません。)


1スレッドのプログラムであれば、Hyper-threading が ON でもほとんど悪化はしないように思います。

( 1スレッドであれば 向上することはないように思いますが、悪化するとしても 5% 未満のように思います。)


また、確か CPUコアを OFF にする機能があったと思いますが、いくつか実験が可能であれば、

また、もしそのプログラムを同時に複数起動し実行することが可能であれば、

(1-1) 動作するコア数を 1core ( または 2core ) にしてプログラムを実行してみる。

(1-2) プログラムを同時に複数実行してみる。

などを組み合わせて実行し測定すると、何かヒントになるように思います。

例えば、

(2-1) 動作するコア数が 1core, Hyper-threading:OFF の状態で プログラム ( 1つ) を実行、

(2-2) 動作するコア数が 1core, Hyper-threading:OFF の状態で 2つを同時実行、

(2-3) 動作するコア数が 1core, Hyper-threading:ON の状態で 2つを同時実行、

(2-4) 動作するコア数が 6core(すべて有効), Hyper-threading:OFF の状態で 2つを同時実行

するとどうなるでしょうか。



もし、2.8GHz Mac Pro より速いとか、計算時間を比較したわけではなく単に CPUの使用率が 50% にしかならないという場合や、

マルチスレッドのプログラムや複数の数値計算プログラムを同時に動かしたときの話であれば、いくつか可能性があるように思います。

2010/11/11 08:17 yui への返信

yuiさま


報告が遅れましたが解決しました。以下に施した対策と結論を述べます。


MacPro 2.8GHz (Harpertown, 4 corex2)が故障したため、McPro 3.33GHz(Westmere, 6 core)を購入して
環境移行を試みたがエラー発生で断念、2.8GHzのHDDのOSをそのまま使用(ソフトウエアアップデートは
行ったー>最新のメッセージ)。これが根本的原因でした。


このままでコンパイラー(Fortran/C))の最新版へのアップデート、各種オプションの試み、ハードウエア対策と
してはメモリーの増強(1GBx3->4GBx3)を行いましたが変化なし。


その後、購入時に搭載されていたHDDとOSに必要ファイルをコピーで移行し起動して、正常に動作するように
なりました。バージョンが同じOSでも機種によってインストールされない部分があり、これが今回の
Hyper-threadingに関するものだったようです。それがなんであったかは突き止めていません。


計算時間は1/2に短縮しました。計算時間はUNIX libraryのctimeでmsの単位で計測しています。
また2.66GHzおよび2.8GHzとの計算時間の比較は、yuiさんの記述された通りです。cpuのアーキテクチュアが
それほど変わっていないので、おおよその換算・推定はできます。


なおプログラムはVector Processorの大型機を対象に開発したもので、スレッドの並列化は行っていません。
従ってシングルスレッドで動作し、1つのcpuを100%独占することになります。今回はこれが50%で
頭打ちになっていたということになります。



>もう解決したでしょうか?


>その数値計算のプログラムはどのようなプログラムでしょうか。


Mac Pro 2.66GHz (2006)、2.8GHz (2008)の結果と比較するとクロック周波数換算で1.9GHz程度です。

>この 1.9GHz というのは、同一のプログラムを動作させたときの実際に計算するのにかかった時間から求めたものでしょうか。

>( 2.66[GHz] * (2.66GHz MacPro での計算時間) / (Westmere Mac Pro での計算時間) = 1.9[GHz] ? )



>メモリの構成はどのようになってるでしょうか。


>もし、'同一のメモリを 3枚' という構成でないなら、トリプルチャンネルでアクセスできなくなって遅くなる可能性があると思います。



>1スレッドのプログラムであれば、Hyper-threading が ON でもほとんど悪化はしないように思います。

2010/11/11 18:54 s_kid への返信

s_kid による書き込み:


2.8GHzのHDDのOSをそのまま使用(ソフトウエアアップデートは

行ったー>最新のメッセージ)。これが根本的原因でした。

(略)

その後、購入時に搭載されていたHDDとOSに必要ファイルをコピーで移行し起動して、正常に動作するように
なりました。バージョンが同じOSでも機種によってインストールされない部分があり、これが今回の
Hyper-threadingに関するものだったようです。それがなんであったかは突き止めていません。

ハードウエアに直接関係する(認識して設定する)部分なんで、使い回しは駄目でしょうね。

早期起動のために事前にパラメータ設定されているのかも。


Systemフォルダ内のSystem Configurationを更新すればうまく行ったかも知れませんね。

安直にはセーフモード起動、PRAMクリア、パワーマネージャリセット等でしょうか。

過去に、説明を探して、アップルのドキュメントで見つけた記憶があるので、興味があれば、探してみて下さい。

2010/11/12 02:58 s_kid への返信

解決済みでしたね。了解しました。


> バージョンが同じOSでも機種によってインストールされない部分があり、...


はい。

多分 Westmere Mac Pro の購入時の OS は Mac OS X 10.6.4 だと思いますが、

その機種発売以前の OS ( 10.6.4 も含めてそれ以前 ) には、新しい機種用のドライバなども含まれておらず互換性はないと聞いてます。

元々付属のハードディスクにインストールされている OS 以外では、その機種に付属の OS のインストールディスクか、それより新しいのバージョン(例えば 10.7 ) の OS のインストールディスクで OS をインストールする必要があります。


私は他の機種のハードディスクをそのまま持ってきて使うことは一度も行なったことがない(いつもフォーマットする)ので詳しくは分かりませんが、

そのようなことをする場合は、

付属の OS のバージョンと同じか古ければ、本体付属のインストールディスクで OS を上書きインストール(データを残したままできると思います) のようなことが必要なように思いますし、

持ってきたハードディスク内の OS が本体付属の OS バージョンより新しければ (例えば 10.6.5 や 10.7) そのまま使えるかどうかというのは、ちょっと分かりません。


もちろん、購入時のハードディスクにデータを移されたとのことなので、それで良いかと思います。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

Mac ProでHyper-threadingをオフしてもcpuコアを100%使用しない

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。