Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initialize load testing #3554

Closed
wants to merge 3 commits into from
Closed

Conversation

yaoxiaoqi
Copy link
Member

@yaoxiaoqi yaoxiaoqi commented Nov 23, 2020

Changes

This PR initializes load testing. It starts multiple taskruns and sees if they could
complete in defined time.

It also provides a script to run load testing. Users can use flag --taskrun-num
and --timeout to specify the amount of taskruns they want to run and the time
in which taskruns should complete.

To run the load testing:

./test/load-test.sh --taskrun-num 50 --timeout 10m

/kind feature

Submitter Checklist

These are the criteria that every PR should meet, please check them off as you
review them:

  • Includes tests (if functionality changed/added)
  • Includes docs (if user facing)
  • Commit messages follow commit message best practices
  • Release notes block has been filled in or deleted (only if no user facing changes)

See the contribution guide for more details.

Double check this list of stuff that's easy to miss:

Reviewer Notes

If API changes are included, additive changes must be approved by at least two OWNERS and backwards incompatible changes must be approved by more than 50% of the OWNERS, and they must first be added in a backwards compatible way.

Release Notes

Initialize load testing

This PR initializes load testing. It starts multiple taskruns and sees if they could
complete in defined time.

It also provides a script to run load testing. Users can use flag `--taskrun-num`
and `--timeout` to specify the amount of taskruns they want to run and the time
in which taskruns should complete.
@tekton-robot tekton-robot added release-note Denotes a PR that will be considered when it comes time to generate release notes. kind/feature Categorizes issue or PR as related to a new feature. labels Nov 23, 2020
@tekton-robot
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
To complete the pull request process, please assign pritidesai
You can assign the PR to them by writing /assign @pritidesai in a comment when ready.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@tekton-robot tekton-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Nov 23, 2020
},
},
}
if _, err := c.TaskRunClient.Create(ctx, taskrun, metav1.CreateOptions{}); err != nil {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason for creating the TaskRun synchronously ?

@bobcatfish
Copy link
Collaborator

Hey @yaoxiaoqi ! You might be interested in the PR I opened around getting some performance measurements up and running: tektoncd/community#277 If you are interested in collaborating on that TEP with me that'd be very cool! In the meantime I'm hesitant to commit scripts to this repo, especially without some kind of automation to ensure they stay up and running.

Basically anything we commit here we should make sure to maintain, so I'm not sure if we want to add this just yet?

@bobcatfish
Copy link
Collaborator

I think I should probably explain my thought process a bit more!

Basically I think if you (or anyone!) want to run some loadtests and maybe share a report on your findings with the community that is 👍 👍 👍 However I would only commit the code for that to this repo if we want to keep using it over time; if it's a one off for some experimentation it could live in a private repo maybe, or even in experimental.

If we want to start adding some loadtests that are run and maintained by the community, I think we should start with a TEP and gather some feedback before we pursue something; tektoncd/community#277 is specifically about trying to catch performance regressions such as the one we had recently before they happen by starting to define some SLIs and SLOs.

@yaoxiaoqi
Copy link
Member Author

yaoxiaoqi commented Nov 24, 2020

Hey @yaoxiaoqi ! You might be interested in the PR I opened around getting some performance measurements up and running: tektoncd/community#277 If you are interested in collaborating on that TEP with me that'd be very cool! In the meantime I'm hesitant to commit scripts to this repo, especially without some kind of automation to ensure they stay up and running.

Basically anything we commit here we should make sure to maintain, so I'm not sure if we want to add this just yet?

Hi @bobcatfish ! I'm glad to collaborate on the TEP with you. And I think it's actually kind of unconsidered to add this script now. It would be better if I implemented a maintainable load testing / performance testing after the tep had been discussed thoroughly. Anyway, this pr meant to be a load testing sample and could be hold if this is not the time. Thanks for your suggestions!

@bobcatfish
Copy link
Collaborator

sounds good @yaoxiaoqi !! in that case maybe we can close this PR for now? I'll try to get a doc started that we can collaborate in ASAP :D

Also very interested to see the results of the tests you've run so far :D

@yaoxiaoqi
Copy link
Member Author

Sounds great @bobcatfish ! I will close this PR. Please send me the doc when you're ready.

Using this script I found that tekton pipelines could run 500 simple taskruns in ~800 seconds on a 12-cpu 45G-memory gke cluster. I will try some cpu bound or i/o bound taskruns and pipelineruns in the future to see the pipelines performance in different situations.

@yaoxiaoqi yaoxiaoqi closed this Dec 1, 2020
@tekton-robot
Copy link
Collaborator

@yaoxiaoqi: The following test failed, say /retest to rerun them all:

Test name Commit Details Rerun command
pull-tekton-pipeline-unit-tests 65fbf5d link /test tekton-pipeline-unit-tests

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature Categorizes issue or PR as related to a new feature. release-note Denotes a PR that will be considered when it comes time to generate release notes. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants