/* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * This D script is used as an example in the Solaris Dynamic Tracing Guide * wiki in the "sched Provider" Chapter. * * The full text of the this chapter may be found here: * * http://docs.oracle.com/cd/E36784_01/html/E36846/sched-provider.html * * On machines that have DTrace installed, this script is available as * whererun.d in /usr/demo/dtrace, a directory that contains all D scripts * used in the Solaris Dynamic Tracing Guide. A table of the scripts and their * corresponding chapters may be found here: * * file:///usr/demo/dtrace/index.html */ #pragma D option quiet dtrace:::BEGIN { start = timestamp; } sched:::on-cpu /execname == $$1/ { self->ts = timestamp; } sched:::off-cpu /self->ts/ { @[cpu] = sum(timestamp - self->ts); self->ts = 0; } profile:::tick-1sec /++x == 10/ { exit(0); } dtrace:::END { printf("CPU distribution over %d seconds:\n\n", (timestamp - start) / 1000000000); printf("CPU microseconds\n--- ------------\n"); normalize(@, 1000); printa("%3d %@d\n", @); }