WiredTiger can generate statistics that are useful for providing information necessary when performance tuning your WiredTiger application. Here we focus on analyzing and reviewing the data generated by the statistics logging functionality.
The purpose of operation tracking is to visualize WiredTiger's execution so that correlations between performance anomalies are easily spotted. This operation tracking tutorial provides a general overview of operation tracking and describes ways to visualize the data in fine detail.
Linux perf
is a tool that allows counting and sampling of various events in the hardware and in the kernel. Hardware events are available via performance monitoring units (PMU); they measure CPU cycles, cache misses, branches, etc. Kernel events include scheduling context switches, page faults and block I/O. Here we provide a quick cheat sheet of how to use perf
with WiredTiger.
Instrumentation and introspection with XRay
XRay is a tool, originally developed at Google and now integrated in LLVM, that instruments the program such that when it runs it produces a trace of executed functions and their timestamps. This article explains how to instrument WiredTiger, collect the XRay traces, and analyze them.
Why is my CPU busy? FlameGraphs help visually summarize on-CPU call stacks and allow for the quick identification of hot code paths. Here we explain how to generate FlameGraphs from WiredTiger perf
data.
LLVM LibFuzzer is an in-process, coverage-guided, evolutionary fuzzing engine. It feeds a series of fuzzed inputs via a "target" function and attempts to trigger crashes, memory bugs and undefined behavior. This article explains how to build and run existing fuzzers, implement new ones and visualize coverage provided by a fuzzer.
The WiredTiger WiredTiger command line utility has facilities for examining tables and metadata, and has various other administrative functions.