Skip to content

Commit 76ed617

Browse files
committed
fix: increase concurrency limits for 500 pods fault injection (#1279)
- exec/model/parallelizer.go: change maxWorkers from const to configurable variable - pkg/runtime/runtime.go: - add --max-workers flag (default 64) - update --max-concurrent-reconciles default from 20 to 50 - increase QPS from 20 to 100 - pkg/controller/chaosblade/daemonset.go: - add resource requests (CPU 100m, Memory 128Mi) - add resource limits (CPU 1000m, Memory 512Mi) Fixes: #1279 Change-Id: I66695d4661f6399bf7f95bd1e4f028bd4b103340
1 parent 5d381a6 commit 76ed617

3 files changed

Lines changed: 19 additions & 5 deletions

File tree

exec/model/parallelizer.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ package model
1818

1919
import "sync"
2020

21-
const (
22-
maxWorkers = 64 // magic number
21+
var (
22+
// MaxWorkers can be configured via environment variable or flag
23+
MaxWorkers = 64
2324
)
2425

2526
type DoWorkFunc func(workID int)
2627

2728
func ParallelizeExec(workCount int, doWork DoWorkFunc) {
28-
workers := maxWorkers
29+
workers := MaxWorkers
2930
toExec := make(chan int, workCount)
3031

3132
for i := 0; i < workCount; i++ {

pkg/controller/chaosblade/daemonset.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
appsv1 "k8s.io/api/apps/v1"
2626
corev1 "k8s.io/api/core/v1"
2727
apierrors "k8s.io/apimachinery/pkg/api/errors"
28+
"k8s.io/apimachinery/pkg/api/resource"
2829
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2930
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3031
"k8s.io/apimachinery/pkg/runtime/schema"
@@ -176,5 +177,15 @@ func createContainer() corev1.Container {
176177
{Name: "hosts", MountPath: "/etc/hosts"},
177178
},
178179
SecurityContext: &corev1.SecurityContext{Privileged: &trueVar},
180+
Resources: corev1.ResourceRequirements{
181+
Requests: corev1.ResourceList{
182+
corev1.ResourceCPU: resource.MustParse("100m"),
183+
corev1.ResourceMemory: resource.MustParse("128Mi"),
184+
},
185+
Limits: corev1.ResourceList{
186+
corev1.ResourceCPU: resource.MustParse("1000m"),
187+
corev1.ResourceMemory: resource.MustParse("512Mi"),
188+
},
189+
},
179190
}
180191
}

pkg/runtime/runtime.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ var (
3030
LogLevel string
3131
MaxConcurrentReconciles int
3232
QPS float32
33+
MaxWorkers int
3334
)
3435

3536
func init() {
3637
flagSet = pflag.NewFlagSet("operator", pflag.ExitOnError)
3738
flagSet.StringVar(&LogLevel, "log-level", "info", "Log level, such as panic|fatal|error|warn|info|debug|trace")
38-
flagSet.IntVar(&MaxConcurrentReconciles, "reconcile-count", 20, "Max concurrent reconciles count, default value is 20")
39-
flagSet.Float32Var(&QPS, "qps", 20, "qps of kubernetes client")
39+
flagSet.IntVar(&MaxConcurrentReconciles, "max-concurrent-reconciles", 50, "Max concurrent reconciles count, default value is 50")
40+
flagSet.Float32Var(&QPS, "qps", 100, "qps of kubernetes client, increased from 20 to 100 for better performance")
41+
flagSet.IntVar(&MaxWorkers, "max-workers", 64, "Max workers for parallel execution, default value is 64")
4042

4143
flagSet.AddFlagSet(aliyun.FlagSet())
4244
flagSet.AddFlagSet(chaosblade.FlagSet())

0 commit comments

Comments
 (0)