unlock 0.0.13

Instrumented synchronization primitives helping you to unlock performance issues
Documentation

unlock

Helpers for tracing and troubleshooting multithreaded code.

Example Trace

Usage

Import RwLock and Mutex from this crate instead of parking_lot directly.

After this, you can instrument a section of code like this:

let condition = true;

if condition {
    unlock::capture();
}

/* do some work */

if condition {
    let events = unlock::drain();
    unlock::html::write("trace.html", &events)?;
    println!("Wrote trace.html");
}

How does it work

This library provides two facade types:

These integrate with a high performance concurrent tracing system to capture events. While this will have some overhead, we aim to make it as small as possible.

Once a workload has been instrumented, the drain function can be called to collect these events, which then can be formatted using either built-in methods such as html::write, or serialized as you please using serde for processing later.

Features

  • trace - Enable real tracing support. If this feature is disabled, this library will be replaced by a stub that can easily be optimized away.
  • parking_lot (default) - Enable support for parking_lot types. If this feature is enabled and trace is disabled, this will re-export parking_lot primitives.
  • serde - Enable serialization for events.