Browse Source

refine default cache size

Darien Raymond 7 năm trước cách đây
mục cha
commit
e5d3ec420e
1 tập tin đã thay đổi với 16 bổ sung5 xóa
  1. 16 5
      policy.go

+ 16 - 5
policy.go

@@ -2,6 +2,7 @@ package core
 
 import (
 	"context"
+	"runtime"
 	"sync"
 	"time"
 
@@ -67,17 +68,27 @@ type PolicyManager interface {
 	ForSystem() SystemPolicy
 }
 
-var defaultBufferSize int32 = 2 * 1024 * 1024
+var defaultBufferSize int32
 
 func init() {
 	const key = "v2ray.ray.buffer.size"
+	const defaultValue = -17
 	size := platform.EnvFlag{
 		Name:    key,
 		AltName: platform.NormalizeEnvName(key),
-	}.GetValueAsInt(10)
-	if size == 0 {
-		defaultBufferSize = -1
-	} else {
+	}.GetValueAsInt(defaultValue)
+
+	switch size {
+	case 0:
+		defaultBufferSize = -1 // For pipe to use unlimited size
+	case defaultValue: // Env flag not defined. Use default values per CPU-arch.
+		switch runtime.GOARCH {
+		case "arm", "mips", "mipsle", "mips64", "mips64le":
+			defaultBufferSize = 0 // Disable pipe caching for low-end devices
+		default:
+			defaultBufferSize = 2 * 1024 * 1024
+		}
+	default:
 		defaultBufferSize = int32(size) * 1024 * 1024
 	}
 }