マウスコンピューター「WN891」で遊ぼう ( その3 Windows10をチューニングする )
WN891は、Atomプロセッサに2GBのメモリという極めて脆弱な環境で、どちらもアップグレードすることはできません。できることは限られていますが、少しでも良い環境を目指し、チューニングしていきましょう。購入当時の2015年にも少しやっていた内容ですが、今回再度トライしてみました。基本方針は「何はともあれ、メモリを空けること」です。
メモリ使用率を観る
まずは、クリーンインストールを終了した初期状態のWN891の電源を入れて、タスクマネージャ(下部タスクバーの空いている部分を右クリックでメニューが出てきます)を起動してみます。マシン起動時は、初期化プロセスが動いていますので、CPU、メモリ使用率が高くなっていますが、一定時間経つと、CPU使用率が10%を切るレベルに落ち着きますので、その段階のメモリ使用率を見てみます。
全メモリ1.9Gのうち1.2G、63%使用となっています。これは、いわゆる固定費のようなもので、何も動かさなくてもこれだけは使うということです。この状態から、ブラウザを起動、Yahooなど適当なページをTabで2〜3ページくらい開いてみましょう。すると、メモリ使用率は、一気に95%くらいに上がります
では、残り5%で追加のページを観ることができるでしょうか。
サイトにもよりますが、まず問題なく動くでしょう。これは、言うまでもなく、Windows10が仮想メモリをサポートしているからです。
いわゆるページングと呼ばれる機能ですが、メモリは一定サイズ(通常4K)の単位(ページ)で管理されており、メモリが不足すると、一部のページを外部ファイルに書き出します。このページデータセットにページを書き出すことを「ページアウト」といいますが、これにより空きメモリを確保するわけです。しかし、ページアウトされたメモリ領域へのアクセスが発生する(ページフォルト)と、ページデータセットから実メモリに読み戻さないといけません。これを「ページイン」と呼びます。
いまは、メモリが潤沢なマシンがほとんどなので、あまりページングに注目する人はいないかもしれません。
昔話で恐縮ですが、わたしが80年代前半に地方の工場で見ていたマシンは、メモリ2MG(ギガではありませんよ、メガです)でした。「えらく小さなマシンだな」と思うかもしれませんが、これでも、IBM System/370アーキテクチャの汎用機だったんです。最下位機種でしたけど。
さて、このような実行環境では、メモリが少ないので、ページングをいかに抑えるかがチューニングのポイントでした。一般的に、ページアウトは何回起きても、あまり大きな問題にはなりません。問題になるのはページインで、これが一定回数以上になると、レスポンスが一気に劣化します。当時は、1秒あたりのページイン回数に、しきい値(10回/秒以下程度)を設けて管理するのが一般的でした。
さきほど、ブラウザでWebを観るケースを例にしましたが、このような対話処理はあまり大きな問題にはなりません。対話処理と言いますが、そう思っているのは使っている人間サイドだけで、コンピュータにとっては、ほとんど遊んでいるようなものだからです。画面を見ている時はもちろん、キーを打っているような時間でさえ、マシンサイドからみるとアイドルタイムばかりなのです。このような処理ではページアウトはあっても、ページインは極めて少ないのが特徴ですし、空いている時間に内部処理は完結してしまうので、レスポンスにはさほど影響を与えません。
当時、汎用機の世界で問題を引き起こすのは、マシンリソースをリアルに使っていく、オンラインバッチのような処理形態がほとんどでした。これを見直し、「メモリの有効活用を図り、ページングを少なくしていくこと」がチューニングのポイントだったわけです。
Windows10でも、最初から居座っていたり、定期的に動いて、CPUやメモリといったリソースを使っている輩がいるようです。できることは少ないかもしれませんが、それらを出来る限り排除して、初期メモリ消費を下げることを目標にしましょう。
チューニングの実行
それでは、実際に作業を始めていきましょう。
(1) バックグラウンド処理を削減する
設定->プライバシー->バックグラウンドアプリ
なんとまあ、つまらない処理がバックグラウンドに常駐しているのでしょうか。「すべてオフ」で良いでしょう。「Windowsセキュリティ」あたりは残しておいたほうが良いかもしれませんけど。
(2) スタートアップ
タスクマネージャを起動し、「スタートアップ」タグをクリックします。
この環境では、Microsoft Onedriveを使っていない場合、無効にします。
(3) 不要サービスを無効化
タスクマネージャを起動し、「サービス」タグをクリック、さらに最下部の「サービス管理ツールを開く」をクリックします。
「スタートアップの種類」をクリックし、”自動”のものから表示させます。
「Connected User Experiences and Telemetry」は、MicrosoftにWindowsの使用状況を送るサービスなので「無効」。
「Print Spooler」もプリンタ未接続ですから、無効にします。
”Sysmain”は、そのままにしておきましょう。
「無効にせよ」との情報がWeb上に多くありますが、このサービスを停止すると、メモリ圧縮機能が動かなくなります。後述しますが、この機能は、WN891のようなリアルメモリの少ないマシンには有効ですので、そのままにしておくことを強くお薦めします。
(4) 情報収集を停める
サービスで「Connected User Experiences and Telemetry」を停止しましたが、次は、スケジューラで定期的に情報収集をしているタスクを停めてみましょう。まずは、下記に手順で「タスクスケジューラ」を起動します。
スタートメニュー -> Windows管理ツール -> タスクスケジューラ
タスクスケジューラライブラリ -> Microsoft -> Windows以下にある下記の項目を無効化します。
以下の項目を、右クリックして無効化していきます。
Application Experience -> Microsoft Compatibility Appraiser
ProgramDataUpdater
Autochk -> Proxy
Customer Experience Improvement Program -> Consolidator
UsbCeip
Disk Diagnostic -> Microsoft-Windows-DiskDiagnosticDataCollector
Microsoft-Windows-DiskDiagnosticResolver
(5) Windows10のメモリ圧縮
Windows10から、ページング機能にメモリ圧縮が追加されたようです。これは一部のメモリを圧縮しておき、ページング対象になるページを少なくすることが目的です。一方で、圧縮、非圧縮にはCPUを使いますので、トレードオフとなりますが、どう考えてもページングのコストのほうが大きいでしょう。特に、メモリの少ないWN891のようなマシンでは、この機能は極めて有効だと思います。
ただ、多くのWindowsマシンは、メモリが豊富で、ページングの必要すらありませんから、CPUの無駄遣いにすぎないという評価になってしまうのかもしれません。
Linuxには、かなり前から”Zswap”と呼ばれる同様の機能がカーネルに組み込まれていて、メモリの少ないマシンで活用されている実績があります。Windows10にも、このような機能が入ってきたことは、注目されるべきことでしょう。
(6) 常駐クライアントに注意
WN891のようなマシンを使う場合、メモリに常駐するようなプログラムはできる限り避けなければいけません。例えば、DropboxやGoogleDriveの常駐クライアントは、確かに便利ですが、CPUもMemoryも相当消費します。rcloneのようなコマンドツールを使うことをお薦めします。
削減結果のまとめ
それでは、上記による削減効果を見ていきましょう。
状況によって上下しますが、1GBを切るようになりました。200MG以上の削減になっていることがわかります。
さて、ここまでのチューニングで、オフィス系業務における文書作成やWebを観る程度なら、なんとかメモリ2GBで使える感じになりました。
もちろん、32ビット版Windows10限定です。64ビットとなると、アドレス幅が倍になりますから、倍増とは言いませんが、50-60%以上のメモリ増が必要になります。そういう意味で、64ビットWindows10では、最低でもメモリ4Gということになるでしょう。
(付記) 画面表示の高速化
最後に、不要なアニメーションを無効化して、画面の動きを軽快にしておきます。
コントロールパネル -> システムとセキュリティ -> システム -> システムの詳細設定 -> パフォーマンス -> 設定
下記のように、アニメーション関係のチェックを外してしまいます。
これで、動きが少し良くなったのではないでしょうか。