优化缓存自动清理逻辑

This commit is contained in:
GoEdgeLab
2023-10-13 08:36:11 +08:00
parent 5404dc8907
commit b80a445768

View File

@@ -1001,6 +1001,11 @@ func (this *FileStorage) initList() error {
// 清理任务 // 清理任务
// TODO purge每个分区 // TODO purge每个分区
func (this *FileStorage) purgeLoop() { func (this *FileStorage) purgeLoop() {
// load
systemLoad, _ := load.Avg()
// TODO 计算平均最近每日新增用量
// 计算是否应该开启LFU清理 // 计算是否应该开启LFU清理
var capacityBytes = this.diskCapacityBytes() var capacityBytes = this.diskCapacityBytes()
var startLFU = false var startLFU = false
@@ -1009,6 +1014,7 @@ func (this *FileStorage) purgeLoop() {
if lfuFreePercent <= 0 { if lfuFreePercent <= 0 {
lfuFreePercent = 5 lfuFreePercent = 5
if systemLoad == nil || systemLoad.Load5 > 10 {
// 2TB级别以上 // 2TB级别以上
if capacityBytes>>30 > 2000 { if capacityBytes>>30 > 2000 {
lfuFreePercent = 100 /** GB **/ / float32(capacityBytes>>30) * 100 /** % **/ lfuFreePercent = 100 /** GB **/ / float32(capacityBytes>>30) * 100 /** % **/
@@ -1017,6 +1023,7 @@ func (this *FileStorage) purgeLoop() {
} }
} }
} }
}
var hasFullDisk = this.hasFullDisk() var hasFullDisk = this.hasFullDisk()
if hasFullDisk { if hasFullDisk {
@@ -1037,7 +1044,6 @@ func (this *FileStorage) purgeLoop() {
var times = 1 var times = 1
// 空闲时间多清理 // 空闲时间多清理
systemLoad, _ := load.Avg()
if systemLoad != nil { if systemLoad != nil {
if systemLoad.Load5 < 3 { if systemLoad.Load5 < 3 {
times = 5 times = 5
@@ -1102,13 +1108,13 @@ func (this *FileStorage) purgeLoop() {
// 磁盘空间不足时,清除老旧的缓存 // 磁盘空间不足时,清除老旧的缓存
if startLFU { if startLFU {
var maxCount = 2000 var maxCount = 1000
var maxLoops = 5 var maxLoops = 5
if fsutils.DiskIsExtremelyFast() { if fsutils.DiskIsExtremelyFast() {
maxCount = 10000 maxCount = 4000
} else if fsutils.DiskIsFast() { } else if fsutils.DiskIsFast() {
maxCount = 5000 maxCount = 2000
} }
var total, _ = this.list.Count() var total, _ = this.list.Count()