clim.flamegraph icon indicating copy to clipboard operation
clim.flamegraph copied to clipboard

Flamegraph-style visualization of sb-sprof results in CLIM

#+TITLE: The clim.flamegraph Application #+AUTHOR: Jan Moringen #+EMAIL: [email protected] #+LANGUAGE: en

#+OPTIONS: num:nil toc:nil #+SEQ_TODO: TODO STARTED | DONE

  • Introduction

    This application is a work in progress. It allows capturing performance-related information from different sources and presenting the collected information graphically.

    Important notes

    • For the time being, please use this application with the McCLIM version at https://github.com/scymtym/mcclim ("master" branch).

    • For the time being, only SBCL and only certain versions are supported.

  • TODO Tutorial

    1. Load the application with

      #+BEGIN_SRC lisp (asdf:load-system :clim.flamegraph.sbcl-defaults) #+END_SRC

    2. Start the application with

      #+BEGIN_SRC lisp (clim.flamegraph.application:launch) #+END_SRC

    Then either record performance information using the graphical application or see [[file:examples/trace-recording.lisp]] for programmatic recording.

    When using the graphical application

    1. Add sources by typing the =Add Source= command or click the "Recording" configuration.

    2. Some sources only consider explicitly configured threads. To configure threads, click on elements of the thread list. The configuration view will indicate which sources are restricted to the selected threads.

    3. Use the "Start Recording" and "Stop Recording" buttons to create a [[glossary:run][run]].

  • STARTED Glossary

    • <glossary:run> run :: A run is a collection of coherent [[glossary:trace][traces]], usually collected in a single profiling session.

      A run can contain [[glossary:trace][traces]] for multiple threads.

    • <glossary:trace> trace :: A trace is a snapshot of a thread's execution state (i.e. stack trace) at a given time. It is an ordered sequence of [[glossary:sample][samples]] describing the stack of active function invocations.

    • <glossary:sample> sample :: A sample is a representation of an active function invocation in a given thread at a given time.

    • <glossary:node> node ::

    • <glossary:region> region ::