enhance: disk cache to enable size based eviction (#31469)

See #31262

Signed-off-by: Ted Xu <ted.xu@zilliz.com>
pull/31497/head^2
Ted Xu 2024-03-21 18:57:07 +08:00 committed by GitHub
parent 03eaa5d478
commit 09281a07f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 3 additions and 3 deletions

View File

@ -162,8 +162,6 @@ type Manager struct {
func NewManager() *Manager {
diskCap := paramtable.Get().QueryNodeCfg.DiskCapacityLimit.GetAsInt64()
segmentMaxSize := paramtable.Get().DataCoordCfg.SegmentMaxSize.GetAsInt64()
cacheMaxItemNum := diskCap / segmentMaxSize
segMgr := NewSegmentManager()
sf := singleflight.Group{}
@ -172,7 +170,9 @@ func NewManager() *Manager {
Segment: segMgr,
}
manager.DiskCache = cache.NewCacheBuilder[int64, Segment]().WithCapacity(cacheMaxItemNum).WithLoader(func(key int64) (Segment, bool) {
manager.DiskCache = cache.NewCacheBuilder[int64, Segment]().WithLazyScavenger(func(key int64) int64 {
return int64(segMgr.sealedSegments[key].ResourceUsageEstimate().DiskSize)
}, diskCap).WithLoader(func(key int64) (Segment, bool) {
log.Debug("cache missed segment", zap.Int64("segmentID", key))
segMgr.mu.RLock()
defer segMgr.mu.RUnlock()