File: 180provider_cpc.d

package info (click to toggle)
dtrace 2.0.5-1
  • links: PTS
  • area: main
  • in suites: sid
  • size: 24,408 kB
  • sloc: ansic: 61,247; sh: 17,997; asm: 1,717; lex: 947; awk: 754; yacc: 695; perl: 37; sed: 17; makefile: 15
file content (59 lines) | stat: -rwxr-xr-x 1,769 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
 * Linux DTrace
 * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
 * Licensed under the Universal Permissive License v 1.0 as shown at
 * http://oss.oracle.com/licenses/upl.
 */

#!/usr/sbin/dtrace -qs

/*
 *  SYNOPSIS
 *    sudo ./180provider_cpc.d
 *
 *  DESCRIPTION
 *    The cpc (CPU Performance Counter) provider can be used
 *    profile activity based on hardware performance counters.
 *
 *    For a list of cpc probes, use "dtrace -lP cpc".
 *
 *    Probe specifications are of the form:
 *
 *        cpc:::<event name>-<mode>-<count>
 *
 *    The "event name" tells you which counters are available
 *    on your hardware.
 *
 *    The "mode" can be "kernel", "user", or "all", even if
 *    only "all" is listed.
 *
 *    The "count" indicates how many times the event is seen
 *    before the probe fires.  If the listed "count" is not
 *    suitable for your purposes, you can specify a different
 *    value.  It is usually best to start with a higher value,
 *    decreasing it if there are not enough probe firings,
 *    rather than starting too low and inundating your system
 *    with very many probe firings.
 *
 *    Here, an event perf_count_sw_cpu_clock-all-1000000000
 *    was listed by "dtrace -lP cpc".  We tweak the "mode"
 *    and "count" for our purposes.  The probe will fire every
 *    300 usecs of kernel activity.  We use aggregations to
 *    count how many times each call stack is seen.  The
 *    aggregation will be printed by default when the D
 *    script exits, after 10 seconds.
 *
 *    Consult the documentation for further information about
 *    cpc probes.
 */

cpc:::perf_count_sw_cpu_clock-kernel-300000000
{
	@[stack()] = count();
}

/* run for only 10 seconds */
tick-10s
{
	exit(0);
}