Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

How to use it?

(1) start the compose/ozone cluster.

(2) Open the /prof endpoint on any of the webui. For example use http://localhost:9876/prof for profiling Ozone.

Image Removed

(3) Enable kernel parameters as written in the page (and reopen the /prof page)

Code Block
sudo su -
echo 1 > /proc/sys/kernel/perf_event_paranoid
echo 0 > /proc/sys/kernel/kptr_restrict

(4) Wait for 10 seconds and check the results in the browser:

Image Removed

(5) What does it show?

The bottom line is the 100% time of the execution. You can see how this 100% of the time is shared between the different method...

You can click to any of the segments to show the details of that specific method execution.

URL parameters

    • cpu
    • page-faults
    • context-switches
    • cycles
    • instructions
    • cache-references
    • cache-misses
    • branches
    • branch-misses
    • bus-cycles
    • L1-dcache-load-misses
    • LLC-load-misses
    • dTLB-load-misses
    • mem:breakpoint
    • trace:tracepoint

How to use it with my own cluster?

(1) Download async profiler

(2) Define the path of the async profiler with an environment variable

Code Block
ASYNC_PROFILER_HOME=/opt/profiler

(3) Enable the /prof servlet:

Code Block
<property><name>hdds.profiler.endpoint.enabled</name><value>true</value></property>

How does it work?

It's based on a command line profiler: async-profiler. This is a sample-based profiler: it collects multiple the thread dumps over the time and calculate the cpu time for the methods based on statistics.

As a result:

  1. More accurate time can be get with running it more time
  2. The overhead is negligible (no instrumentation)

The profiler itself can be used from command linen without any magic. But we adopted a helper servlet from HIVE to make it easier to run. The /prof servlet itself executes the profiler and display the result if it's finished.

How to troubleshoot?

(1) the executed command is display on the /prof servlet. Try to execute it manually.

(2) check the output directory (/tmp/prof-output/)

It it safe?

Only at home, not for production.See: Java Profiling of Ozone