mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-09 20:10:27 +08:00
限制内存缓存最大容量为系统内存的三分之一
This commit is contained in:
@@ -584,13 +584,19 @@ func (this *MemoryStorage) flushItem(key string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *MemoryStorage) memoryCapacityBytes() int64 {
|
func (this *MemoryStorage) memoryCapacityBytes() int64 {
|
||||||
|
var maxSystemBytes = int64(utils.SystemMemoryBytes()) / 3 // 1/3 of the system memory
|
||||||
|
|
||||||
if this.policy == nil {
|
if this.policy == nil {
|
||||||
return 0
|
return maxSystemBytes
|
||||||
}
|
}
|
||||||
|
|
||||||
if SharedManager.MaxMemoryCapacity != nil {
|
if SharedManager.MaxMemoryCapacity != nil {
|
||||||
var capacityBytes = SharedManager.MaxMemoryCapacity.Bytes()
|
var capacityBytes = SharedManager.MaxMemoryCapacity.Bytes()
|
||||||
if capacityBytes > 0 {
|
if capacityBytes > 0 {
|
||||||
|
if capacityBytes > maxSystemBytes {
|
||||||
|
return maxSystemBytes
|
||||||
|
}
|
||||||
|
|
||||||
return capacityBytes
|
return capacityBytes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -599,17 +605,15 @@ func (this *MemoryStorage) memoryCapacityBytes() int64 {
|
|||||||
if capacity != nil {
|
if capacity != nil {
|
||||||
var capacityBytes = capacity.Bytes()
|
var capacityBytes = capacity.Bytes()
|
||||||
if capacityBytes > 0 {
|
if capacityBytes > 0 {
|
||||||
|
if capacityBytes > maxSystemBytes {
|
||||||
|
return maxSystemBytes
|
||||||
|
}
|
||||||
return capacityBytes
|
return capacityBytes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// half of the system memory
|
// 1/4 of the system memory
|
||||||
var memoryGB = utils.SystemMemoryGB()
|
return maxSystemBytes
|
||||||
if memoryGB < 1 {
|
|
||||||
memoryGB = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
return int64(memoryGB) << 30 / 2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *MemoryStorage) deleteWithoutLocker(key string) error {
|
func (this *MemoryStorage) deleteWithoutLocker(key string) error {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var systemTotalMemory = -1
|
var systemTotalMemory = -1
|
||||||
|
var systemMemoryBytes uint64
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
if !teaconst.IsMain {
|
if !teaconst.IsMain {
|
||||||
@@ -29,7 +30,9 @@ func SystemMemoryGB() int {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
systemTotalMemory = int(stat.Total / (1<<30))
|
systemMemoryBytes = stat.Total
|
||||||
|
|
||||||
|
systemTotalMemory = int(stat.Total / (1 << 30))
|
||||||
if systemTotalMemory <= 0 {
|
if systemTotalMemory <= 0 {
|
||||||
systemTotalMemory = 1
|
systemTotalMemory = 1
|
||||||
}
|
}
|
||||||
@@ -38,3 +41,8 @@ func SystemMemoryGB() int {
|
|||||||
|
|
||||||
return systemTotalMemory
|
return systemTotalMemory
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SystemMemoryBytes 系统内存总字节数
|
||||||
|
func SystemMemoryBytes() uint64 {
|
||||||
|
return systemMemoryBytes
|
||||||
|
}
|
||||||
|
|||||||
@@ -8,4 +8,7 @@ func TestSystemMemoryGB(t *testing.T) {
|
|||||||
t.Log(SystemMemoryGB())
|
t.Log(SystemMemoryGB())
|
||||||
t.Log(SystemMemoryGB())
|
t.Log(SystemMemoryGB())
|
||||||
t.Log(SystemMemoryGB())
|
t.Log(SystemMemoryGB())
|
||||||
|
t.Log(SystemMemoryBytes())
|
||||||
|
t.Log(SystemMemoryBytes())
|
||||||
|
t.Log(SystemMemoryBytes()>>30, "GB")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user