PerfCounters

Experimental, do not use in production, could blow up your Rubies.

What

Read the CPU's performance counters from Ruby using perf_event_open(2).

Usage

require 'perf_counters'
events = [
  Event::INSTRUCTIONS,
  Event::CPU_CYCLES,
  Event::CACHE_MISSES,
]
perf = PerfCounters::Measurement.new(
  exclude_kernel: true,
  events: events,
)
perf.start
# do something here
perf.stop
=> {:instructions=>3276, :cpu_cycles=>18651, :cache_misses=>24}

Contributing

Requirements

A modern Linux machine (unfortunately, most VMs don't virtualize perf counters) with perf installed.

Install

$ bin/setup

Compile

$ rake compile

Run tests

$ rake [test]