-
Notifications
You must be signed in to change notification settings - Fork 271
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
trace: update tracing-subscriber
dependency to 0.2.1
#426
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This release makes a number of significant performance improvements when filtering events emitted through the `log` compatibility layer (such as from `hyper` and `h2`). See tokio-rs/tracing#586 for details. Since these performance improvements apply to cases where a filter _disables_ an event, as well as to enabling events, this should improve the proxy's performance with the default log configuration, especially given that `h2` and `hyper` emit a _lot_ of `trace`-level logs in hot paths. Ignoring those logs should now have a much lower overhead. I'm going to do some benchmarking to quantify the performance improvement from this change, so I'll add benchmark results when my tests complete. In addition, 0.2.1 fixes a bug where `EnvFilter`'s filter selection differed from the `env_logger` behavior it was intended to emulate. If the most specific filter directive that applies to a given event did not enable that event's level, filter selection would continue to try decreasingly-specific filters, and would only disable the event if **no** filters enabled it (see tokio-rs/tracing#512). In practice, this means that if you set a filter like ``` LINKERD2_PROXY_LOG=warn,linkerd=debug,linkerd2_metrics=info ``` in an attempt to disable the `debug`-level events in the `linkerd2_metrics` crate, they would still be enabled by the `linkerd=debug` directive. This is now fixed. Signed-off-by: Eliza Weisman <eliza@buoyant.io>
olix0r
approved these changes
Feb 17, 2020
seanmonstar
approved these changes
Feb 17, 2020
olix0r
added a commit
to linkerd/linkerd2
that referenced
this pull request
Feb 19, 2020
This release includes the results from continued profiling & performance analysis. In addition to modifying internals to prevent unwarranted memory growth, we've introduced new metrics to aid in debugging and diagnostics: a new `request_errors_total` metric exposes the number of requests that receive synthesized responses due to proxy errors; and a suite of `stack_*` metrics expose proxy internals that can help us identify unexpected behavior. --- * trace: update `tracing-subscriber` dependency to 0.2.1 (linkerd/linkerd2-proxy#426) * Reimplement the Lock middleware with tokio::sync (linkerd/linkerd2-proxy#427) * Add the request_errors_total metric (linkerd/linkerd2-proxy#417) * Expose the number of service instances in the proxy (linkerd/linkerd2-proxy#428) * concurrency-limit: Share a limit across Services (linkerd/linkerd2-proxy#429) * profiling: add benchmark and profiling scripts (linkerd/linkerd2-proxy#406) * http-box: Box HTTP payloads via middleware (linkerd/linkerd2-proxy#430) * lock: Generalize to protect a guarded value (linkerd/linkerd2-proxy#431)
olix0r
added a commit
to linkerd/linkerd2
that referenced
this pull request
Feb 19, 2020
This release includes the results from continued profiling & performance analysis. In addition to modifying internals to prevent unwarranted memory growth, we've introduced new metrics to aid in debugging and diagnostics: a new `request_errors_total` metric exposes the number of requests that receive synthesized responses due to proxy errors; and a suite of `stack_*` metrics expose proxy internals that can help us identify unexpected behavior. --- * trace: update `tracing-subscriber` dependency to 0.2.1 (linkerd/linkerd2-proxy#426) * Reimplement the Lock middleware with tokio::sync (linkerd/linkerd2-proxy#427) * Add the request_errors_total metric (linkerd/linkerd2-proxy#417) * Expose the number of service instances in the proxy (linkerd/linkerd2-proxy#428) * concurrency-limit: Share a limit across Services (linkerd/linkerd2-proxy#429) * profiling: add benchmark and profiling scripts (linkerd/linkerd2-proxy#406) * http-box: Box HTTP payloads via middleware (linkerd/linkerd2-proxy#430) * lock: Generalize to protect a guarded value (linkerd/linkerd2-proxy#431)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This release makes a number of significant performance improvements when
filtering events emitted through the
log
compatibility layer (such asfrom
hyper
andh2
). See tokio-rs/tracing#586 for details.Since these performance improvements apply to cases where a filter
disables an event, as well as to enabling events, this should improve
the proxy's performance with the default log configuration, especially
given that
h2
andhyper
emit a lot oftrace
-level logs in hotpaths. Ignoring those logs should now have a much lower overhead.
In addition, 0.2.1 fixes a bug where
EnvFilter
's filter selectiondiffered from the
env_logger
behavior it was intended to emulate. Ifthe most specific filter directive that applies to a given event did not
enable that event's level, filter selection would continue to try
decreasingly-specific filters, and would only disable the event if
no filters enabled it (see tokio-rs/tracing#512).
In practice, this means that if you set a filter like
in an attempt to disable the
debug
-level events in thelinkerd2_metrics
crate, they would still be enabled by thelinkerd=debug
directive.This is now fixed.
Signed-off-by: Eliza Weisman eliza@buoyant.io