perf(datanode): replace make with bytespool.#1000005968

Signed-off-by: Wu Huocheng <wuhuocheng@oppo.com>
This commit is contained in:
Wu Huocheng 2025-04-17 15:01:05 +08:00 committed by zhumingze1108
parent 75af3848b0
commit 167e4c488a
3 changed files with 23 additions and 10 deletions

View File

@ -738,14 +738,19 @@ func (e *Extent) autoComputeExtentCrc(extSize int64, crcFunc UpdateCrcFunc) (crc
blockCnt += 1
}
log.LogDebugf("autoComputeExtentCrc. path %v extent %v extent size %v,blockCnt %v", e.filePath, e.extentID, extSize, blockCnt)
crcData := make([]byte, blockCnt*util.PerBlockCrcSize)
crcData := bytespool.Alloc(blockCnt * util.PerBlockCrcSize)
bdata := bytespool.Alloc(util.BlockSize)
defer func() {
bytespool.Free(crcData)
bytespool.Free(bdata)
}()
for blockNo := 0; blockNo < blockCnt; blockNo++ {
blockCrc := binary.BigEndian.Uint32(e.header[blockNo*util.PerBlockCrcSize : (blockNo+1)*util.PerBlockCrcSize])
if blockCrc != 0 {
binary.BigEndian.PutUint32(crcData[blockNo*util.PerBlockCrcSize:(blockNo+1)*util.PerBlockCrcSize], blockCrc)
continue
}
bdata := make([]byte, util.BlockSize)
offset := int64(blockNo * util.BlockSize)
readN, err := e.file.ReadAt(bdata[:util.BlockSize], offset)
if readN == 0 && err != nil {

View File

@ -78,6 +78,7 @@ var (
SnapShotFilePool = &sync.Pool{New: func() interface{} {
return new(proto.File)
}}
emptyHeader = make([]byte, util.BlockHeaderSize)
)
func GetSnapShotFileFromPool() (f *proto.File) {
@ -1483,7 +1484,6 @@ func (s *ExtentStore) LoadExtentFromDisk(extentID uint64, putCache bool) (e *Ext
log.LogWarnf("LoadExtentFromDisk. partition id %v extent %v err %v", s.partitionID, e, err1)
}
emptyHeader := make([]byte, util.BlockHeaderSize)
log.LogDebugf("LoadExtentFromDisk. partition id %v extentId %v, snapshotOff %v, append fp cnt %v",
s.partitionID, extentID, e.snapshotDataOff, len(s.verifyExtentFpAppend))
if e.snapshotDataOff > util.ExtentSize {

View File

@ -24,6 +24,7 @@ import (
"strconv"
"sync/atomic"
"github.com/cubefs/cubefs/blobstore/util/bytespool"
"github.com/cubefs/cubefs/proto"
"github.com/cubefs/cubefs/util"
"github.com/cubefs/cubefs/util/log"
@ -142,7 +143,8 @@ func (s *ExtentStore) DeleteBlockCrc(extentID uint64) (err error) {
}
func (s *ExtentStore) calcExtentCrc() (crc uint32, err error) {
data := make([]byte, 16)
data := bytespool.Alloc(16)
defer bytespool.Free(data)
_, err = s.metadataFp.ReadAt(data, 0)
if err != nil {
return
@ -164,7 +166,8 @@ func (s *ExtentStore) PersistentBaseExtentCrc() (err error) {
}
return nil
}
dataCrc := make([]byte, 8)
dataCrc := bytespool.Alloc(8)
defer bytespool.Free(dataCrc)
binary.BigEndian.PutUint32(dataCrc, crc)
_, err = s.metadataFp.WriteAt(dataCrc, BaseExtentCrcOffset)
return
@ -181,7 +184,8 @@ func (s *ExtentStore) CheckBaseExtentCrc() (err error) {
}
return
}
data := make([]byte, 4)
data := bytespool.Alloc(4)
defer bytespool.Free(data)
if _, err = s.metadataFp.ReadAt(data, BaseExtentCrcOffset); err == io.EOF {
return nil // not init before
}
@ -203,7 +207,8 @@ func (s *ExtentStore) GetPersistenceBaseExtentID() (extentID uint64, err error)
s.extIDLock.Lock()
defer s.extIDLock.Unlock()
data := make([]byte, 8)
data := bytespool.Alloc(8)
defer bytespool.Free(data)
_, err = s.metadataFp.ReadAt(data, 0)
if err != nil {
return
@ -248,7 +253,8 @@ func (s *ExtentStore) GetPreAllocSpaceExtentIDOnVerifyFile() (extentID uint64) {
s.extIDLock.Lock()
defer s.extIDLock.Unlock()
value := make([]byte, 8)
value := bytespool.Alloc(8)
defer bytespool.Free(value)
_, err := s.metadataFp.ReadAt(value, BaseExtentEndIDOffset)
if err != nil {
return
@ -313,7 +319,8 @@ func (s *ExtentStore) PreAllocSpaceOnVerfiyFile() (needPersist bool) {
}
func (s *ExtentStore) PersistenceHasDeleteExtent(extentID uint64) (err error) {
data := make([]byte, 8)
data := bytespool.Alloc(8)
defer bytespool.Free(data)
binary.BigEndian.PutUint64(data, extentID)
if _, err = s.normalExtentDeleteFp.Write(data); err != nil {
return
@ -322,7 +329,8 @@ func (s *ExtentStore) PersistenceHasDeleteExtent(extentID uint64) (err error) {
}
func (s *ExtentStore) GetHasDeleteExtent() (extentDes []ExtentDeleted, err error) {
data := make([]byte, 8)
data := bytespool.Alloc(8)
defer bytespool.Free(data)
offset := int64(0)
for {
_, err = s.normalExtentDeleteFp.ReadAt(data, offset)