I/O、メモリ、CPU使用率……会社の重たい Windows 7 を軽くするのに効果があったこと

32bit メモリ4GB Windows7 というシビアな環境で開発を頑張らないといけないマンの話。

前提

  • Windows 7 32bit

方針

  • I/O 処理が重くならないよう I/O 対象(つまりはファイル)を減らす
  • メモリの空きがなくなるとページングが発生して処理が遅くなるので、 メモリの空きがなくならないようにする
  • CPU が使用されると他の処理に回せなくなるので CPU 使用率を使うプロセスを抑える

ごみ箱を空にする(I/O)

20 GB くらいあったので空にした。何十分かかったか。

(効果) 全体的に動作が軽くなった気がする

%temp% 内の一時ファイル/フォルダを削除する(I/O)

サイズは不明だが 10000 以上のファイルがあったようで、これも削除に何十分かかったか。

(効果) 全体的に動作が軽くなった気がする

Firefox 系

Firefox Quantum になってからメモリがとにかく枯渇しやすくなった。Win7 32bit ではビットの制約的にメモリは 4GB しか使えず、その上、システムの予約分や仕様も含めると、実質 3GB ちょっとくらいしか使えないのだが、 Quantum は平気で GB 単位のメモリを食う ので正直苦しい。

集中的に改善することにした。

履歴を削除する(I/O と メモリ と CPU)

アドレスバーから検索してアクセスするために、私は履歴はあえて消していない。結果として数年分の履歴が丸ごと保存されている事態になっており、Firefox が起動後数十秒くらい CPU 使用率を食いまくるという現象が起きていた(たぶん起動時に履歴データを先に全部読むんだと思う)。(測ってないので気のせいかもしれないが)メモリも 0.2~0.3 GB くらいは食っていた。

というわけで、不便なのを承知で、思い切って削除してみた。10 分くらいだろうか、CPU フル回転で削除が走った。

(効果) 起動時の CPU 使用率は数秒で済むようになった。メモリも(測ってないので気のせいかもしれないが)0.2~0.3 GB くらい少なくなったと思う。少し不便(普段アドレスバーから履歴を検索していたのができなくなった)になったが、ブックマークに入れておけば検索できるので大した手間ではない。それに大体ググっちゃうし。

定期的にメモリ解放する(メモリ)

Firefox には about:memory というメモリ管理機能がある。

about:config と同様、アドレスバーに打ち込めばアクセスできる。

この機能の以下を使うと、メモリを解放したり使用量を抑えたりできるので、定期的に使う。タブ一つとして常に開いておくのが良いか。

  • Free memory > GC
  • Free memory > Minimize memory usage

(効果) 特に既にフルフルで動かしている Firefox のメモリ使用量が 0.2~0.4 GB くらい減る。

ページング回避のため関連するアプリを固めて実行する(メモリ)

これは設定というよりもタスク管理の領分になるが、 色んなアプリをテキトーに使い分けているとメモリが不足するので、「このタイミングではこのアプリを使う」というふうに時間帯で区切る というやり方である。

私の場合、PC では以下を使う。

  • (1) Visual Studio Code など IDE 系
  • (2) Firefox などブラウザ系
  • (3) メーラーや IM などコミュニケーションツール
  • (4) PDF, Excel/Word などオフィス文書系

すべてを起動するとメモリが足らないので、1~4 をすべて立ち上げて切り替えていると、どこかのタイミングでページング(メモリ不足に伴う仮想メモリ使用)が発生してしまう、十数秒くらい待たされてしまう。

この問題を防ぐために、1~4 をいつ使うか、をタスク管理などで工夫する。

私の場合、3 と 4 は一日一回だけ実行するようにして、実行した後はすべて終了させている。幸いにも 3 などでリアルタイム性が要求される仕事ではないので、これでも仕事は回る。いわゆる逐次処理ではなくバッチ処理にしている、というべきか。