Skip to content

Intelligent Activity Metering

Research into intelligent instrumentation, metering and collection of software execution behavior, performance, resource consumption and costing data.

Articles
Intelligent Activity Metering (IAM) – An Introduction

Intelligence & Strategies
EntryPoint – dynamically enables metering on a per thread basis when one or more fully or partially qualified named probes become active on the probe stack
ExitPointdisables metering of a thread’s execution stack at the first “exitpoint” labeled probe then re-enables metering following completion of the same probe
TraceDepth – limits metering to a particular instrumented call (stack) depth range
TierPoint – dynamically limits metering to execution points at the boundaries of user defined tiers based on probe name groups
CallPoint - only meters firing probes labeled “callpoint” or the immediate direct child firing probes of a “callpoint” labeled probe
Outline – dynamically enables metering of probes which represent root or leaf call(er|ee) tree nodes
Kinline – dynamically disables the metering of probes called within the immediate scope of another metered probe sharing the same probe name prefix
NonRecursive – only meters a firing probe if there is not already a same named probe active on top of the thread stack
NonReentrant – only meters a firing probe if there is not already a same named probe currently firing on the thread stack
Concurrent – only meters a firing probe if one or more probes of the same name are firing (though not necessarily metered) in other threads
TracePoint - enables or disables the metering of all firing probes including nested ones based on a specified sampling frequency
TracePath - similar to the hotspot strategy but instead of being probe based it uses the metering profile of the current probe path
TracePermit - limits the degree of concurrent metering determined at the top most traced probe point and applied to all nested firing probes
TraceCycle – dynamically disables the metering of probes nested within the metering window of repeating probe (call) sequence on the probe stack
AutoTune - automatically increments a hotspot threshold based on the continuous monitoring and evaluation of a select few probes marked as autotune monitors
Budget - dynamically manages the metering overhead by way of a fixed unit cost for each metered probe and an overhead percentage limit
Inline – disables metering of probes with an inherent min below a threshold and which is called directly within the scope of another probe below the same threshold
CallPrune – dynamically disables metering of probes having a metering total that is X% less than the meter reading total for its enclosing parent probe
Interceptor – an extension point which can be used to dynamically control metering as well as the metered execution itself via delayed callback completion
Strategy – dynamic metering of a firing probe based on the voting of one or more chained strategies: hotspot, frequency, interval, delay, warmup, burst, sample, random, exclude, include, busy thread, busy, high memory, checkpoint, initial, dynamic
Dynamic - A condition based metering extension offering both coarse grain and fine grain dynamic control over which probes are metered based on enablement flags set at the process, thread, process/group, and thread/group levels
Hotspot – dynamically disables metering of probes based on a hotspot score card with credits and debits assigned based on threshold comparisons
SpotCheck - randomly elects to meter a firing probe and then temporarily disables the metering of all direct or indirect called methods (enclosed firing probes)
Sprint – disables metering of probes not having a metering value >= threshold, within a defined sequence length, run, for a specified number of laps
Descent – disables the metering of direct and indirect nested probes of a caller probe until after a specified number of global firings for the caller probe
SameTime – that only enables the metering of probes that are fired during the metering interval of one or more specified probes or groups
Recur – enables the metering of a named probe subsequent to the completion of a firing of the same named probe within the scope of a thread context

Case Studies
Scala Compilertierpoint (part 2), IMRR, hotspot (part 4), tracedepth, nonrecursive, tracecycle (part 5), inline, budget (part 6)