Ext4 のジャーナルモードと性能
概要
Ext4のジャーナルモードごとの性能を測りました.
data=journalにすると書込性能が非常に低くなりました.
orderedとwritebackは 大差なかったです.
結果
計測方法は後述


data=journal にすると,書込性能が低くなる.
Ext4とジャーナリングモード
Ext3やExt4はジャーナリング機能があります.
公式文書
ファイルのメタデータは,必ずジャーナルされます.
ファイルのデータに関しては,journal, ordered, writeback の3個のモードがあります.
初期設定はordered
journalモード: データもジャーナルされます.
orderedモード: データはジャーナルされません.ただし,メタデータがジャーナルにコミットされる前に,データはメインファイルシステムに書かれます.順序が保証されます.
writebackモード: データはジャーナルされません.順序も保証されません.
書き込み速度は、遅い順にjournal, order, writebackとなるはずです.
モードはmount時に指定します.例えば
mount -o data=journal /dev/sdb /mnt
計測方法
fioを用いてシーケンシャルアクセスをしました.
fioファイル
[job]
rw=read
size=16g
filename=/mnt/abc
direct=0
bs=1m
[job]
rw=write
size=16g
filename=/mnt/abc
direct=0
bs=1m
ベンチマーク実行シェルスクリプト
(fioを各設定で2回実行)
for opt in journal ordered writeback
do
echo ${opt}
mount -o data=${opt} /dev/sdb /mnt/
mount | grep sdb > result.${opt}.txt
for i in `seq 0 1`
do
echo ${i}
fio r.fio > result.${opt}.r.${i}.txt
fio w.fio > result.${opt}.w.${i}.txt
done
umount /mnt/
done
計測環境
CPU: Intel Core i7-3770 CPU @ 3.40GHz.4 cores,8 threads,ベース周波数 basic clock rate 3.40 GHz
CPUクロックレート: 3.4GHz
OS: Ubuntu 20.04.3 LTS, desktop, Linux 5.15.25
Memory: 16 GB
HDD: Seagate Barracuda 7200.9, ST3808110AS
Filesystem: Ext4
FIO: fio-3.16
おまけ
結果整理のシェルスクリプト
grep READ result.* | sed "s/:/ /" > _all.txt
grep WRITE result.* | sed "s/:/ /" >> _all.txt
sort < _all.txt | sed -r 's/bw=/bw= /' | sed -r 's/MiB/ MiB/' > all.txt
rm _all.txt
今後の展開
ランダムライトの性能も測りたいです