fix(objectnode): separate read and write buffers

with

Signed-off-by: tangdeyi <tangdeyi@oppo.com>
This commit is contained in:
tangdeyi 2024-07-25 10:40:08 +08:00 committed by AmazingChi
parent 54e2526793
commit 7ae6457821
3 changed files with 18 additions and 10 deletions

View File

@ -1559,8 +1559,8 @@ func (v *Volume) readEbs(inode, inodeSize uint64, path string, writer io.Writer,
reader := v.getEbsReader(inode)
var n int
var rest uint64
tmp := buf.ReadBufPool.Get().([]byte)
defer buf.ReadBufPool.Put(tmp) // nolint: staticcheck
tmp := buf.ClodVolReaderBufPool.Get().([]byte)
defer buf.ClodVolReaderBufPool.Put(tmp)
for {
if rest = upper - offset; rest <= 0 {

View File

@ -207,11 +207,11 @@ func (writer *Writer) cacheLevel2(wSlice *rwSlice) {
func (writer *Writer) WriteFromReader(ctx context.Context, reader io.Reader, h hash.Hash) (size uint64, err error) {
var (
tmp = buf.ReadBufPool.Get().([]byte)
tmp = buf.ClodVolWriteBufPool.Get().([]byte)
exec = NewExecutor(writer.wConcurrency)
leftToWrite int
)
defer buf.ReadBufPool.Put(tmp) // nolint: staticcheck
defer buf.ClodVolWriteBufPool.Put(tmp)
writer.fileOffset = 0
writer.err = make(chan *wSliceErr)

View File

@ -15,12 +15,20 @@ const (
MinBufferChanSize = 16
)
var ReadBufPool = sync.Pool{
New: func() interface{} {
b := make([]byte, 32*1024)
return b
},
}
var (
ClodVolWriteBufPool = sync.Pool{
New: func() interface{} {
b := make([]byte, 32*1024)
return b
},
}
ClodVolReaderBufPool = sync.Pool{
New: func() interface{} {
b := make([]byte, 1024*1024)
return b
},
}
)
const (
BufferTypeHeader = 0