From 6026d8c3bd36b3fb73ecddaf00dd8c29b4d773a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Fri, 12 Apr 2024 08:17:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=B3=BB=E7=BB=9F=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E5=86=85=E5=AD=98=E8=B0=83=E6=95=B4=E5=86=99=E5=85=A5?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=88=B0=E5=86=85=E5=AD=98=E7=9A=84=E9=98=88?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/caches/storage_file.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/internal/caches/storage_file.go b/internal/caches/storage_file.go index fa2553b..013c5d6 100644 --- a/internal/caches/storage_file.go +++ b/internal/caches/storage_file.go @@ -16,6 +16,7 @@ import ( "github.com/TeaOSLab/EdgeNode/internal/utils" "github.com/TeaOSLab/EdgeNode/internal/utils/fasttime" fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs" + memutils "github.com/TeaOSLab/EdgeNode/internal/utils/mem" setutils "github.com/TeaOSLab/EdgeNode/internal/utils/sets" "github.com/TeaOSLab/EdgeNode/internal/utils/sizes" "github.com/TeaOSLab/EdgeNode/internal/zero" @@ -54,16 +55,30 @@ const ( ) const ( - FileStorageMaxIgnoreKeys = 32768 // 最大可忽略的键值数(尺寸过大的键值) - HotItemSize = 1024 // 热点数据数量 - HotItemLifeSeconds int64 = 3600 // 热点数据生命周期 - FileToMemoryMaxSize int64 = 32 << 20 // 可以从文件写入到内存的最大文件尺寸 + FileStorageMaxIgnoreKeys = 32768 // 最大可忽略的键值数(尺寸过大的键值) + HotItemSize = 1024 // 热点数据数量 + HotItemLifeSeconds int64 = 3600 // 热点数据生命周期 FileTmpSuffix = ".tmp" DefaultMinDiskFreeSpace uint64 = 5 << 30 // 当前磁盘最小剩余空间 DefaultStaleCacheSeconds = 1200 // 过时缓存留存时间 HashKeyLength = 32 ) +var FileToMemoryMaxSize int64 = 32 << 20 // 可以从文件写入到内存的最大文件尺寸 + +func init() { + var availableMemoryGB = memutils.AvailableMemoryGB() + if availableMemoryGB > 64 { + FileToMemoryMaxSize = 512 << 20 + } else if availableMemoryGB > 32 { + FileToMemoryMaxSize = 256 << 20 + } else if availableMemoryGB > 16 { + FileToMemoryMaxSize = 128 << 20 + } else if availableMemoryGB > 8 { + FileToMemoryMaxSize = 64 << 20 + } +} + var sharedWritingFileKeyMap = map[string]zero.Zero{} // key => bool var sharedWritingFileKeyLocker = sync.Mutex{}