@@ -12,6 +12,7 @@ import (
12
12
"time"
13
13
14
14
"github.com/cockroachdb/pebble/internal/compression"
15
+ "github.com/cockroachdb/pebble/sstable/block"
15
16
"github.com/cockroachdb/pebble/sstable/block/blockkind"
16
17
)
17
18
@@ -95,19 +96,69 @@ func (c Compressibility) String() string {
95
96
}
96
97
}
97
98
98
- var Settings = [... ]compression.Setting {
99
- compression .Snappy ,
100
- compression .MinLZFastest ,
101
- compression .MinLZBalanced ,
102
- compression .ZstdLevel1 ,
103
- compression .ZstdLevel3 ,
99
+ var Profiles = [... ]* block.CompressionProfile {
100
+ {
101
+ Name : "Snappy" ,
102
+ DataBlocks : compression .Snappy ,
103
+ ValueBlocks : compression .Snappy ,
104
+ OtherBlocks : compression .Snappy ,
105
+ MinReductionPercent : 0 ,
106
+ },
107
+
108
+ {
109
+ Name : "MinLZ1" ,
110
+ DataBlocks : compression .MinLZFastest ,
111
+ ValueBlocks : compression .MinLZFastest ,
112
+ OtherBlocks : compression .MinLZFastest ,
113
+ MinReductionPercent : 0 ,
114
+ },
115
+
116
+ {
117
+ Name : "MinLZ2" ,
118
+ DataBlocks : compression .MinLZBalanced ,
119
+ ValueBlocks : compression .MinLZBalanced ,
120
+ OtherBlocks : compression .MinLZBalanced ,
121
+ MinReductionPercent : 0 ,
122
+ },
123
+
124
+ {
125
+ Name : "Zstd1" ,
126
+ DataBlocks : compression .ZstdLevel1 ,
127
+ ValueBlocks : compression .ZstdLevel1 ,
128
+ OtherBlocks : compression .ZstdLevel1 ,
129
+ MinReductionPercent : 0 ,
130
+ },
131
+
132
+ {
133
+ Name : "Auto1" ,
134
+ DataBlocks : compression .ZstdLevel1 ,
135
+ ValueBlocks : compression .ZstdLevel1 ,
136
+ OtherBlocks : compression .MinLZFastest ,
137
+ AdaptiveReductionCutoffPercent : 30 ,
138
+ MinReductionPercent : 0 ,
139
+ },
140
+
141
+ {
142
+ Name : "Zstd3" ,
143
+ DataBlocks : compression .ZstdLevel3 ,
144
+ ValueBlocks : compression .ZstdLevel3 ,
145
+ OtherBlocks : compression .ZstdLevel3 ,
146
+ MinReductionPercent : 0 ,
147
+ },
148
+
149
+ {
150
+ Name : "Auto3" ,
151
+ DataBlocks : compression .ZstdLevel3 ,
152
+ ValueBlocks : compression .ZstdLevel3 ,
153
+ OtherBlocks : compression .MinLZFastest ,
154
+ AdaptiveReductionCutoffPercent : 30 ,
155
+ MinReductionPercent : 0 ,
156
+ },
104
157
// Zstd levels 5+ are too slow (on the order of 15-20MB/s to compress) and
105
158
// don't usually offer a very large benefit in terms of size vs. level 3.
106
- // compression.ZstdLevel5,
107
- // compression.ZstdLevel7,
108
159
}
109
160
110
- const numSettings = len (Settings )
161
+ const numProfiles = len (Profiles )
111
162
112
163
// Buckets holds the results of all experiments.
113
164
type Buckets [blockkind .NumKinds ][numBlockSizes ][numCompressibility ]Bucket
@@ -116,12 +167,12 @@ type Buckets [blockkind.NumKinds][numBlockSizes][numCompressibility]Bucket
116
167
// compressibility.
117
168
type Bucket struct {
118
169
UncompressedSize Welford
119
- Experiments [numSettings ] PerSetting
170
+ Experiments [numProfiles ] PerProfile
120
171
}
121
172
122
- // PerSetting holds statistics from experiments on blocks in a bucket with a
173
+ // PerProfile holds statistics from experiments on blocks in a bucket with a
123
174
// specific compression.Setting.
124
- type PerSetting struct {
175
+ type PerProfile struct {
125
176
CompressionRatio WeightedWelford
126
177
// CPU times are in nanoseconds per uncompressed byte.
127
178
CompressionTime WeightedWelford
@@ -133,8 +184,8 @@ func (b *Buckets) String(minSamples int) string {
133
184
tw := tabwriter .NewWriter (& buf , 2 , 1 , 2 , ' ' , 0 )
134
185
135
186
fmt .Fprintf (tw , "Kind\t Size Range\t Test CR\t Samples\t Size\t " )
136
- for _ , s := range Settings {
137
- fmt .Fprintf (tw , "\t %s" , s . String () )
187
+ for _ , p := range Profiles {
188
+ fmt .Fprintf (tw , "\t %s" , p . Name )
138
189
}
139
190
fmt .Fprintf (tw , "\n " )
140
191
for k := range blockkind .All () {
@@ -190,13 +241,13 @@ func stdDevStr(mean, stddev float64) string {
190
241
func (b * Buckets ) ToCSV (minSamples int ) string {
191
242
var buf strings.Builder
192
243
fmt .Fprintf (& buf , "Kind,Size Range,Test CR,Samples,Size,Size±" )
193
- for _ , s := range Settings {
194
- fmt .Fprintf (& buf , ",%s CR" , s . String () )
195
- fmt .Fprintf (& buf , ",%s CR±" , s . String () )
196
- fmt .Fprintf (& buf , ",%s Comp ns/b" , s . String () )
197
- fmt .Fprintf (& buf , ",%s Comp±" , s . String () )
198
- fmt .Fprintf (& buf , ",%s Decomp ns/b" , s . String () )
199
- fmt .Fprintf (& buf , ",%s Decomp±" , s . String () )
244
+ for _ , p := range Profiles {
245
+ fmt .Fprintf (& buf , ",%s CR" , p . Name )
246
+ fmt .Fprintf (& buf , ",%s CR±" , p . Name )
247
+ fmt .Fprintf (& buf , ",%s Comp ns/b" , p . Name )
248
+ fmt .Fprintf (& buf , ",%s Comp±" , p . Name )
249
+ fmt .Fprintf (& buf , ",%s Decomp ns/b" , p . Name )
250
+ fmt .Fprintf (& buf , ",%s Decomp±" , p . Name )
200
251
}
201
252
fmt .Fprintf (& buf , "\n " )
202
253
for k := range blockkind .All () {
0 commit comments