-
Notifications
You must be signed in to change notification settings - Fork 39.4k
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
Kubelet JSON logging performance test #102430
Comments
/cc @sladyn98 |
/triage accepted |
#99803 is a kubelet log benchmark example. |
I am working on this one. |
@pacuxu Thanks for the links. Just to clarify in that issue we were working on benchmarking log volume, in this issue we are looking at performance CPU/Memory usage. |
/milestone v1.22 |
Due to v1.22 code freeze, I'm moving this issue to the next release. /milestone v1.23 |
@serathius here's how I ran performance tests locally using kind
For single node cluster it's also necessary to set this env, otherwise tests won't compile
Kubelet CPU and Mem usage will be in ResourceUsageSummary report I tested several verbosities, below are results for verbosity 1, 4 and 9 but other were similar
There is no clear winner, json and text performance is similar and varies from run to run I also run a few tests on bigger clusters (1 cp and up to 9 workers), no significant difference either Here's how we could test performance on a large scale:
|
Hmm, looks there is pretty large variance in tests, if there is difference it's smaller than variance. In such cases we will need to use some statistical analysis to see if there is an improvement. I have three ideas to improve quality of tests:
Recommend reading https://about.sourcegraph.com/go/gophercon-2019-optimizing-go-code-without-a-blindfold/ Please let me know if you need any help with this. Happy to discuss details on Slack. |
Hi @krzysiekg , this is bug triage shadow here 👋 |
Hi @krzysiekg , following back, this is bug triage shadow here 👋 |
Hi 👋 I'm the bug triage shadow. There hasn't been activity for couple of months. We're in code freeze for 1.23 milestone. I wanted to check if we're targeting to get this issue merged in time for 1.23 release(7/12) |
@ritpanjw I don't believe we are. This is not a blocker. /milestone clear |
Another relevant aspect is log ingestion. We would need to be careful about apple/orange comparisons (text import: just split into log messages vs json: full semantic), but to get the full picture we need to consider it. About variance: I suspect that logging is not causing enough overhead during normal kubelet operation to make measuring small changes in the overhead statistically relevant when measuring total load. What if we take a different approach:
|
"collect ... for different log levels" - this isn't really needed. We now have |
#106594 has benchmarks for encoding without caller and timestamping. For this issue we need variants of those benchmarks with the overhead for caller determination and timestamping. |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/remove-lifecycle stale |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs. This bot triages issues and PRs according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
/close |
@serathius: Closing this issue. In response to this:
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. |
With Kubelet logs fully migrated to structured logging we can measure macro performance improvements related to using JSON logging format. We should use this data to motive more cluster administrators to save on resources.
Requirements:
My first idea would be to utilize pull-kubernetes-e2e-gce-100-performance scenario to create repeatable way to collect Kubelet metric data. Before starting tests we should consult with SIG Scalability/Node how to best measure compare Kubelet performance.
Goal: Motivate further investment in JSON by being able to say "Switching to JSON logging in kubelet saves average of X% CPU and Y% of Memory" in release announcements.
/wg structured-logging
/sig scalability
/sig node
@kubernetes/wg-structured-logging-members
/priority important-soon
Needed to graduate JSON to Beta.
The text was updated successfully, but these errors were encountered: