Ext4 のジャーナルモードと性能

概要

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

結果

計測方法は後述

シーケンシャルアクセス Bandwidth (平均)
シーケンシャルアクセス Bandwidth

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

今後の展開

ランダムライトの性能も測りたいです

この記事が気に入ったらサポートをしてみませんか?