1. 概要
- ZFSファイルシステムのキャッシュ(ARC)で発生するスラッシング現象について、定義、診断、対処、予防策を整理
2. ZFS ARCスラッシングの定義
- 概念: キャッシュヒット(Hit)の連続失敗により、頻繁なキャッシュアイテムの置き換え(Eviction)が発生し、かえってシステム性能が低下する現象
- 影響: 高性能I/O環境(例: データベースサーバー)で深刻なサービス障害を引き起こす可能性
3. 主な診断症状
- CPU
iowait の値が20%以上で継続
- CPU
system mode 使用率が平常時より増加
- キャッシュヒット率(Hit rate)の低下(平常時データとの比較が必要)
- 中核症状:
arc_prune, arc_evict カーネルスレッドのCPU占有率が90%以上ならスラッシングは確実
4. 緊急対応策
- 措置: Linuxファイルシステムキャッシュの手動削除
- コマンド:
echo 3 > /proc/sys/vm/drop_caches
- 効果: ページキャッシュおよびslabオブジェクトをまとめて削除
- 特徴:
- ディスクに未反映のデータ(dirty item)は保持されるため、データ損失はない(非破壊的)
- 実行直後はキャッシュが再度満たされるまで、一時的な性能低下が発生
5. 根本的な予防
- 原因: システムワークロードに対して割り当てられたARCキャッシュサイズが不足しているため
- ARCサイズ(
zfs_arc_max):
- デフォルト値がすでにシステムメモリの1/2(Linux基準)と非常に大きい
- 他のアプリケーションとのメモリ競合を引き起こす可能性があり、むやみに増やしにくい
- 解決策:
- 他のアプリケーションのメモリ使用量が高い場合、
zfs_arc_max の値を下げて競合を防止
- 根本的な問題解決には、物理メモリの増設(Scale-up)が最も確実な方法
まだコメントはありません。