【Win】Windows7 OSデータ節減(1) 省電力設定



Windows7 OSデータの削減にかかる覚書。
時代はWin10に移っているが、サブ機、BootCamp、仮想OSとしていまだ7の利用者は多いだろう。
再インストールなどの作業もあるので、容量最小化カスタムのために必要なことを書いておくことにした。
1回目は電力設定の見直しについて。

ハイブリッドスリープと休止状態を機能させるためにシステムにより作成されるハイバーネーションファイル。実はかなりの容量を食っている。これをどう解釈し見直すかはHDDの容量節減において重要な問題の一つだ。


1:OS標準の省電力機能

まずWin7には概ね3つの省電力機能があることを確認しておきたい。
「スリープ(旧スタンバイ)」、「ハイブリッドスリープ」、「休止状態」である。
スタンバイを除き、スリープ時にデータ退避のためにハイバーネーションファイルが使用され、これがOSデータを肥大させているのだ。
複数あるスリープの機能を知り、自分にあった環境設定をしてやることでムダを省くことできるかもしれない。

省電力規格 ACPI

各省電力モードは省電力規格 ACPI(Advanced Configuration and Power Interface)というものにもとづき定義されており、S0〜S5まである。

S0 稼働中(通常作業時のモード)

S1 低電力消費状態(プロセッサ、チップセット保持)

S2 低電力消費状態(チップセット保持、プロセッサ、キャッシュ不保持)

S3 スタンバイ状態(メモリ保持、チップセット不保持)

S4 休止状態(メモリ内容のハイバーネーション格納、メモリ消去、電源断絶状態)

S5 完全電源断絶状態(シャットダウン状態)

スリープの深度と思えば良く、深いほど待機電力は少なく、同時に復帰時間がかかる。

上のうちS2は復帰方式がS3と同様のため、単独で実装される例はほとんどない様子。
主にS3とS4がメインで適用される。

デル株式会社
デル株式会社

スリープ(旧スタンバイ)(S3モード):

XP時代は「スタンバイ」と称されていた。7では「スリープ」と呼称を変えたが機能は同等。環境次第でS1〜S3の適用が変化する。
一時停止的な機能であり、簡易スリープ機能と思っておけばよい。
メモリ保持なので当然待機電力を使用しており、省電力性能は低い。
そのかわり作業再開時の立ち上がりが早い。スリープ中に電源が途絶された場合、作業内容の復旧はできない。

休止状態(S4モード):

スリープ中に電源が絶たれてもHDD内に作業情報を格納しているので、再開時にデータを丸々呼び戻せる仕組み。
これを可能とするために「ハイバーネーションファイル」というものがある。
OSを「休止状態」にする際、メモリー内データをHDDに格納するための領域として機能する。具体的には「hiberfil.sys」という不可視ファイルに保存される。

休止中にメモリを使用しないので電力消費なしで済むこと、急な電源途絶時にもデータ損失のリスクが低くなることがメリット。
デメリットは復帰時の呼び出しにはやや時間がかかること、ハイバネーションファイルが容量を食うのでHDDの領域を圧迫するなどがある。
以上のことから、休止状態(S4モード)単独で利用するのは使い勝手上、得策ではないだろう。

ハイブリッドスリープ(S3/S4モード):

Vistaから搭載された機能で「hiberfil.sys」を利用したスリープ機能。
作業内容をメモリとHDDそれぞれに保持するので「ハイブリッド」と呼ばれる。いわばS3.5モードとでも言ったところか。
電源に問題がなければ通常のスリープ(S3モード)として機能し、復帰速度も早い。
不測の事態(電源喪失)が生じてメモリ内容が消去されても、S4モードとしてHDDに格納されたデータから復帰が可能である。
作業効率と安心担保が兼ね備えられている仕組みということになるだろう。
ラップトップ環境で重宝される機能という位置づけだ。

注意したいのは、システム上の表記は「スリープ」であり、ハイブリッド機能が切られている場合は単にS3モードとして機能するということ。環境によってはそもそもハイブリッド機能を適用できない場合もある。

適用状況を確認するにはコマンドプロンプトに「powercfg /a」と入力してみることだ。
利用可能なスリープモードが確認できる。


↑この例では仮想OSデータとして立ち上げているので、全てのスリープ機能は使えない状態になっている。



2:ハイバーネーションを使用せずOSデータを削減する

ハイブリッドスリープ/休止状態の必要性

省電力設定ではハイブリッドスリープを使用するのが最も良い選択のように思われるわけだが、これを利用するについては搭載メモリ分まるごとHDDの起動ディスクのシステム領域にハイバーネーションファイルとして占有されることだけは考慮に入れたい。

HDDの空き容量に十分な余裕があり、そういうことをそもそも気にかけなくてもいい環境なら良いが、起動ディスクの容量が心もとない場合は、それだけ他に回せる余裕は減るし、動作緩慢の遠因にもなりうるだろう。

電源供給の不安定になりがちなラップトップ(モバイル)環境では特にデータ損失のリスクを回避したいところだが、デスクトップ環境で常に電源が安定的である場合はそれほど神経質にならなくても良いかもしれない。
またいちいち電源を落とすような用途の人にとってはハイバーネーションは無用の長物だろう。

ちなみにハイバーネーションファイル「hiberfil.sys」は起動ディスク以外に移し替えることができない仕様だから、容量不足の対策としてその選択肢は取れないことは知っておいたほうがいいだろう。


ハイブリッドスリープを無効にする

スリープは使用するが、S4モードは使わないという場合は「ハイブリッドスリープ」を無効化しhiberfil.sysを削除してしまうこともできる。

手順は以下の通り。

・コマンドプロンプトを管理者として実行する
・「powercfg.exe /hibernate off」 と入力する
・hiberfil.sysが自動的に削除される
・「powercfg /a」と入力し適用状況を確認する

ここで「休止状態は有効にされていません」という表記が出ていればOK。
この状態で「スリープ」を使用するとS4モードは機能せず、S3モードでしか動作しなくなる。当然ハイバーネーションファイルも作成されない。

これだけで数ギガ単位のシステム領域が開放されるわけだ。

一時停止程度のスリープは利用するが、終了時はシャットダウンするという利用の仕方なのであればこれで十分だろう。
自分の作業環境に合わせて環境を設定したい。

次回はその他のシステム環境の見直しによる容量確保、ほか余分な機能の無効化などを見ていきたい。

次回の記事:【Win】Windows7 OSデータ節減2 不要な機能をオフにする