-
Notifications
You must be signed in to change notification settings - Fork 208
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
Split Performance Tests into their Own Sub-Command #1111
Labels
kind/feature
New feature or request
Comments
marseel
added a commit
that referenced
this issue
Dec 8, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
marseel
added a commit
that referenced
this issue
Dec 8, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
marseel
added a commit
that referenced
this issue
Dec 8, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
marseel
added a commit
that referenced
this issue
Dec 8, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
marseel
added a commit
that referenced
this issue
Dec 11, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
marseel
added a commit
that referenced
this issue
Dec 13, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
nebril
pushed a commit
that referenced
this issue
Dec 15, 2023
Before, perf test was part of `connectivity test` subcommand. Now, perf test has separate `connectivity perf` subcommand. We allow to run both host and pod network perf test in a single command. We allow to test host-to-pod type of traffic too. Perf test now respects nodeSelector and allows to run for nodes in two different zones. Always force deploy test pods for perf test to respect nodeSelector. You can export perf test results in json format, which is compatible with perfdash. Fixes: #1111 Fixes: #2114 Signed-off-by: Marcel Zieba <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Proposal / RFE
Is your feature request related to a problem?
When running performance tests through
cilium connectivity test --perf
, all of the deployments required for the non-perf connectivity checks are created and validated, giving some extra bloat and execution time:Describe the solution you'd like
Splitting the performance tests into their own sub-command will help to alleviate this issue and others that may arise as performance tests are expanded upon. I understand that a performance test is technically a connectivity test, but there are two main reasons why I think this is worth doing:
--perf-
. As the suite expands and is developed, more of these options may need to be added, such as for adding new test types or configuring the output format of test results. Having a split between performance options and non-performance related options in the output for aconnectivity test --help
might make things difficult to read in the CLI. Additionally, not all of the non-perf options are implemented for the performance tests when intuitively they can still apply. For instance, the--multi-cluster
is a no-op.(This if statement already exists, it's just in the middle of the function and doesn't have a return statement.)
But then we need to add one of these if statements at the top of connectivity.ConnectivityTest.validateDeployment since this function will check for the resources we skipped deploying earlier in
deploy
and fail the run:This pattern is also repeated in connectivity.Run, which kicks off performance tests if they are enabled and returns when they are done:
All of this essentially splits our core functions for
connectivity test
in half: one part of performance and one part for the connectivity tests. If we need to split our functions up anyways, then I think it would make more sense to just split out the performance-related stuff into its own sub-command. This will help a lot with readability, and preventing and finding bugs. For instance, for some reason I get a timeout error when running performance tests on a fresh cluster. I have to invoke the command twice to get it going:This doesn't happen for the connectivity tests themselves:
(I'm on kind version 0.15.0, using image kindest/node:v1.24.0, cilium-cli d9371d3, cilium v1.12.1, cluster has three workers and one control-plane node.)
I'd suggest we create a new folder under the root called
benchmark
and add abenchmark
sub-command:I think benchmark is a better choice than perf, as it's a bit more precise and may avoid confusion with profiling.
I'd love to take up this task, just want to see what folks think and get a thumbs up. Thanks! 🎉
CC: @christarazi
The text was updated successfully, but these errors were encountered: