treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

仮説:Windows10省電力マネージャー⇒バッテリ閾値クリアの理由

本日は省電力マネージャーについて仮説の話をご報告します。
内容は検証したのですが、これだ、という確証が取れなくて残念な内容です。

省電力マネージャー。
これをWindows10で使いたい、と考える方が多いことがかなり実感できています。Windows10のThinkPadで省電力マネージャーを使うための記事を閲覧される方が多く、お役に立てているようでうれしい限りです。

さて今回のきっかけとその症状を

以前Windows10で省電力マネージャーを使うための方法をご紹介した下記の記事

blog.treedown.net

にてコメントをお寄せいただきました。ありがとうございます。

バッテリーのメンテナンス画面で「カスタム」を選択して充電閾値を入力するのですが、「このレベルより低くなると充電を開始○%~このレベルで充電を停止○%」の設定がリセットされる、という書き込みでした。

f:id:treedown:20160309160955p:plain

バッテリ閾値がリセットというよりか、充電モード設定が変更される、という動きなんですよね。これ以降でバッテリ閾値がクリアとかリセットと表現している箇所はこの「充電モードが変更される」を指しているという前提でご覧ください。
私の動作環境でもかなり以前に設定しておいた設定値がカスタムから「常に満充電を行う」や「自動で充電モードの変更を行う」のいずれかに設定が変更されてしまう、
という動作が確認できました。いつの間に?
以下の条件でバッテリ閾値設定が変わることを確認しました。

  • 電源OFF状態でACアダプタを外してキャビネットで保管していた。
  • 電源ON状態でも電源プランを変更したり設定を変えたりしてからACアダプタを抜き差しし、しばらく使うと閾値がクリアされることがある。

こうすると、Windows10では設定してあったバッテリ閾値がクリアされてしまうことがありました。
ただし、これ、トラブルシューティングで一番厄介な「100%再現性がないため、何を起点にして発生しているか全くわからない」というところが問題です。実際に動作確認しているうちに、発生しなくなってしまいました。

場当たり的ではありますが、「ACアダプタを外す」というアクションで発生するのは共通しているようなので、ACアダプタを抜き差しした後のWindows10起動後バッテリの閾値を手動で変更しなおせば当然バッテリ閾値設定は有効になります。
ですが、自動で設定が変わってしまうのは、なんだかいやですよね。
ただし再現性がない(起きたり起きなかったり)ので、原因を突き止める、というのはちょっと難しそうです。
この現象自体への対処方法としては、定期的にバッテリの閾値が変更されていないか(リセットされていないか)を確認する、という対処方法しか手がない、というのが結論です。

まずは前提条件(これで解決するかも)

この検証ステップに進む前に、前提条件があります。
以下の設定を実施することです。

tkimura.info

この記事で当ブログ記事をリンクしてもらいましたが、今回は逆にこちらからご紹介させていただきます。
この記事の「トラブルシューティングツールの無効化」にある設定の変更を実施します。手順としては「コンピュータの保守」設定を無効にし「起動時にトラブルシューティングが自動的に開始されるようにする」チェックボックスをOFFにする必要があります。
先人の知恵、ともいうべき情報ですね。ありがとうございます。

まずはこの設定を実施してあるうえで、省電力マネージャーの充電閾値設定がそれでも変わることがある、という話をこれからします。

考えられること(含む対処方法)

省電力マネージャーに影響しそうなWindows10の動作を考えてみました。

  • 省電力マネージャーが動作するにあたり、バッテリ閾値(の値)を保持ための権限が足りない。
  • 高速スタートが影響する。
  • Windows10標準のバッテリ制御機能とで競合や上書きが起きている。

動作権限や高速スタートなどの要因であれば、もっと再現率が高くなりそうですので、原因からは除外しました。。
勝手な予想ではWindows10標準のバッテリ制御機能と省電力マネージャーとで一つの設定値を取り合いしてしまう状態なんじゃないかな、という感じがしています。これとてなんとなくの感じでしかないのですが。

試しているうちに発生しなくなった

なんとなく、で完了してしまった原因の最たるものとして、困ったことに試しているうちに発生しなくなってしまった、と言う点が一番です。
操作したのは、

  • (あまり記憶がないのですが)バッテリモードで使用後にシャットダウン、改めてACアダプタを接続ししばらく使っていたところで、バッテリ充電閾値設定が 「常に満充電を行う」や「自動で充電モードの変更を行う」のいずれかに変更されていたので、再度バッテリ充電閾値設定に設定値○%?○%を入力する。これ も1回実行しました
  • 省電力マネージャーで電源プランを変更しACアダプタを抜き差しし、しばらく普通に使っていたところで、バッテリ充電閾値が「常に満充電を行う」や「自動で充電モードの変更を行う」に設定値が変わったのでバッテリメンテナンス画面から充電閾値をセットしなおす。これを一回実行。

このあと閾値が変わることはなかったので、検証が行き詰まってしまいました。

ここから先が推測の話です。何も確証がない話です。
※ご注意を:
ここから先の内容はほとんどが推測の内容となっています。何かしらの確証がある内容にはなっていませんので、ご了承ください。

仮説:バッテリプロファイルごとで充電閾値があるんじゃないか

で、仮説です。
アダプタを抜き差しして充電閾値が変わった(気づいたら変わっていたとも言う)のはシャットダウンしているかどうかに関わらず閾値設定はクリアされました。(一回だけですが)
このときに直前に実行した操作は電源プランで「パワー源最適化」から「マックスパフォーマンス」に変更していました。
もしかすると、従来と違って電源プランでプロファイル変更をしたタイミングで変わってしまうことがあるのかもしれません。ちなみにXPまでのWindows OSでは、シャットダウン→起動としたときにも、ユーザ個別の電源プランが適用される前にWindowsのDEFAULTという電源プランが適用されます。でログオン後にユーザプロファイルの読み込みが開始するとユーザプロファイル内に格納されている電源プランが適用され各種省電力機能が動作するようになります。(どのOSからユーザプロファイル個別の電源プランでなくなったかは実はよく知らないのですが。)このため、ログオン待ちのいわゆる「ようこそ画面」でPCをつけっぱなしにしておくと、省電力マネージャーで設定している省電力設定は反映されることなく、Windowsデフォルトの電力管理設定でPCが動作する、という仕様がありました。

Windows10はスマートフォンであるWindows 10 Mobileと作りが同じなので、OS標準のバッテリ制御機能が搭載されていて、そのバッテリ制御機能はUEFIのレベルでアレコレと制御されているそうです。

※参考URL:(Windows10 Mobileの記述ですが)

■Windows 10 Mobile のブート環境でのバッテリーの充電
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn756624%28v=vs.85%29.aspx

■バッテリー充電しきい値一覧
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn756624%28v=vs.85%29.aspx#thresholds

このURLの内容を読んでみると、2種類ほど考えられることがあります。

  • OS標準の電源制御によって、省電力マネージャーで設定したバッテリ充電閾値がクリアされるかもしれない。
  • 省電力マネージャーで電源プランを変更する(あるいは自動的にPCが判断して電源プランが変更される)タイミングで、適用する電源プランによってバッテリ充電閾値がクリアされるかもしれない。

さらにOSのアップデート時に、バッテリや電源に関するアップデートが配信されて適用された際には、同じくバッテリ制御まわりの設定値が変わってしまうこともあるのかもしれません。

こうして、結論は出ません。

公式外で使っていると、何せ気を使いますよね。
しかもWindows8.1(Windows8)ではインストールしてほったらかしにしててもそれほど動作に支障はなかったのですが、Windows10になると2世代開きがあるのも関係しているかもしれません。ないし、Windows10になってからOSが積極的に電源・バッテリに対して関与するように変わってきているようですので、OSの積極関与によってWindows7時代で進化が止まっている省電力マネージャーが想定しない動作(値の書き換え)をOS側で実行してしまう、ということのように思えます。

こうして、前半に書きました結論のように
定期的にバッテリの閾値が変更されていないか(リセットされていないか)を確認する、という対処方法しか手がない
という結論に達します。
Windows Update後はバッテリ閾値は要チェック、これからはみておくようにします。

f:id:treedown:20151229231218p:plain

関連記事

ほぼほぼ結論がでました。

blog.treedown.net