Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Sharing some statistics about BTRFS compression
Author: Solène
Date: 21 September 2022
Tags: btrfs filesystem
Description:
# Introduction
As I'm moving to Linux more and more, I took the opportunity to explore
the BTRFS file system which was mostly unknown to me.
Let me share some data about compression ratio with BTRFS (ZFS should
give similar results).
# Work laptop
## First data
This is my work computer with a big Nix store, and some build programs
involving a lot of cache files and many git repositories.
```
Processed 3570629 files, 894690 regular extents (1836135 refs), 2366783 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 61% 55G 90G 155G
none 100% 35G 35G 52G
zlib 37% 20G 54G 102G
prealloc 100% 138M 138M 67M
```
The output reads that the real disk usage is 61%, so 39% of the disk
compressed data. We have more details per compression algorithm about
the content, `none` represents uncompressed data and `zlib` the files
compressed using this algorithm.
Files compressed with zlib are down to 37% of their real size, this is
not bad. I made a mistake when creating the BTRFS mount point: I used
zlib compression algorithm which is quite obsolete nowadays. For
history record, zlib is the library used to provide the "deflate
compression algorithm" found in zip or gzip.
Let's change the compression to use zstd algorithm instead. This can
be changed with the command `btrfs filesystem defrag -czstd -r /`.
Basically, all files are scanned, if they can be compressed with zstd,
they are rewritten on the disk with the new algorithm.
## Data after switching to zstd
After 37 minutes of recompressing everything, the results are
surprising. It didn't change much!
```
Processed 3570427 files, 928646 regular extents (1869080 refs), 2364661 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 60% 54G 90G 155G
none 100% 33G 33G 51G
zstd 37% 21G 56G 104G
prealloc 100% 138M 138M 67M
```
Real data usage on the disk is now 60% instead of 61% with zlib, not
much of an improvement, I'd have expected zstd to perform a lot better.
However, I didn't measure compression and decompression times. zstd
should perform a lot better in this area, so I'll stick with zstd.
LinuxReviews: comparison of compression algorithms
# Personal computer
My own laptop has a huge Nix store, a lot of binaries files (music,
pictures), a few hundreads of gigabytes of video games. I suppose it's
quite a realistic and balanced environment.
```
Processed 1804099 files, 755845 regular extents (1295281 refs), 980697 inline.
Type Perc Disk Usage Uncompressed Referenced
TOTAL 93% 429G 459G 392G
none 100% 414G 414G 332G
zstd 34% 15G 45G 59G
prealloc 100% 92M 92M 91M
```
The saving due to compression is 30 GB, but this only count as 7% of
the global file system. That's not impressive compared to the other
computer, but having an extra 30 GB for free is clearly something I
enjoy.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.