diff --git a/contents.rst b/contents.rst index d239a3e..20136a4 100644 --- a/contents.rst +++ b/contents.rst @@ -26,10 +26,12 @@ Indices and tables :hidden: src/glossary + src/tools * :ref:`genindex` * :ref:`search` * :ref:`glossary` +* :ref:`tools` Bibliography diff --git a/src/tools.rst b/src/tools.rst new file mode 100644 index 0000000..7d71ef0 --- /dev/null +++ b/src/tools.rst @@ -0,0 +1,139 @@ +.. _tools: + +Tools +===== + +Criterion +--------- + +`Criterion `__ is a library for microbenchmarking in Haskell. + +* :doc:`Criterion, Gauge, and Tasty-Bench `. + +Eventlog +-------- + +`Eventlog `__ is a GHC runtime system feature that logs events at runtime of a compiled program. It provides runtime information on the heap, the garbage collector, the scheduler, and arbitrary events that a user inserts into their own code. + +* :doc:`Eventlog `. +* :ref:`Klister — investigating a memory leak `. +* :ref:`Klister — locating allocations with info tables `. + +eventlog2html +~~~~~~~~~~~~~ + +`eventlog2html `__ is a tool for creating interactive visualisations of eventlogs. In particular, it creates interactive charts from the heap profiling events. + +* :doc:`Eventlog `. +* :ref:`Klister — investigating a memory leak `. +* :ref:`Klister — locating allocations with info tables `. + +eventlog-live +~~~~~~~~~~~~~ + +`eventlog-live `__ analyses the eventlog of any Haskell program and streams the resulting telemetry data to any observability platform that supports the OpenTelemetry protocol. + +ghc-events +~~~~~~~~~~ + +`ghc-events `__ is a library and a tool for parsing .eventlog files from GHC. + +* :ref:`Eventlog — Requirements `. + +hp2ps +~~~~~ + +`hp2ps `__ converts a .hp file produced by the -h runtime option into a PostScript graph of the heap profile. + +* :ref:`Klister — investigating a memory leak `. + +ghc-debug +--------- + +`ghc-debug `__ provides external inspection of the heap of a Haskell program, supporting analysis of objects, references, and memory use. + +* :doc:`GHC Debug `. + +GHC-vis +------- + +`ghc-vis `__ is a tool to visualize live Haskell data structures in GHCi. + +* :ref:`Memory Footprints of Data Types — Use GHC-vis `. + + +inspection-testing +------------------ + +`inspection-testing `__ is a GHC plugin that allows you to embed assertions about the intermediate code into your Haskell code, and have them checked by GHC. + +* :doc:`Inspection Testing `. + + +Linux perf +---------- + +`Linux perf `__ can instrument CPU performance counters, tracepoints, kprobes, and uprobes (dynamic tracing). + +* :doc:`Linux perf `. + +Speedscope +~~~~~~~~~~ + +`Speedscope `__ is an interactive web-based viewer for performance profiles. + +* :ref:`Linux perf — Helpful One Liners `. + +NoThunks +-------- + +`NoThunks `__ is a Haskell library to examine values for unexpected thunks, which can then be used in assertions. + +* :doc:`Nothunks `. + +Tasty-Bench +----------- + +`tasty-bench `__ is a Haskell framework for performance measurement with a Tasty-style interface. + +* :doc:`Criterion, Gauge, and Tasty-Bench `. + +ThreadScope +----------- + +`ThreadScope `__ is a tool for performance profiling of parallel Haskell programs. + +* :doc:`ThreadScope `. + +Ticky-Ticky Profiling +--------------------- + +`Ticky-Ticky Profiling `__ is very simple (conceptually): instrument the C code generated by GHC with a lot of extra code that updates counters when various (supposedly) interesting things happen, and generate a report giving the values of the counters when your program terminates. GHC does this instrumentation for you when you compile your program with a special flag. + +* :doc:`TickyTicky `. +* :ref:`How to Debug — Keep an Audit Trail `. +* :ref:`Klister — Restate the Problem `. +* :ref:`Klister — Optimization 1: Better Data Structures: Maps `. +* :ref:`Klister — Optimization 4: Fixing allScopeSets `. + +Valgrind +-------- + +`Valgrind `__ is an instrumentation framework for building dynamic analysis tools. It comes with a set of tools each of which performs some kind of debugging, profiling, or similar task that helps you improve your programs. + +* :doc:`Valgrind `. + +Cachegrind +~~~~~~~~~~ + +`Cachegrind `__ is a Valgrind tool, a high-precision tracing profiler. + +* :doc:`Using Cachegrind `. + +Weigh +----- + +`Weigh `__ is a Haskell package to measure allocations of data constructors and functions. + +* :doc:`Weigh `. +* :ref:`Memory Footprints of Data Types — Other Ways `.