SSD に優しい設定ってなんだろう?

2020/04/19

後輩から 1 万円で買った VAIO Type P (VGN-P90NS)
とりあえず軽量 Linux がいいだろうなと思い、Lubuntu 13.10 を入れた。
5年前の機種の SSD なんで少し労ろうかなと思って色々調べながら設定してみる。
ハッキリ言えばディスクへの書き込み回数を減らす事をやればいいのだろう。

swap をディスクに書き込まないようにする

Lubuntu 13.10 では swap 領域が最初から zram が使われていた。 zram とはメモリ内に圧縮領域が作れる。つまり圧縮された swap
を扱うことができる。Fedora 19 では使われてなかったので、恐らく軽量 Linux では古い PC に入れられる事を想定していて最初から zram
を使うようになってるのではないかな?と予想。 これはディスクの swap は要らない気がするのでとりあえずオフる。

エディタで /etc/fstab を開き、自動マウントをオフる(noauto をつける)。

UUID=d90e2864-9acc-4467-a4a4-42c1307070c8 none            swap sw,noauto 0 0

そもそも swap しにくくする

時々 free を叩いてみていると、「あれ?いつ swap 使ったんだろ?」という時がある。メモリを使い切ったら swap
を使うのではなく、Kernel がある頻度で swap を使うようにしているかららしいんだけど。

Wikipedia – Swappinessを参考にすると、swappiness が 0 に近い程ページアウトしにくい模様。

現在の値を確認する。

$ cat /proc/sys/vm/swappiness
60

ここでは 60 と設定されている。

次に Kernel パラメータを設定するファイル /etc/sysctl.conf をエディタで開き、ピーキー過ぎないようにとりあえず 10 にするため、次を追記する。

vm.swappiness = 10

SSD へのバッファキャッシュ書き込み間隔を調整する

ネットで調べると、バッファキャッシュ書き込み間隔を調整するというのが多い。
PostgreSQL のチューニング(checkpoint_segments)でも似たような事したことあったけど、ディスクへの書き込みをまとめて行うと、粒度さえ適切なら速度が向上し、電力消費にも優しいと思う。引いては SSD に優しいと言えるのかな?
とりあえず、クライアントマシンなのでそんなにディスク書き込みは行われない。ましてや Type P はそういう用途で使わない。そのためバッファキャッシュ書き込み間隔を長くする。

ちなみに、バッファキャッシュの書き込みは pdflush が行っているよう。
このページが理解し易かった。

キャッシュバッファの制御

現在の値を確認する。

$ cat /proc/sys/vm/dirty_writeback_centisecs 
500

5 秒間隔で書き込まれているらしい。
間隔を長くすると障害時にデータ喪失とか考えられるが、前述の通り、そんな用途では使わないので、とりあえず
1 分間隔ぐらいにして様子をみる。 Kernel
パラメータを設定するファイルを開く。

Kernel パラメータを設定するファイル /etc/sysctl.conf をエディタで開き、次を追記する。

vm.dirty_writeback_centisecs = 6000

/tmp を tmpfs にする

tmpfs とは、メモリ上に作るファイルシステム。 fedora 19 では /tmp はデフォルトで tmpfs だったのだけど、Lubuntu では違うみたい。/tmp は
LibreOffice とかアプリケーションを開くと使われる。割と頻繁に書き込みがあるところなので tmpfs に変更する。

/etc/fstab をエディタで開き、次のように修正。

/tmp を tmpfs にする。メモリを使いすぎが怖いので、32M で制限した。使っていて足りなかったら上限値を増やそう。

tmpfs /tmp tmpfs rw,size=32m 0 0

ファイルアクセス時の最終アクセス時刻更新を停止する

昔々、HDD のパフォーマンスチューンでは当たり前の作業だったな。
少しでもディスクアクセスを減らして早くしようと躍起だった。ナツい。

/etc/fstab をエディタで開き、次のように noatime をつける。

UUID=87d8870e-4ad0-4d59-9303-5921e0f6a8f2 /               ext4 noatime,errors=remount-ro 0 1

mlocate の頻度を変更する

locate はファイルを高速で検索するコマンド。mlocate は locate
コマンドのデータベースを作成しているもので、cron.daily
に入っている。これを cron.monthly にでも入れておこう。

sudo mv /etc/cron.daily/mlocate /etc/cron.monthly/

Firefox のキャッシュを tmpfs にする

ブラウザのキャッシュなんて、毎回消えていいなーっと思っているので、
/etc/fstab をエディタで開く。

PC を 1 回起動で 100M もあればいいだろう。多分。

tmpfs /home/ユーザー名/.cache/mozilla tmpfs rw,size=100m 0 0

今あるキャッシュは削除して再起動。

sudo rm -rf /home/ユーザー名/.cache/mozilla/firefox

/var/log を tmpfs にする

そもそもクライアントマシン、振り返ってのログなんて殆んど見ない。
エラーが起きたその時に見れればいいのでメモリに出す。

  1. リカバリモードで起動する

Ubuntu 12.04 リカバリーモードで起動する
を参考にした。

  1. /var/log を削除
rm -rf /var/log
  1. ログを 32M 上限で設定。

/etc/fstab をエディタで開き、次のように設定した。

tmpfs /var/log tmpfs rw,size=32m 0 0

他にもあったら付け足そう。