feat(hermes): add datadog profiling #1035
Merged
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 adds DataDog profiling to the Go portion of Hermes. Datadog provides two API's, APM tracing and full profiling. APM tracing allows defining meaningful spans over the code to measure, wheras profiling exposes all runtime metrics for the profiling mode specified.
We only have one small hot path in the message handling so the application is relatively simple, initially I opted for APM but tracing seems better.
There is a second option, which is to add
ddprof
to the Rust portion but I'm opting against this for now because while it will provide tracing for both the Rust and Go portion, the tracing will not be Go aware and be much more brittle. Ideally it would be nice to enable both, and preventddprof
from analyzing past the Go boundary, but this seems difficult to achieve and I'm not sure the Rust portion will really benefit from tracing yet.This also renames
GO_LOG_ALL
toGO_LOG
which now takes a log level, so can be configured similar toRUST_LOG
withGO_LOG=info