From 1fd924eb31b1f75f0236b042f9bb56589db47243 Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Wed, 28 Sep 2022 12:40:00 +0200 Subject: [PATCH] zstd: Tweak decoder allocs. --- zstd/blockdec.go | 2 +- zstd/decoder.go | 2 +- zstd/decoder_test.go | 63 ++++++++++++++++++- zstd/enc_fast.go | 2 +- zstd/framedec.go | 11 +++- zstd/fuzz_test.go | 23 +++++-- zstd/testdata/fuzz/decode-corpus-encoded.zip | Bin 2088922 -> 2238161 bytes 7 files changed, 90 insertions(+), 13 deletions(-) diff --git a/zstd/blockdec.go b/zstd/blockdec.go index f52d1aed6f..da814715da 100644 --- a/zstd/blockdec.go +++ b/zstd/blockdec.go @@ -232,7 +232,7 @@ func (b *blockDec) decodeBuf(hist *history) error { if b.lowMem { b.dst = make([]byte, b.RLESize) } else { - b.dst = make([]byte, maxBlockSize) + b.dst = make([]byte, maxCompressedBlockSize) } } b.dst = b.dst[:b.RLESize] diff --git a/zstd/decoder.go b/zstd/decoder.go index 78c10755f8..74d645f7c3 100644 --- a/zstd/decoder.go +++ b/zstd/decoder.go @@ -770,7 +770,7 @@ func (d *Decoder) startStreamDecoder(ctx context.Context, r io.Reader, output ch if block.lowMem { block.dst = make([]byte, block.RLESize) } else { - block.dst = make([]byte, maxBlockSize) + block.dst = make([]byte, maxCompressedBlockSize) } } block.dst = block.dst[:block.RLESize] diff --git a/zstd/decoder_test.go b/zstd/decoder_test.go index ce37a768e6..bab352075d 100644 --- a/zstd/decoder_test.go +++ b/zstd/decoder_test.go @@ -1249,7 +1249,7 @@ func BenchmarkDecoder_DecoderReset(b *testing.B) { defer dec.Close() bench := func(name string, b *testing.B, opts []DOption, in, want []byte) { b.Helper() - buf := &bytesReader{Reader: bytes.NewReader(in), buf: in} + buf := newBytesReader(in) dec, err := NewReader(nil, opts...) if err != nil { b.Fatal(err) @@ -1298,6 +1298,11 @@ func BenchmarkDecoder_DecoderReset(b *testing.B) { } } +// newBytesReader returns a *bytes.Reader that also supports Bytes() []byte +func newBytesReader(b []byte) *bytesReader { + return &bytesReader{Reader: bytes.NewReader(b), buf: b} +} + type bytesReader struct { *bytes.Reader buf []byte @@ -1328,7 +1333,7 @@ func BenchmarkDecoder_DecoderNewNoRead(b *testing.B) { bench := func(name string, b *testing.B, opts []DOption, in, want []byte) { b.Helper() b.Run(name, func(b *testing.B) { - buf := &bytesReader{Reader: bytes.NewReader(in), buf: in} + buf := newBytesReader(in) b.SetBytes(1) b.ReportAllocs() b.ResetTimer() @@ -1372,6 +1377,60 @@ func BenchmarkDecoder_DecoderNewNoRead(b *testing.B) { } } +func BenchmarkDecoder_DecoderNewSomeRead(b *testing.B) { + var buf [1 << 20]byte + bench := func(name string, b *testing.B, opts []DOption, in *os.File) { + b.Helper() + b.Run(name, func(b *testing.B) { + //b.ReportAllocs() + b.ResetTimer() + var heapTotal int64 + var m runtime.MemStats + for i := 0; i < b.N; i++ { + runtime.GC() + runtime.ReadMemStats(&m) + heapTotal -= int64(m.HeapInuse) + _, err := in.Seek(io.SeekStart, 0) + if err != nil { + b.Fatal(err) + } + + dec, err := NewReader(in, opts...) + if err != nil { + b.Fatal(err) + } + // Read 16 MB + _, err = io.CopyBuffer(io.Discard, io.LimitReader(dec, 16<<20), buf[:]) + if err != nil { + b.Fatal(err) + } + runtime.GC() + runtime.ReadMemStats(&m) + heapTotal += int64(m.HeapInuse) + + dec.Close() + } + b.ReportMetric(float64(heapTotal)/float64(b.N), "b/op") + }) + } + files := []string{"testdata/000002.map.win32K.zst", "testdata/000002.map.win1MB.zst", "testdata/000002.map.win8MB.zst"} + for _, file := range files { + if !strings.HasSuffix(file, ".zst") { + continue + } + r, err := os.Open(file) + if err != nil { + b.Fatal(err) + } + defer r.Close() + + b.Run(file, func(b *testing.B) { + bench("stream-single", b, []DOption{WithDecodeBuffersBelow(0), WithDecoderConcurrency(1)}, r) + bench("stream-single-himem", b, []DOption{WithDecodeBuffersBelow(0), WithDecoderConcurrency(1), WithDecoderLowmem(false)}, r) + }) + } +} + func BenchmarkDecoder_DecodeAll(b *testing.B) { zr := testCreateZipReader("testdata/benchdecoder.zip", b) dec, err := NewReader(nil, WithDecoderConcurrency(1)) diff --git a/zstd/enc_fast.go b/zstd/enc_fast.go index 181edc02b6..202636db05 100644 --- a/zstd/enc_fast.go +++ b/zstd/enc_fast.go @@ -304,7 +304,7 @@ func (e *fastEncoder) EncodeNoHist(blk *blockEnc, src []byte) { minNonLiteralBlockSize = 1 + 1 + inputMargin ) if debugEncoder { - if len(src) > maxBlockSize { + if len(src) > maxCompressedBlockSize { panic("src too big") } } diff --git a/zstd/framedec.go b/zstd/framedec.go index b6c5054176..2c0affcd85 100644 --- a/zstd/framedec.go +++ b/zstd/framedec.go @@ -261,11 +261,16 @@ func (d *frameDec) reset(br byteBuffer) error { } d.history.windowSize = int(d.WindowSize) if !d.o.lowMem || d.history.windowSize < maxBlockSize { - // Alloc 2x window size if not low-mem, or very small window size. + // Alloc 2x window size if not low-mem, or window size below 2MB. d.history.allocFrameBuffer = d.history.windowSize * 2 } else { - // Alloc with one additional block - d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize + if d.o.lowMem { + // Alloc with 1MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize/2 + } else { + // Alloc with 2MB extra. + d.history.allocFrameBuffer = d.history.windowSize + maxBlockSize + } } if debugDecoder { diff --git a/zstd/fuzz_test.go b/zstd/fuzz_test.go index 22257e2fc7..aabdd427b7 100644 --- a/zstd/fuzz_test.go +++ b/zstd/fuzz_test.go @@ -50,7 +50,7 @@ func FuzzDecodeAll(f *testing.F) { }) } -func FuzzDecodeAllNoBMI2(f *testing.F) { +func FuzzDecAllNoBMI2(f *testing.F) { if !cpuinfo.HasBMI2() { f.Skip("No BMI, so already tested") return @@ -62,18 +62,20 @@ func FuzzDecodeAllNoBMI2(f *testing.F) { func FuzzDecoder(f *testing.F) { fuzz.AddFromZip(f, "testdata/fuzz/decode-corpus-raw.zip", true, testing.Short()) fuzz.AddFromZip(f, "testdata/fuzz/decode-corpus-encoded.zip", false, testing.Short()) - decLow, err := NewReader(nil, WithDecoderLowmem(true), WithDecoderConcurrency(2), WithDecoderMaxMemory(20<<20), WithDecoderMaxWindow(1<<20), IgnoreChecksum(true)) + decLow, err := NewReader(nil, WithDecoderLowmem(true), WithDecoderConcurrency(2), WithDecoderMaxMemory(20<<20), WithDecoderMaxWindow(1<<20), IgnoreChecksum(true), WithDecodeBuffersBelow(8<<10)) if err != nil { f.Fatal(err) } defer decLow.Close() // Test with high memory, but sync decoding - decHi, err := NewReader(nil, WithDecoderLowmem(false), WithDecoderConcurrency(1), WithDecoderMaxMemory(20<<20), WithDecoderMaxWindow(1<<20), IgnoreChecksum(true)) + decHi, err := NewReader(nil, WithDecoderLowmem(false), WithDecoderConcurrency(1), WithDecoderMaxMemory(20<<20), WithDecoderMaxWindow(1<<20), IgnoreChecksum(true), WithDecodeBuffersBelow(8<<10)) if err != nil { f.Fatal(err) } defer decHi.Close() + brLow := newBytesReader(nil) + brHi := newBytesReader(nil) f.Fuzz(func(t *testing.T, b []byte) { // Just test if we crash... defer func() { @@ -82,11 +84,13 @@ func FuzzDecoder(f *testing.F) { t.Fatal(r) } }() - err := decLow.Reset(io.NopCloser(bytes.NewReader(b))) + brLow.Reset(b) + brHi.Reset(b) + err := decLow.Reset(brLow) if err != nil { t.Fatal(err) } - err = decHi.Reset(io.NopCloser(bytes.NewReader(b))) + err = decHi.Reset(brHi) if err != nil { t.Fatal(err) } @@ -104,6 +108,15 @@ func FuzzDecoder(f *testing.F) { }) } +func FuzzNoBMI2Dec(f *testing.F) { + if !cpuinfo.HasBMI2() { + f.Skip("No BMI, so already tested") + return + } + defer cpuinfo.DisableBMI2()() + FuzzDecoder(f) +} + func FuzzEncoding(f *testing.F) { fuzz.AddFromZip(f, "testdata/fuzz/encode-corpus-raw.zip", true, testing.Short()) fuzz.AddFromZip(f, "testdata/comp-crashers.zip", true, false) diff --git a/zstd/testdata/fuzz/decode-corpus-encoded.zip b/zstd/testdata/fuzz/decode-corpus-encoded.zip index ca3f5bc5a3b977affe4616551d05cf8d1c10a593..43a3ddde2f8e3db3333506e6150963bab9721236 100644 GIT binary patch delta 150236 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

iZ~}>f4YectJwF#3^@-~;s*&3XdQE+l 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 ZyYRj14~+%cy>9oq`(HRDdEPUV