06月27日
macでハイパースレッドをON/OFFする方法と確認方法
macでインテルのハイパースレッドの利用を停止する方法をご紹介しています。
IntelのCPUを搭載したMacBook/Air/Proは、ハイパースレッドが有効になっています。
macに搭載されるIntelCPUは、2つ以上のコアがあります。
コア=物理的なCPUの数です。
Intelのハイパースレッド(HT)技術は、1つのコアで仮想的なCPUコアを増やしてくれる技術です。
CPUコアは様々な演算をする機能が備わっています。通常フルに使っていないので、リソースを分けて使えるようにしたのがハイパースレッド(HT)です。
映像系の重たい処理などは、リソースをフルに使っている状態なので、
ハイパースレッドをOFFにした方が処理が早く終わることがあります。
IntelのCPUを搭載したMacBook/Air/Proは、ハイパースレッドが有効になっています。
macに搭載されるIntelCPUは、2つ以上のコアがあります。
コア=物理的なCPUの数です。
Intelのハイパースレッド(HT)技術は、1つのコアで仮想的なCPUコアを増やしてくれる技術です。
インテル ハイパースレッディング・テクノロジー (インテル HT テクノロジー) は 1 つのコアで複数のスレッドを同時に実行することにより、プロセッサーのリソースをより効率的に使用します。また、プロセッサーのスループットを高め、マルチスレッド・ソフトウェアの全体的なパフォーマンスを改善します。
インテル ハイパースレッディング・テクノロジー
CPUコアは様々な演算をする機能が備わっています。通常フルに使っていないので、リソースを分けて使えるようにしたのがハイパースレッド(HT)です。
映像系の重たい処理などは、リソースをフルに使っている状態なので、
ハイパースレッドをOFFにした方が処理が早く終わることがあります。
macでハイパースレッドをON/OFFする方法
ここでは、Intel製CPU搭載Macで、macOS Sierraをご利用の方を対象としています。
(検証したmacosがSierraという理由だけです。
未検証ですが、El Capitan、Yosemite、Mavericks、Moutain Linonなどでも使える方法だと思います。)
ハイパースレッドをON/OFFするには、Xcodeのパフォーマンス測定・検証ツール Instrumentsで設定できます。
この方法には、以下2つのデメリットがあります。
- Xcodeをインストールする必要があります。通常4GB以上のストレージを消費します。
App StoreからXcodeをインストールすることができます。 - ハイパースレッドOFFの状態は、スリープからの復帰、リブートでクリアされます。
例えば、macを再起動するとハイパースレッドOFFから規定のONの状態になります。
それでは、ハイパースレッドをONからOFFにしてみます。
- Instruments.appを起動します。
ターミナルから以下コマンドを実行してください。
$ open /Applications/Xcode.app/Contents/Applications/Instruments.app
Xcodeから立ち上げる方法もあります。
Xcodeメニュー > Open Developer Tool > Instruments
でInstrumentsを起動できます。 - ハイパースレッドをOFFにします。
Instrumentsメニュー > Preferences...を選択します。
CPUsタブを開きます。
Hardware Multi-ThreadingのチェックがONになっていますか?
OFFになっている場合、ハイパースレッドはOFFの状態になっています。
チェックがついている場合、ONの状態です。チェックを外してください。
管理者パスワードが求められます。
Hadware Multi-ThreadingがOFFになると、
Active processor coresの最大値が4から2に変わったことがわかります。
(MacBook/Air/Pro13インチの場合)
MacBook Pro 15インチの場合は、最大8から4に変化します。
再起動の必要はありません。チェックをON/OFFしたタイミングで設定が切り替わります。
ffmpeg( -vcodec libx264 )で負荷をかけながら変化を見てみました。
CPUの数が多いMid2015で確認したスクリーンショットです。
8CPUを4CPUに変更し、4CPUのみ使われることがわかります。
ちなみに、ffmpegの処理時間は、ハイパースレッドをOFFにした方が速いです。
ハイパースレッド:ON | real 0m36.204s user 4m19.861s sys 0m1.598s |
ハイパースレッド:OFF | real 0m43.373s user 2m40.776s sys 0m1.315s |
macbook ハイパースレッドがON/OFFなのかを確認する方法
物理的なコア数、論理的なコア数、アクティブなコア数からハイパースレッドのON/OFF状態を判断することができます。
物理的なコア数、論理的なコア数、アクティブなコア数は、sysctlコマンドを使うと得られます。
$ sysctl -a | egrep -e "hw.activecpu*|hw.logicalcpu*|hw.physicalcpu*"
hw.activecpu: 4
hw.logicalcpu_max: 4
hw.logicalcpu: 4
hw.physicalcpu_max: 2
hw.physicalcpu: 2
hw.activecpu | 現在アクティブなCPUコア数を意味します。 |
hw.logicalcpu_max | CPUの論理最大コア数を意味します。 |
hw.logicalcpu | 現在macosが認識しているコア数です | hw.physicalcpu_max | CPUの物理最大コア数です。 |
hw.physicalcpu | 現在macosが認識している物理的コア数です |
ハイパースレッドをON/OFFすると変化する項目は、hw.activecpu、hw.logicalcpuです。
ハイパースレッドがOFFの状態では、Late2012は以下のような結果になります。
$ sysctl -a | egrep -e "hw.activecpu*|hw.logicalcpu*|hw.physicalcpu*"
hw.activecpu: 2
hw.logicalcpu_max: 4
hw.logicalcpu: 2
hw.physicalcpu_max: 2
hw.physicalcpu: 2
見方は色々あるかもしれませんが少ない項目で確認できるのは、以下数値を確認する方法です。
ハイパースレッドOFF:hw.logicalcpu_maxと、hw.logicalcpuが違う場合
ハイパースレッドON:hw.logicalcpu_maxと、hw.logicalcpuが同一の場合
コメントシステムを利用したくない方はお問い合わせからお願いします。
2013.8.19 DISQUS(外部コメントサービス)の利用を開始しました。
Facebook, google, Twitter等のアカウントで投稿可能です。