Search Profiles
New announcements from Dash: Incident Management, Continuous Profiler, and more! New announcements from Dash!

Search Profiles

Search profiles by tags

Each row is a profile of a process for a short amount of time. By default, profiles are uploaded once a minute. Depending on the language, these processes are profiled between 15s and 60s.

You can filter according to infrastructure tags or application tags set up from your environment tracing configuration. By default the following facets are available:

FacetDefinition
EnvThe environment your application is running on (production, staging).
ServiceThe name of the service your code is running.
VersionThe version of your code.
HostThe hostname your profiled process is running on.
RuntimeThe type of runtime the profiled process is running (JVM, CPython).

The following measures are available:

MeasureDefinition
CPUCPU usage, measured in cores.
Memory AllocationMemory allocation rate over the course of the profile. This value can be above the amount of memory on your system because allocated memory can be garbage collected during the profile.

Profiles

Click on a line to view a specific profile:

A specic profile

The header contains information associated with your profile, like the service that generated it, or the environment and code version associated to it.

Four tabs are below the profile header:

TabDefinition
ProfilesA flame graph and summary table of the profile you are looking at. You can switch between profile types (CPU, Memory allocation).
AnalysisA set of heuristics that suggest potential issues or areas of improvement in your code. Currently only available for Java.
MetricsProfiler metrics coming from all profiles of the same service.
Runtime InfoRuntime properties in supported languages, and profile tags.

Note: In the upper right corner of each profile, there are options to:

  • Download the profile
  • Switch the profile to full screen

Profile types

In the Profiles tab, you can see all profile types available for a given language. Depending on the language, the information collected about your profile differs.

Once enabled, the following profile types are collected:

Profile typeDefinition
CPU in Java CodeShows the time each method spent running on the CPU. It includes your code that runs in the JVM (Java, Kotlin, etc), but not JVM operations or native code called from within the JVM.
AllocationShows the amount of heap memory allocated by each method, including allocations which were subsequently freed.
Wall Time in Native CodeShows the elapsed time spent in native code. Elapsed time includes time when code is running on CPU, waiting for I/O, and anything else that happens while the method is running. This profile does not include time spent running JVM bytecode, which is typically most of your application code.
Class loadShows the number of classes loaded by each method.
Exception ProfileShows the number of errors and exceptions thrown by each method.
File I/OShows the time each method spent reading from and writing to files.
LockShows the time each method spent waiting for a lock.
Socket I/OShows the time each method spent reading from and writing to socket I/O.

Once enabled, the following profile types are collected:

Profile typeDefinition
CPUShows the time each function spent running on the CPU, including Python and native code.
AllocationShows the amount of heap memory allocated by each function, including allocations which were subsequently freed - only supported with Python 3.
Allocation CountShows the number of heap allocations made by each function, including allocations which were subsequently freed.
Wall TimeShows the elapsed time used by each function. Elapsed time includes time when code is running on CPU, waiting for I/O, and anything else that happens while the function is running.
ExceptionsShows the number of caught or uncaught exceptions raised by each function.
LockShows the time each function spent in locking (waiting for or holding a lock) or the number of times a function was observed locking/unlocking a lock.
Uncaught ExceptionsShows the exceptions that were not caught by any try/except block.
ExceptionsShows the exceptions that were raised during program execution.

Once enabled, the following profile types are collected:

Profile typeDefinition
CPUShows the time each function spent running on the CPU.
AllocationShows the amount of heap memory allocated by each function since the start of the application, including allocations which were subsequently freed. Go calls this alloc_space. This is useful for investigating garbage collection load.
Allocation CountShows the number of objects allocated in heap memory by each function since the start of the application, including allocations which were subsequently freed. This is useful for investigating garbage collection load.
HeapShows the amount of heap memory allocated by each function that remained allocated since the start of the application and lived since the last garbage collection. Go calls this inuse_space. This is useful for investigating the overall memory usage of your service.
Heap CountShows the number of objects allocated in heap memory by each function, and which objects remained allocated since the start of the application and lived since the last garbage collection. This is useful for investigating the overall memory usage of your service.

Further Reading

Additional helpful documentation, links, and articles: