見出し画像

【あまり知られていない】Windows 省メモリ化設定とか高速化設定とか

はじめに

今までほとんど利用しなかった WSL を本格的に利用するようになって現在困っている事は、

  • ディスクが足りない

  • メモリが足りない

です。この記事では、「足りない」という永遠のパソコン問題を緩和するあまり知られていない方法を紹介します。

ディスクが足りない

NTFS 圧縮を利用するだけです。ただし、すべてのファイルに適用するのではなく、読み込み専用のファイル群に適用します。

NTFS 圧縮自体は昔からある機能で、動作速度の低下を招くというイメージもあるので敬遠している人は多いと思います。しかし実際は、正しい条件で利用するとかなり速度向上します。

以下の条件すべてに当てはまるファイルに圧縮を適用させます。

  • SSD 上のファイル

  • (動画・画像も含む)圧縮や暗号化されていないファイル

  • 読み込み専用のファイル

なぜ高速化するのかという話ですが、コンピュータが処理を行う際に必要な時間「読み込み・転送」vs 「演算」のうち、前者の時間が支配的な処理に対して高速化するからです。もちろん、圧縮の解凍処理を行うと演算時間が増えます。しかし、演算時間の増加よりも読み込み時間の短縮の影響が大きい場合に高速化できます。

※ 過去に「NTFS 圧縮は遅い」というイメージがついた理由は、断片化が激しくなるからです。ハードディスク上のファイルに圧縮を行うと、読み込み・書き込み共に必ず遅くなります

実際に、最近のゲームファイルや組み込み系OSのリード・オンリーファイルは高速化のために圧縮されています。(※ つまりゲームフォルダはすでに圧縮済みなので圧縮しないでください、AI学習のモデルファイルも圧縮済みです)

Windows の場合も、一般に次のフォルダを NTFS 圧縮する事で、高速化に繋がります。※ SSDに限ます。ゲームフォルダは除外してください。

  • C:\Windows

  • C:\Program Files

  • C:\Programs Files (x86)

Program Files の圧縮方法

デメリットもあります。基本的に「リード・オンリー」ですが、リードだけでなくライト処理のあるアップデートやインストールの処理が遅くなります。

「C:\Windows フォルダ」もある程度圧縮できますが、使用中のファイルはスキップする事になります。そこで、次のコマンドを利用してすべてのファイルを圧縮させる事ができます。

compact.exe /CompactOS:always

Program Files フォルダをコマンドラインで圧縮する場合は、次のコマンドを利用します。

compact.exe /c /a /i /s:"C:\Program Files"

他にもリード・オンリーのフォルダがあれば積極的に圧縮しましょう。たとえば、Python の仮想環境フォルダ、プロファイルフォルダ直下の anaconda3 仮想環境フォルダは、開発者でない限り典型的なリード・オンリーフォルダです。圧縮してしまいましょう。もちろん、インストール作業は遅くなりますが。

メモリが足りない

ネット上の情報では逆の紹介をされる事が多いのですが、まずは仮想メモリをちゃんと確保しましょう。基本的にスワップファイルが速度低下する可能性があるのは、ハードディスクの省電力機能が発動した時だけです。そして SSD上に作りましょう。起動時だけメモリが足りずにアプリを利用できないというトラブルを避けられます。

仮想メモリ設定

次に、メモリの圧縮機能と先読み機能(WindowsのSysmainサービス)を省メモリ方向へ調整します。PowerShell を管理者権限で起動し、Get-MMAgent とします。

GetMMAgent
  • ストアアプリの先読み停止(ApplicationPreLaunch)

  • メモリ圧縮の有効化(MemoryCompression)

  • ページ・コンバイニングの有効化(PageCombining)

Disable-MMAgent -ApplicationPreLaunch
Enable-MMAgent -MemoryCompression
Enable-MMAgent -PageCombining

ここでページ・コンバイニングは、WSL等の仮想環境においてかなりの省メモリ効果を出しますが、場合によっては速度低下を招きがちですので注意しましょう。ガーベジコレクションのように、一定期間でメモリをチェックして重複部を削除する機能です。

まとめ

以上で終了です。

筆者は Windows はカスタマイズせずにデフォルト・Microsoft 標準で利用するというスタンスなのですが、「足りない」という問題だけは仕方なく手を加えています。

この記事が気に入ったらサポートをしてみませんか?