mirror of
https://github.com/pgsty/minio.git
synced 2026-11-07 08:12:03 +03:00
Block change to 1M from 128KiB and extensively use buffer pools.
Following are the benefits of this change. ``` benchmark old allocs new allocs delta BenchmarkPutObjectPart5MbFS-4 46172 16383 -64.52% BenchmarkPutObjectPart10MbFS-4 36849 7223 -80.40% BenchmarkPutObjectPart25MbFS-4 31699 3865 -87.81% BenchmarkPutObjectPart50MbFS-4 27577 2481 -91.00% BenchmarkPutObjectVerySmallFS-4 57 56 -1.75% BenchmarkPutObject10KbFS-4 57 56 -1.75% BenchmarkPutObject100KbFS-4 57 56 -1.75% BenchmarkPutObject1MbFS-4 176 56 -68.18% BenchmarkPutObject5MbFS-4 720 90 -87.50% BenchmarkPutObject10MbFS-4 1400 124 -91.14% BenchmarkPutObject25MbFS-4 3440 261 -92.41% BenchmarkPutObject50MbFS-4 6841 466 -93.19% ```
This commit is contained in:
+14
-3
@@ -21,6 +21,7 @@ import (
|
||||
"errors"
|
||||
"hash"
|
||||
"io"
|
||||
"sync"
|
||||
|
||||
"github.com/klauspost/reedsolomon"
|
||||
"github.com/minio/blake2b-simd"
|
||||
@@ -47,13 +48,23 @@ func newHash(algo string) hash.Hash {
|
||||
}
|
||||
}
|
||||
|
||||
var hashBufPool = sync.Pool{
|
||||
New: func() interface{} {
|
||||
b := make([]byte, readSizeV1)
|
||||
return &b
|
||||
},
|
||||
}
|
||||
|
||||
// hashSum calculates the hash of the entire path and returns.
|
||||
func hashSum(disk StorageAPI, volume, path string, writer hash.Hash) ([]byte, error) {
|
||||
// Allocate staging buffer of 128KiB for copyBuffer.
|
||||
buf := make([]byte, readSizeV1)
|
||||
// Allocate staging buffer of 2MiB for copyBuffer.
|
||||
bufp := hashBufPool.Get().(*[]byte)
|
||||
|
||||
// Reuse buffer.
|
||||
defer hashBufPool.Put(bufp)
|
||||
|
||||
// Copy entire buffer to writer.
|
||||
if err := copyBuffer(writer, disk, volume, path, buf); err != nil {
|
||||
if err := copyBuffer(writer, disk, volume, path, *bufp); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user