mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	优化磁盘速度检查
This commit is contained in:
		@@ -8,9 +8,33 @@ import (
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Speed int
 | 
			
		||||
 | 
			
		||||
func (this Speed) String() string {
 | 
			
		||||
	switch this {
 | 
			
		||||
	case SpeedExtremelyFast:
 | 
			
		||||
		return "extremely fast"
 | 
			
		||||
	case SpeedFast:
 | 
			
		||||
		return "fast"
 | 
			
		||||
	case SpeedLow:
 | 
			
		||||
		return "low"
 | 
			
		||||
	case SpeedExtremelySlow:
 | 
			
		||||
		return "extremely slow"
 | 
			
		||||
	}
 | 
			
		||||
	return "unknown"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	SpeedExtremelyFast Speed = 1
 | 
			
		||||
	SpeedFast          Speed = 2
 | 
			
		||||
	SpeedLow           Speed = 3
 | 
			
		||||
	SpeedExtremelySlow Speed = 4
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	DiskIsFast  bool
 | 
			
		||||
	DiskSpeedMB float64
 | 
			
		||||
	DiskSpeed           = SpeedLow
 | 
			
		||||
	DiskMaxWrites int32 = 32
 | 
			
		||||
	DiskSpeedMB   float64
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
@@ -38,17 +62,14 @@ func init() {
 | 
			
		||||
	}()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DiskIsFast() bool {
 | 
			
		||||
	return DiskSpeed == SpeedExtremelyFast || DiskSpeed == SpeedFast
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var countWrites int32 = 0
 | 
			
		||||
 | 
			
		||||
const MaxWrites = 32
 | 
			
		||||
const MaxFastWrites = 128
 | 
			
		||||
 | 
			
		||||
func WriteReady() bool {
 | 
			
		||||
	var count = atomic.LoadInt32(&countWrites)
 | 
			
		||||
	if DiskIsFast {
 | 
			
		||||
		return count < MaxFastWrites
 | 
			
		||||
	}
 | 
			
		||||
	return count <= MaxWrites
 | 
			
		||||
	return atomic.LoadInt32(&countWrites) < DiskMaxWrites
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func WriteBegin() {
 | 
			
		||||
@@ -58,3 +79,18 @@ func WriteBegin() {
 | 
			
		||||
func WriteEnd() {
 | 
			
		||||
	atomic.AddInt32(&countWrites, -1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func calculateDiskMaxWrites() {
 | 
			
		||||
	switch DiskSpeed {
 | 
			
		||||
	case SpeedExtremelyFast:
 | 
			
		||||
		DiskMaxWrites = 256
 | 
			
		||||
	case SpeedFast:
 | 
			
		||||
		DiskMaxWrites = 128
 | 
			
		||||
	case SpeedLow:
 | 
			
		||||
		DiskMaxWrites = 32
 | 
			
		||||
	case SpeedExtremelySlow:
 | 
			
		||||
		DiskMaxWrites = 16
 | 
			
		||||
	default:
 | 
			
		||||
		DiskMaxWrites = 16
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user