2021-04-05

Linux のページアウトと Firefox のディスクキャッシュ

 スワップアウトが発生するとすごく気にしてしまう性格です。日々、精神衛生を保つためになんとかスワップアウトが発生しないように精進しています。

物理メモリーは 16GB を搭載していて、メモリー使用率が 50% を超えないくらいなのにスワップアウトが発生すると気になって仕方がありません。

以下のようなコマンドでメモリーの使用状況を確認してみました。

free -hw 

cat /proc/meminfo

sudo slabtop -o --s=c

そうすると、ext4_inode_cache が非常に多くのメモリーを専有しているようです。1GB 近くでしょうか。

Firefox のディスクキャッシュは SSD を使うような指定になっているのですが、ディスクキャッシュには小さいファイルがたくさん格納されていると思われ、これが ext4_inode_cache が膨れる理由ではないかと思いました。

調べてみると、tmpfs では ext4_inode_cache が使用されないような情報を見つけたので、試してみることにしました。


 というわけで、Firefox のディスクキャッシュ保存先を調整してみることにしました。

・無効化
Firefox の設定でディスクキャッシュを無効化します。その代わりにメモリー上のキャッシュサイズを非常に大きく設定します。(これは試してみていません)

・tmpfs
tmpfs は Windows でいうところの RAMDISK なので、実態としては物理メモリー上にキャッシュ情報を保存することになります。

・SSD
これがワタシの現在の設定でした。

・HDD
SSD よりも遅いディスク装置です。


ディスクキャッシュ無効化tmpfsSSDHDD
メモリー使用量多い多い少ない少ない
速度速い速いやや速いやや遅い
ブラウザー終了時キャッシュが消えるキャッシュは残るキャッシュは残るキャッシュは残る
PC再起動時キャッシュが消えるキャッシュが消えるキャッシュは残るキャッシュは残る
通信量増える増える増えない増えない

表にして比較してみました。

ディスクキャッシュを無効化するとメモリー上にのみキャッシュ情報を保存するようになるのですが、Firefox を終了するとキャッシュが消えて無くなってしまうので、 せっかく「艦これ」サーバーからダウンロードしたキャッシュ情報が無くなってしまうので、再度サーバーからダウンロードすることになってしまいます。(艦これ?)

ワタシは PC をスタンバイで運用しているため、tmpfs 方式だとしばらくの間はキャッシュが残るため、この方式を試してみました。
SSD に比べると動作が機敏になりました。お、スゴイ、と思ったもののキャッシュにデータが存在しない時はサーバーへ通信が発生し、意外とキャッシュに保存しているデータは再利用されているんだな、と痛感しました。

そして、最後に試したのが旧来の HDD 方式です。tmpfs を試してみて動作の高速化はちょっとうれしかったんですが、それよりも PC を再起動してもキャッシュが残っている方がワタシにとってはメリットなんだと感じたためです。(艦これのサーバーにもやさしい)
今更ながら、SSD は HDD に比べるとディスクの寿命が短いということもあり、HDD でもそんなに致命的に遅さは感じなかったため、現在は HDD 方式に落ち着いています。

(後日)
やはり HDD から SSD に戻しました。HDD のアクセス音が気になり出したのと、なんか CPU 使用率が上がった感じがするのと、たまにゴリゴリと大量のアクセスが発生することが増えた気がするためです。