お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-04-16 22:46:17

chicken_steak
新しいメンバ
登録日: 2013-04-16

Ubuntu12.04において、BIOS以外からC-stateを無効にする方法について教えてください

BTOショップで購入したノートパソコンにUbuntuをインストールしたのですが、搭載しているCorei3の省電力機能が原因で高周波のノイズが常にしています。
このノイズに関してネットで調べたところ、Intel C-state tech が関係しているとの異が判明したので、BIOSから無効化しよと思い、項目を探しましたが該当する項目は見当たりませんでした。

また、ノイズに関しては、Windows8をインストールした環境においても同様に発生しています。ただ、Windows8の場合はレジストリからC-stateを無効にできる方法が価格.comか何かのスレッドに書いてあったのでそれを行いました。その結果、Windows8ではノイズが発生しなくなりました。(実験用にインストールしただけでありDualBootではない)

Ubuntuにおいて、BIOS以外からC-stateを無効にするにはどうすればいいのでしょうか?

また昔のUbuntuではC-stateの確認が「/proc/acpi/processor/CPU/power」から確認できるという事が以下のURLに記述されていますが、ubuntu12.04ではコマンドを実効しても、「存在しません」と出て確認することもできません。
http://d.hatena.ne.jp/gunshot/20110311/p1

オフライン

 

#2 2013-04-17 00:55:46

katsu07
ゲスト

Re: Ubuntu12.04において、BIOS以外からC-stateを無効にする方法について教えてください

実際に試したわけでもなく、単に"C-state"のキーワードだけでカーネルソースに含まれるカーネルパラメーターのドキュメントを検索しただけです。
ubuntu 12.04に提供されているカーネル3.2系と3.5系では以下のパラメーターがある様です。

カーネル3.2系

コード:

idle=       [X86]
        Format: idle=poll, idle=mwait, idle=halt, idle=nomwait
        Poll forces a polling idle loop that can slightly
        improve the performance of waking up a idle CPU, but
        will use a lot of power and make the system run hot.
        Not recommended.
        idle=mwait: On systems which support MONITOR/MWAIT but
        the kernel chose to not use it because it doesn't save
        as much power as a normal idle loop, use the
        MONITOR/MWAIT idle loop anyways. Performance should be
        the same as idle=poll.
        idle=halt: Halt is forced to be used for CPU idle.
        In such case C2/C3 won't be used again.
        idle=nomwait: Disable mwait for CPU C-states

processor.max_cstate=   [HW,ACPI]
        Limit processor to maximum C-state
        max_cstate=9 overrides any DMI blacklist limit.

processor.nocst [HW,ACPI]
        Ignore the _CST method to determine C-states,
        instead using the legacy FADT method

カーネル3.5系

コード:

idle=       [X86]
        Format: idle=poll, idle=mwait, idle=halt, idle=nomwait
        Poll forces a polling idle loop that can slightly
        improve the performance of waking up a idle CPU, but
        will use a lot of power and make the system run hot.
        Not recommended.
        idle=mwait: On systems which support MONITOR/MWAIT but
        the kernel chose to not use it because it doesn't save
        as much power as a normal idle loop, use the
        MONITOR/MWAIT idle loop anyways. Performance should be
        the same as idle=poll.
        idle=halt: Halt is forced to be used for CPU idle.
        In such case C2/C3 won't be used again.
        idle=nomwait: Disable mwait for CPU C-states

intel_idle.max_cstate=  [KNL,HW,ACPI,X86]
        0   disables intel_idle and fall back on acpi_idle.
        1 to 6  specify maximum depth of C-state.

processor.max_cstate=   [HW,ACPI]
        Limit processor to maximum C-state
        max_cstate=9 overrides any DMI blacklist limit.

processor.nocst [HW,ACPI]
        Ignore the _CST method to determine C-states,
        instead using the legacy FADT method
 

#3 2013-04-17 11:18:57

hito
管理者
登録日: 2007-03-18

Re: Ubuntu12.04において、BIOS以外からC-stateを無効にする方法について教えてください

C-stateまわりの用語が混乱しているので、Windowsで行なった、「ノイズの出なくなった対策」で変更したレジストリの変更内容を示して頂くのがいいような気がします。

電源回路の設計がいまいち、というパターンであることは推定できるのですが、この場合、可能性的に、
 ・C-Stateを変動させるとノイズが出る
 ・Deep C-State(C6)するとノイズが出る
 ・C2あたりでだけノイズが出る
といった複数の展開がありえてしまい、ちょっと厳しそうです(で、レジストリのパスと設定値がわかれば多分なんとか)。

オフライン

 

#4 2013-04-17 16:37:03

chicken_steak
新しいメンバ
登録日: 2013-04-16

Re: Ubuntu12.04において、BIOS以外からC-stateを無効にする方法について教えてください

katsu07さん
貴重な返信ありがとうございます。
カーネル系は全くわかりませんが、パラメータが「processor.max_cstate= 」等、関係ありそうな項目かもしれません。
カーネルパラメータに含まれているということは、C-stateに関する設定をするためのパラメータが存在するということでしょうか?

hitoさん
貴重な返信ありがとうございます。
変更したレジストリの内容は以下のものです。
reg add HKLM\System\CurrentControlSet\Control\Processor /v Capabilities /t REG_DWORD /d 0x0007e666

また、このレジストリ変更の内容は、C-satateのACPI C2/C3 State を無効にするものらしいです。

参考Webページが見つかりましたので、URLを載せておきます。

価格.comスレッド ページ最下部のnaoki666さんの返信: http://bbs.kakaku.com/bbs/J0000003124/SortID=12002549/
そこに含まれていたレジストリ変更に関するURL:http://support.express.nec.co.jp/care/techinfo/HyperVX5500_test.html

オフライン

 

Board footer

Powered by FluxBB