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

AIX、UNIX、Linuxzabbix
ext4 ファイルシステムで I/O バリア (I/O barrier) を無効にする - yet another pudding
ext4 ファイルシステムの速度について時に不満はないのだけどカンタンにチューンできるのならやってみようと調べてみたら、 I/O バリア機能を無効にすれば良いとの情報がある。 例えば以下のような。 DB2 Express-C 10.1 fo...

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

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

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

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

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

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

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

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

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

IT技術者なら知っておきたい ストレージの原則と技術
IT技術者なら知っておきたい ストレージの原則と技術
この記事を書いた人

kometchtech

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

kometchtechをフォローする
タイトルとURLをコピーしました