diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-05-22 00:57:42 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2021-05-22 01:00:51 +0200 |
commit | c27ff9b9f6f7849614e774be8a15c1266c415750 (patch) | |
tree | 9a8a5bf41885dc84ca15a41192cf0fda7fd712e4 | |
parent | 99e8b4ba605538b64c693c4056904f34810c3938 (diff) |
device: allow reducing queue constants on iOS
Heavier network extensions might require the wireguard-go component to
use less ram, so let users of this reduce these as needed.
At some point we'll put this behind a configuration method of sorts, but
for now, just expose the consts as vars.
Requested-by: Josh Bleecher Snyder <josh@tailscale.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r-- | device/constants.go | 1 | ||||
-rw-r--r-- | device/device.go | 2 | ||||
-rw-r--r-- | device/queueconstants_ios.go | 20 |
3 files changed, 12 insertions, 11 deletions
diff --git a/device/constants.go b/device/constants.go index 2252917..53a2526 100644 --- a/device/constants.go +++ b/device/constants.go @@ -35,7 +35,6 @@ const ( /* Implementation constants */ const ( - UnderLoadQueueSize = QueueHandshakeSize / 8 UnderLoadAfterTime = time.Second // how long does the device remain under load after detected MaxPeers = 1 << 16 // maximum number of configured peers ) diff --git a/device/device.go b/device/device.go index 86f519a..5644c8a 100644 --- a/device/device.go +++ b/device/device.go @@ -210,7 +210,7 @@ func (device *Device) Down() error { func (device *Device) IsUnderLoad() bool { // check if currently under load now := time.Now() - underLoad := len(device.queue.handshake.c) >= UnderLoadQueueSize + underLoad := len(device.queue.handshake.c) >= QueueHandshakeSize/8 if underLoad { atomic.StoreInt64(&device.rate.underLoadUntil, now.Add(UnderLoadAfterTime).UnixNano()) return true diff --git a/device/queueconstants_ios.go b/device/queueconstants_ios.go index be30e19..36c8704 100644 --- a/device/queueconstants_ios.go +++ b/device/queueconstants_ios.go @@ -7,13 +7,15 @@ package device -/* Fit within memory limits for iOS's Network Extension API, which has stricter requirements */ - -const ( - QueueStagedSize = 128 - QueueOutboundSize = 1024 - QueueInboundSize = 1024 - QueueHandshakeSize = 1024 - MaxSegmentSize = 1700 - PreallocatedBuffersPerPool = 1024 +// Fit within memory limits for iOS's Network Extension API, which has stricter requirements. +// These are vars instead of consts, because heavier network extensions might want to reduce +// them further. +var ( + QueueStagedSize = 128 + QueueOutboundSize = 1024 + QueueInboundSize = 1024 + QueueHandshakeSize = 1024 + PreallocatedBuffersPerPool uint32 = 1024 ) + +const MaxSegmentSize = 1700 |