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

Profiling 8.10 updates #3234

Merged
merged 22 commits into from
Sep 19, 2023
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/en/observability/images/profiling-elastic-agent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/en/observability/images/profiling-flamegraph-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/en/observability/images/profiling-setup-popup.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The following example shows how to configure the `-no-kernel-version-check` in t

[source,bash]
----
sudo pf-host-agent/pf-host-agent -no-kernel-version-check=true ...'
sudo pf-host-agent/pf-host-agent -no-kernel-version-check=true
----


Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ The following example shows how to configure the Universal Profiling agent with

[source,bash]
----
sudo pf-host-agent/pf-host-agent -probabilistic-threshold=50 -probabilistic-interval=2m30s ...'
sudo pf-host-agent/pf-host-agent -probabilistic-threshold=50 -probabilistic-interval=2m30s
----
8 changes: 6 additions & 2 deletions docs/en/observability/profiling-upgrade.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,18 @@
[[profiling-upgrade-process]]
== Upgrade process

To upgrade Universal Profiling, you need to:
To upgrade from all versions earlier than 8.10 (GA), you need to:

. Perform a stack upgrade in {ecloud}
. Stop profiling data ingestion
. Delete existing profiling data
. Delete existing profiling data
. Setup Universal Profiling from scratch
. Start profiling data ingestion

To upgrade from version 8.10 or later, you need to:

Copy link
Member

Choose a reason for hiding this comment

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

The first step here should be:

. Stop profiling data ingestion

Copy link
Contributor

Choose a reason for hiding this comment

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

Why would we suggest to stop ingestion?
If our data model will always be backward compatible, there is no need to stop ingesting data, as the new replicas will push the new version (maybe with additional doc fileds?) while the others will keep sending the old data.

Are you saying that we have strict mapping that does not allow adding fields?

Copy link
Member

Choose a reason for hiding this comment

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

I mentioned this because the last step that was mentioned was to start profiling data ingestion. So we either have to add this step or remove the step to start data ingestion.

. Perform a stack upgrade in {ecloud}

[discrete]
[[profiling-upgrade-in-cloud]]
=== Perform a stack upgrade in the {ecloud} console
Expand Down
14 changes: 6 additions & 8 deletions docs/en/observability/universal-profiling.asciidoc
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
[[universal-profiling]]
= Universal Profiling


Elastic Universal Profiling is a continuous profiling tool running on top of the {stack}. For a quick overview of Universal Profiling, see the https://www.elastic.co/observability/ebpf-continuous-code-profiling[Universal Profiling product page].
Elastic Universal Profiling is a whole-system, always-on, continuous profiling solution that eliminates the need for code instrumentation, recompilation, on-host debug symbols and service restarts. Leveraging eBPF, Universal Profiling operates within the Linux kernel space, capturing only the needed data with minimal overhead in an unobtrusive manner. For a quick overview of Universal Profiling, see the https://www.elastic.co/observability/ebpf-continuous-code-profiling[Universal Profiling product page].
iogbole marked this conversation as resolved.
Show resolved Hide resolved

On this page, you'll find information on:

Expand Down Expand Up @@ -128,7 +127,7 @@ You can use flamegraphs to:
You can navigate a flamegraph on both the horizontal and vertical axes:

* Horizontal axes: every process that is sampled has at least a rectangle under the `root` frame. In Universal Profiling flamegraphs, you will likely discover the existence of processes you don't control, but that are eating a significant portion of your CPU resources.
* Vertical axes: traversing a process' call stack allow to identify which parts of the process are executing most frequently. This allows pinpointing functions or methods that _should_ be negligible but are instead a big portion of your call sites.
* Vertical axes: traversing a process' call stack allows you to identify which parts of the process are executing most frequently. This allows pinpointing functions or methods that _should_ be negligible but are instead a big portion of your call sites.

You can drag the graph up, down, right, or left to move the visible area.

Expand All @@ -138,13 +137,12 @@ The summary square in the bottom-left corner of the graph lets you shift the vis
The position of the summary square in the bottom-right corner adjusts when you drag the flamegraph, and moving the summary square
adjusts the visible area in the bigger panel.

Enabling *Show information window* on the top right opens the *Frame information* window.
Clicking a rectangle in the flamegraph highlights the frame's detail in the window.
Hovering your mouse over a rectangle in the flamegraph displays the frame's details in the window. To see more frame information, click on the "Show more information" icon after pinning the tooltip.
iogbole marked this conversation as resolved.
Show resolved Hide resolved

[role="screenshot"]
image::images/profiling-flamegraph-detailed-view.png[]

Below the graph area, a search bar allows to highlight specific text in the flamegraph; here you may search binaries, function or file names and move over the occurrences.
Below the graph area, a search bar allows you to highlight specific text in the flamegraph; here you may search binaries, function or file names and move over the occurrences.
iogbole marked this conversation as resolved.
Show resolved Hide resolved

[discrete]
[[profiling-functions-intro]]
Expand Down Expand Up @@ -182,14 +180,14 @@ or across multiple dimensions.
When switching to *Differential flamegraph* or *Differential TopN functions* from the tabs at the top, you see two separate search bars and datetime pickers.
The left-most filters represent the data you want to use as baseline for comparison, while the right-most filters represents the data that will be compared against the baseline.

Hitting refresh on each of the data filters triggers a frequency comparison that highlights the CPU usage change.
Hitting refresh on each data filter triggers a frequency comparison that highlights the CPU usage change.

In differential functions, the right-most column of functions has green or orange score calculator that represents the relative difference of position as the heaviest CPU hitting functions.

[role="screenshot"]
image::images/profiling-functions-differential-view.png[]

In differentials flamegraphs, the difference with the baseline is highlighted with color and hue.
In differential flamegraphs, the difference with the baseline is highlighted with color and hue.
A vivid green colored rectangle indicates that a frame has been seen in _less_ samples compared to the baseline, which means an improvement.
A vivid red colored rectangle indicates a frame has been seen in more samples being recorded on CPU, indicating a potential performance regression.

Expand Down