I ran compsize on my debian box. Most files on my btrfs drive are around 20 GB. Almost all are uncompressed. I have 6000 files and 221000 regular extents.
Is that too much fragmentation? The ideal case is 1 extent per file.
I am reading around 100 MiBps from the drive out of a theoretical max of ~119 MiBps on a 1 Gbps line.
edit: On a local read I am getting 130-150 MiBps which exceeds the 1 Gbps network. pv /path/to/file >/dev/null
edit 2: For reference, this is a WD Red 6TB drive from around 2018-2020. Max speed should be in the 200 - 250 MBps range.
I defragged a ~300 GB folder and deleted some unneeded files. Extents per file actually went up, but I think that’s because the remaining files are heavily fragmented (many 70+ extents per file). Somewhat surprisingly, most/all of the defragged files still had 3-10 extents. Each file is under 2 GB.
Before: ~35 extents per file. After: 55 extents per file.
compsize /path/to/folder
Processed 2648 files, 145287 regular extents (145287 refs), 1 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 99% 1.5T 1.5T 1.5T
none 100% 1.5T 1.5T 1.5T
zstd 19% 236M 1.1G 1.1G


Note: BTRFS defrag will result in a different copy at the end of the day. If you’re using snapshots this will lead to increased utilization.