Table of Contents

Guest performance

Tips

The best results for Windows guest:

todo

Ext4 is extremely slow on RBD block device.

SSD emulation enabled, discard support enabled, SCSI single controller, IO thread.

Guest Kernel 6.0.

BTRFS detects SSD and use: single data, duplicated system and metadata.

Simple and fast test show huge difference between ext4 and btrfs.

fio --name=fiotest --directory=./2ext4 --size=256m --rw=randrw --bs=4K --direct=1 --ioengine=libaio --iodepth=64 --numjobs=4 --runtime=10s --time_based=1

Ext4 with unsafe options (barrier=0,data=writeback)

 READ: bw=981KiB/s (1005kB/s), 234KiB/s-254KiB/s (240kB/s-260kB/s), io=10.5MiB (11.0MB), run=10981-10991msec
WRITE: bw=1030KiB/s (1055kB/s), 251KiB/s-266KiB/s (257kB/s-273kB/s), io=11.1MiB (11.6MB), run=10981-10991msec

Ext4 with default options:

 READ: bw=997KiB/s (1021kB/s), 242KiB/s-267KiB/s (248kB/s-274kB/s), io=10.6MiB (11.1MB), run=10583-10840msec
WRITE: bw=1048KiB/s (1073kB/s), 259KiB/s-271KiB/s (266kB/s-277kB/s), io=11.1MiB (11.6MB), run=10583-10840msec

BTRFS with default options:

 READ: bw=3281KiB/s (3359kB/s), 806KiB/s-855KiB/s (826kB/s-875kB/s), io=33.6MiB (35.3MB), run=10496-10497msec
WRITE: bw=3431KiB/s (3513kB/s), 850KiB/s-873KiB/s (870kB/s-894kB/s), io=35.2MiB (36.9MB), run=10496-10497msec

BTRFS with nodatacow:

 READ: bw=2444KiB/s (2502kB/s), 604KiB/s-619KiB/s (618kB/s-634kB/s), io=25.1MiB (26.3MB), run=10469-10501msec
WRITE: bw=2566KiB/s (2628kB/s), 629KiB/s-652KiB/s (644kB/s-668kB/s), io=26.3MiB (27.6MB), run=10469-10501msec
 READ: bw=3109KiB/s (3184kB/s), 770KiB/s-796KiB/s (789kB/s-815kB/s), io=30.0MiB (32.5MB), run=10193-10195msec
WRITE: bw=3253KiB/s (3331kB/s), 786KiB/s-847KiB/s (805kB/s-867kB/s), io=32.4MiB (33.0MB), run=10193-10195msec

BTRFS converted to SINGLE with command

btrfs balance start --force -sconvert=single -mconvert=single ./1btrfs/
 READ: bw=3126KiB/s (3201kB/s), 755KiB/s-815KiB/s (773kB/s-835kB/s), io=31.4MiB (32.9MB), run=10283-10286msec
WRITE: bw=3267KiB/s (3345kB/s), 793KiB/s-864KiB/s (812kB/s-884kB/s), io=32.8MiB (34.4MB), run=10283-10286msec

 READ: bw=3861KiB/s (3953kB/s), 941KiB/s-984KiB/s (964kB/s-1008kB/s), io=39.2MiB (41.1MB), run=10341-10400msec
WRITE: bw=3997KiB/s (4093kB/s), 971KiB/s-1034KiB/s (995kB/s-1059kB/s), io=40.6MiB (42.6MB), run=10341-10400msec

+ nodatacow:

 READ: bw=3911KiB/s (4004kB/s), 959KiB/s-1004KiB/s (982kB/s-1028kB/s), io=39.3MiB (41.2MB), run=10290-10295msec
WRITE: bw=4049KiB/s (4147kB/s), 993KiB/s-1039KiB/s (1016kB/s-1064kB/s), io=40.7MiB (42.7MB), run=10290-10295msec
 READ: bw=3879KiB/s (3972kB/s), 941KiB/s-1001KiB/s (963kB/s-1025kB/s), io=38.3MiB (40.2MB), run=10110-10114msec
WRITE: bw=4028KiB/s (4125kB/s), 976KiB/s-1041KiB/s (999kB/s-1066kB/s), io=39.8MiB (41.7MB), run=10110-10114msec