Tune VPN fabric batching and flow windows
This commit is contained in:
@@ -19,9 +19,9 @@ const (
|
||||
FabricDirectionClientToGateway = "client_to_gateway"
|
||||
FabricDirectionGatewayToClient = "gateway_to_client"
|
||||
|
||||
defaultFabricFlowShardCount = 32
|
||||
defaultFabricFlowShardCount = 8
|
||||
defaultFabricFlowQueueCapacity = 1024
|
||||
defaultFabricFlowParallelSendWindow = 4
|
||||
defaultFabricFlowParallelSendWindow = 8
|
||||
defaultFabricFlowQualityWindowCapacity = 32
|
||||
defaultFabricFlowFailureThreshold = 2
|
||||
defaultFabricFlowSlowSendThreshold = 2 * time.Second
|
||||
@@ -332,8 +332,8 @@ func defaultFabricServiceChannelAdaptivePolicy() FabricServiceChannelAdaptivePol
|
||||
ClassWindows: map[string]int{
|
||||
FabricTrafficClassControl: defaultFabricFlowParallelSendWindow,
|
||||
FabricTrafficClassInteractive: defaultFabricFlowParallelSendWindow,
|
||||
FabricTrafficClassReliable: 3,
|
||||
FabricTrafficClassBulk: 1,
|
||||
FabricTrafficClassReliable: 6,
|
||||
FabricTrafficClassBulk: 4,
|
||||
FabricTrafficClassDroppable: 1,
|
||||
},
|
||||
})
|
||||
@@ -361,8 +361,8 @@ func normalizeFabricServiceChannelAdaptivePolicy(policy FabricServiceChannelAdap
|
||||
defaults := map[string]int{
|
||||
FabricTrafficClassControl: policy.MaxParallelWindow,
|
||||
FabricTrafficClassInteractive: policy.MaxParallelWindow,
|
||||
FabricTrafficClassReliable: minPositive(policy.MaxParallelWindow, 3),
|
||||
FabricTrafficClassBulk: 1,
|
||||
FabricTrafficClassReliable: minPositive(policy.MaxParallelWindow, 6),
|
||||
FabricTrafficClassBulk: minPositive(policy.MaxParallelWindow, 4),
|
||||
FabricTrafficClassDroppable: 1,
|
||||
}
|
||||
next := map[string]int{}
|
||||
@@ -538,12 +538,15 @@ func (s *FabricFlowScheduler) RecommendedParallelSendWindowForTrafficClass(traff
|
||||
return maxWindow
|
||||
}
|
||||
if classPressure.hasDrops {
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, boundedParallelWindow(maxWindow/2))
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, 1)
|
||||
}
|
||||
if global.hasDrops {
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, boundedParallelWindow(maxWindow/2))
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, 1)
|
||||
}
|
||||
if global.highPressure && global.interactiveOrControlQueues > 0 {
|
||||
if trafficClass == FabricTrafficClassBulk || trafficClass == FabricTrafficClassDroppable {
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, 1)
|
||||
}
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, boundedParallelWindow(maxWindow/2))
|
||||
}
|
||||
if global.highPressure {
|
||||
@@ -821,9 +824,12 @@ func (s *FabricFlowScheduler) recommendedParallelSendWindowForTrafficClassLocked
|
||||
return maxWindow
|
||||
}
|
||||
if classPressure.hasDrops || globalPressure.hasDrops {
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, boundedParallelWindow(maxWindow/2))
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, 1)
|
||||
}
|
||||
if globalPressure.highPressure && globalPressure.interactiveOrControlQueues > 0 {
|
||||
if trafficClass == FabricTrafficClassBulk || trafficClass == FabricTrafficClassDroppable {
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, 1)
|
||||
}
|
||||
return classWindowLimit(s.adaptivePolicy, trafficClass, boundedParallelWindow(maxWindow/2))
|
||||
}
|
||||
if globalPressure.highPressure {
|
||||
|
||||
Reference in New Issue
Block a user