自由帳

とりとめのない学習メモです。主に Web サービスのシステム基盤や運用に関することを書いています

さくらのVPS 512のFreeBSDでZFSのメモリ設定

はじめに

さくらのVPS 512のFreeBSDZFSを使ってますが、動作しているプロセスでメモリ使用量が高いものはないにもかかわらずメモリ使用率が高く、どうもZFSがメモリを多量に消費してswapが多発いるようでした。
その際に対応した内容を記載します。

カーネルZFSのメモリパラメータの見直し

カーネルに割り当てるメモリと ZFS のキャッシュに割り当てるメモリの2つを調整します。

カーネルパラメータの見直し

1GBの物理メモリがある状態では、FreeBSDカーネルに割り当てられるメモリはデフォルトでは以下でした。


> sysctl -a | grep vm.kmem_size
vm.kmem_size_scale: 1
vm.kmem_size_max: 1319413950874
vm.kmem_size_min: 0
vm.kmem_size: 1017532416

カーネルに割り当てるメモリとその最大値を物理メモリを超えない範囲で設定しておきます。いろいろ状態を見ながら、以下のように/boot/loader.confへ追記しました。


vm.kmem_size="330M"
vm.kmem_size_max="512M"
ZFSのメモリチューニング

ZFSのARCに割り当てられるメモリはデフォルトでは以下でした。


vfs.zfs.arc_min: 79494720
vfs.zfs.arc_max: 635957760

ZFS ARCに割り当てるメモリの最大値とキャッシュに割り当てるサイズを調整しておきます。いろいろ状態を見ながら、以下のように/boot/loader.confへ追記しました。


vfs.zfs.arc_max="64M"
vfs.zfs.vdev.cache.size="4M"
一般的な設定

最後にZFSの一般的な以下の設定を/boot/loader.confへ追記しました。


vfs.zfs.prefetch_disable="1"
vfs.zfs.txg.timeout="5"
kern.maxvnodes="250000"
vfs.zfs.write_limit_override="1073741824"

おわりに

今のところこれでだいぶ安定していますが、しばらく状態を見ながら必要に応じてパラメータをいじっていこうと思います。

参考