Peng's Blog

Peng's Blog

马上订阅 Peng's Blog RSS 更新: https://pengs.top/atom.xml

btrfs各压缩等级速率测试脚本,选择最适合你的压缩级别

2025年8月8日 08:27

btrfs透明压缩值得尝试

之前我们写过btrfs快照的使用,不得不说,btrfs是一个非常先进的文件系统(至少在设计理念上是的)。

除了快照,btrfs的另外一个高级特性是透明压缩,强调透明是由于压缩的过程由文件系统完成,而用户以及应用无感。这就是接口抽象的意义。

透明压缩有诸多好处,引用Arch wiki:

Btrfs 支持透明自动压缩,这不仅能缩减文件体积,还能通过减弱写入放大效应显著延长闪存介质的使用寿命。
在某些情况下(例如单线程繁重文件 I/O 时),压缩可以提升性能,但在其他场景中(如多线程或高 CPU 占用并涉及大量文件读写的任务),性能则会明显下降。
通常采用压缩算法越快(zstd 和 lzo)性能越好,一些基准测试提供了详细的性能对比数据。

简而言之,优点是省地方,对SSD友好,缺点是会降低一定的吞吐量,以及会占用CPU资源,可是在SSD速度已经很充足,CPU性能总是过剩的现在,这点缺点算不了什么。

所以很值得尝试。

确实很值得“尝试”

btrfs给用户提供了zlib(类似zip),lzozstd三个可选算法。

对于压缩级别,zlib:1~9;zstd:-15~-1、1~15,需为整数。

所以理论上有25种尝试组合(忽略zstd的负值,lzo无法设置等级)

手动尝试耗时耗力还不准确,所以我万能的Gemini又下场了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/zsh
set -e

trap 'umount -q /mnt; rmmod brd' INT TERM

# 依赖检查
check_dependency...

剩余内容已隐藏

查看完整文章以阅读更多