6.5. SSD Optimization
Using the btrfs file system can optimize SSD. There are two ways this can be done.
The first way is
mkfs.btrfs
turns off metadata duplication on a single device when /sys/block/device/queue/rotational
is zero for the single specified device. This is equivalent to specifying -m single
on the command line. It can be overridden and duplicate metadata forced by providing the -m dup
option. Duplication is not required due to SSD firmware potentially losing both copies. This wastes space and is a performance cost.
The second way is through a group of SSD mount options:
ssd
, nossd
, and ssd_spread
.
The
ssd
option does several things:
- It allows larger metadata cluster allocation.
- It allocates data more sequentially where possible.
- It disables btree leaf rewriting to match key and block order.
- It commits log fragments without batching multiple processes.
Note
The
ssd
mount option only enables the ssd option. Use the nossd
option to disable it.
Some SSDs perform best when reusing block numbers often, while others perform much better when clustering strictly allocates big chunks of unused space. By default,
mount -o ssd
will find groupings of blocks where there are several free blocks that might have allocated blocks mixed in. The command mount -o ssd_spread
ensures there are no allocated blocks mixed in. This improves performance on lower end SSDs.
Note
The
ssd_spread
option enables both the ssd
and the ssd_spread
options. Use the nossd
to disable both these options.
The
ssd_spread
option is never automatically set if none of the ssd options are provided and any of the devices are non-rotational.
These options will all need to be tested with your specific build to see if their use improves or reduces performance, as each combination of SSD firmware and application loads are different.