Tekton Controller Performance Configuration

Configure ThreadsPerController, QPS and Burst

Overview


This document will show us how to configure tekton-pipeline-controller’s performance. In general, there are mainly have three parameters will impact the performance of tekton controller, they are ThreadsPerController, QPS and Burst.

  • ThreadsPerController: Threads (goroutines) to create per controller. It’s the number of threads to use when processing the controller’s work queue.

  • QPS: Queries per Second. Maximum QPS to the master from this client.

  • Burst: Maximum burst for throttle.

Performance Configuration


Configure Thread, QPS and Burst


Default, the value of ThreadsPerController, QPS and Burst is 2, 5.0 and 10 accordingly.

Sometimes, above default values can’t meet performance requirements, then you need to overwrite these values. You can modify them in the tekton controller deployment. You can specify these customized values in the tekton-pipelines-controller container via threads-per-controller, kube-api-qps and kube-api-burst flags accordingly. For example:

spec:
  serviceAccountName: tekton-pipelines-controller
  containers:
    - name: tekton-pipelines-controller
      image: ko://github.com/tektoncd/pipeline/cmd/controller
      args: [
          "-kube-api-qps", "50",
          "-kube-api-burst", "50",
          "-threads-per-controller", "32",
          # other flags defined here...
        ]

Now, the ThreadsPerController, QPS and Burst have been changed to be 32, 50 and 50.

Note: Although in above example, you set QPS and Burst to be 50 and 50. However, the actual values of them are multiplied by 2, so the actual QPS and Burst is 100 and 100.