[Linux][Ext4][Zabbix] ext4 ファイルシステムのI/Oバリアを無効化する。

2014/01/03 10:04AIX、UNIX、Linux,zabbixbarrier,ext4,file system,linux,zabbix,バリア,ファイルシステム

最近自宅のZabbix環境においては一連のZabbixへのチューニングのおかげか、CPU Utilizationが10%程度で推移し安定するようになってきました。

しかしながら、相変わらず負荷が少ない状況で10%程度の負荷がかかるのもどうなのかと思い、さらにチューニング出来ないか調査してみました。

で、調べてみるとどうやらそもそもext4ファイルシステム自体が遅いということが分かりました。

遅い理由はジャーナリングファイルシステムが故に、ディスクへのコミットメントまでのコストが高いせいで、そのオーバーヘッドの分、パフォーマンスが犠牲になっているということです。

CAUTION

しかしながら信頼性を担保するものなので、そのメリット・デメリットを理解した上で、利用することが必要です。

#barrier=<0|1(*)>  This enables/disables the use of write barriers in
#barrier(*)       the jbd code.  barrier=0 disables, barrier=1 enables.
#nobarrier     This also requires an IO stack which can support
#           barriers, and if jbd gets an error on a barrier
#            write, it will disable again with a warning.
#           Write barriers enforce proper on-disk ordering
#         of journal commits, making volatile disk write caches
#          safe to use, at some performance penalty.  If
#          your disks are battery-backed in one way or another,
#           disabling barriers may safely improve performance.
#         The mount options "barrier" and "nobarrier" can
#            also be used to enable or disable barriers, for
#            consistency with other ext4 mount options.
barrier=<0|1(*)>  jbd コードでのライトバリアの利用を有効/無効にします。
barrier(*)     barrier=0 は無効化し、barrier=1 は有効にします。こ
nobarrier        のライトバリアの有効化のためにはバリアを有効化した
IO スタックが必要で、さらに jbd がバリアライト時に
エラーを受けたならば警告とともに無効にもどります。ラ
イトバリアは多少の性能の犠牲により、適切なディスク上
のジャーナルコミットの順序を実現し、揮発性のディスク
ライトキャッシュを安全に使用できるようにします。
もし使用しているディスクコントローラが電池でバック
アップされているなどの場合には、バリアを無効化する
ことにより安全に性能を向上できます。
マウントオプション "barrier" と "nobarrier" をバリ
アの有効無効を指定するために用いることができます。こ
のオプションは、他の ext4 マウントオプションとの一貫
性維持のため提供されています。

21.2. 書き込みバリアを有効または無効にする
電源供給の停止が発生した場合のデータ破損のリスクを軽減するためバッテリー駆動の書き込みキャッシュを使用するストレージデバイスがあります。 一般的にはハイエンドのアレイや数種のハードウェアコントローラではバッテリー駆動の書き込みキャッシュを使用しています。 ただし、 キャッシュの揮発性がカーネルには見えないため、 Red Hat Enterprise Linux 6 ではデフォルトで対応している全ジャーナリングファイルシステム上の書き込みバリアを有効にしています。

21.2. 書き込みバリアを有効または無効にする
zabbix_load.png

自宅環境ではノートPC上のKVMの仮想マシンとして動作しているので、電源断によるすぐのデータ消失の危険性は少ないことから、IOバリアを無効化してみました。
すると以下の様な感じで、io wait timeが大幅に改善することが確認できました。

数値的には2~3%程度まで改善することが分かりました。

CAUTION

しかし繰り返しになりますが、IOバリアを無効化することでジャーナリングファイルシステムとしての信頼性が確保できなくなるので、そのデメリットを理解した上で利用することが大事だと思います。

この記事を書いた人
kometchtech

kometchtech
うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。
Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

Buy Me A Coffee