head	1.1;
branch	1.1.1;
access;
symbols
	netbsd-11-0-RC5:1.1.1.1
	netbsd-11-0-RC4:1.1.1.1
	netbsd-11-0-RC3:1.1.1.1
	netbsd-11-0-RC2:1.1.1.1
	netbsd-11-0-RC1:1.1.1.1
	perseant-exfatfs-base-20250801:1.1.1.1
	netbsd-11:1.1.1.1.0.30
	netbsd-11-base:1.1.1.1
	netbsd-10-1-RELEASE:1.1.1.1
	perseant-exfatfs-base-20240630:1.1.1.1
	perseant-exfatfs:1.1.1.1.0.28
	perseant-exfatfs-base:1.1.1.1
	netbsd-8-3-RELEASE:1.1.1.1
	netbsd-9-4-RELEASE:1.1.1.1
	netbsd-10-0-RELEASE:1.1.1.1
	netbsd-10-0-RC6:1.1.1.1
	netbsd-10-0-RC5:1.1.1.1
	netbsd-10-0-RC4:1.1.1.1
	netbsd-10-0-RC3:1.1.1.1
	netbsd-10-0-RC2:1.1.1.1
	netbsd-10-0-RC1:1.1.1.1
	netbsd-10:1.1.1.1.0.26
	netbsd-10-base:1.1.1.1
	netbsd-9-3-RELEASE:1.1.1.1
	cjep_sun2x-base1:1.1.1.1
	cjep_sun2x:1.1.1.1.0.24
	cjep_sun2x-base:1.1.1.1
	cjep_staticlib_x-base1:1.1.1.1
	netbsd-9-2-RELEASE:1.1.1.1
	cjep_staticlib_x:1.1.1.1.0.22
	cjep_staticlib_x-base:1.1.1.1
	netbsd-9-1-RELEASE:1.1.1.1
	phil-wifi-20200421:1.1.1.1
	phil-wifi-20200411:1.1.1.1
	is-mlppp:1.1.1.1.0.20
	is-mlppp-base:1.1.1.1
	phil-wifi-20200406:1.1.1.1
	netbsd-8-2-RELEASE:1.1.1.1
	netbsd-9-0-RELEASE:1.1.1.1
	netbsd-9-0-RC2:1.1.1.1
	netbsd-9-0-RC1:1.1.1.1
	phil-wifi-20191119:1.1.1.1
	netbsd-9:1.1.1.1.0.18
	netbsd-9-base:1.1.1.1
	phil-wifi-20190609:1.1.1.1
	netbsd-8-1-RELEASE:1.1.1.1
	netbsd-8-1-RC1:1.1.1.1
	pgoyette-compat-merge-20190127:1.1.1.1
	pgoyette-compat-20190127:1.1.1.1
	pgoyette-compat-20190118:1.1.1.1
	pgoyette-compat-1226:1.1.1.1
	pgoyette-compat-1126:1.1.1.1
	pgoyette-compat-1020:1.1.1.1
	pgoyette-compat-0930:1.1.1.1
	pgoyette-compat-0906:1.1.1.1
	pgoyette-compat-0728:1.1.1.1
	netbsd-8-0-RELEASE:1.1.1.1
	phil-wifi:1.1.1.1.0.16
	phil-wifi-base:1.1.1.1
	pgoyette-compat-0625:1.1.1.1
	netbsd-8-0-RC2:1.1.1.1
	pgoyette-compat-0521:1.1.1.1
	pgoyette-compat-0502:1.1.1.1
	pgoyette-compat-0422:1.1.1.1
	netbsd-8-0-RC1:1.1.1.1
	pgoyette-compat-0415:1.1.1.1
	pgoyette-compat-0407:1.1.1.1
	pgoyette-compat-0330:1.1.1.1
	pgoyette-compat-0322:1.1.1.1
	pgoyette-compat-0315:1.1.1.1
	pgoyette-compat:1.1.1.1.0.14
	pgoyette-compat-base:1.1.1.1
	matt-nb8-mediatek:1.1.1.1.0.12
	matt-nb8-mediatek-base:1.1.1.1
	perseant-stdc-iso10646:1.1.1.1.0.10
	perseant-stdc-iso10646-base:1.1.1.1
	netbsd-8:1.1.1.1.0.8
	netbsd-8-base:1.1.1.1
	prg-localcount2-base3:1.1.1.1
	prg-localcount2-base2:1.1.1.1
	prg-localcount2-base1:1.1.1.1
	prg-localcount2:1.1.1.1.0.6
	prg-localcount2-base:1.1.1.1
	pgoyette-localcount-20170426:1.1.1.1
	bouyer-socketcan-base1:1.1.1.1
	pgoyette-localcount-20170320:1.1.1.1
	bouyer-socketcan:1.1.1.1.0.4
	bouyer-socketcan-base:1.1.1.1
	pgoyette-localcount-20170107:1.1.1.1
	pgoyette-localcount-20161104:1.1.1.1
	localcount-20160914:1.1.1.1
	pgoyette-localcount-20160806:1.1.1.1
	pgoyette-localcount-20160726:1.1.1.1
	pgoyette-localcount:1.1.1.1.0.2
	pgoyette-localcount-base:1.1.1.1
	dtracetoolkit-2015-09-29:1.1.1.1
	FreeBSD:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2015.09.30.22.01.07;	author christos;	state Exp;
branches
	1.1.1.1;
next	;
commitid	d9nN99160jbCfkDy;

1.1.1.1
date	2015.09.30.22.01.07;	author christos;	state Exp;
branches;
next	;
commitid	d9nN99160jbCfkDy;


desc
@@



1.1
log
@Initial revision
@
text
@#!/usr/bin/ksh
#
# sampleproc - sample processes on the CPUs.
#              Written using DTrace (Solaris 10 3/05).
#
# This program samples which process is on each CPU, at a particular
# configurable rate. This can be used as an estimate for which process
# is consuming the most CPU time.
#
# $Id: sampleproc 8 2007-08-06 05:55:26Z brendan $
# 
# USAGE:	sampleproc [hertz]	# hit Ctrl-C to end sample
#
# FIELDS:
#		PID        Process ID
#		COMMAND    Command name
#		COUNT      Number of samples
#		PERCENT    Percent of CPU usage
#
# BASED ON: /usr/demo/dtrace/prof.d
#
# SEE ALSO:
#           DTrace Guide "profile Provider" chapter (docs.sun.com)
#
# PORTIONS: Copyright (c) 2005 Brendan Gregg.
#
# CDDL HEADER START
#
#  The contents of this file are subject to the terms of the
#  Common Development and Distribution License, Version 1.0 only
#  (the "License").  You may not use this file except in compliance
#  with the License.
#
#  You can obtain a copy of the license at Docs/cddl1.txt
#  or http://www.opensolaris.org/os/licensing.
#  See the License for the specific language governing permissions
#  and limitations under the License.
#
# CDDL HEADER END
#
# 09-Jun-2005   Brendan Gregg   Created this.
# 09-Jul-2005	   "      "	Last update.

### Usage
function usage
{
        cat <<-END >&2
	USAGE: sampleproc [hertz]
	   eg,
	       sampleproc               # defaults to 100 hertz
	       sampleproc 1000          # 1000 hertz
	END
	exit 1
}

### Process arguments
if (( $# == 0 )); then
        hertz=100
elif (( $# == 1 )); then
	hertz=$1
	if [[ "$hertz" = *[a-zA-Z]* ]]; then
		print "ERROR2: $hertz hertz is invalid." >&2
		exit 2
	fi
	if (( hertz > 5000 )); then
		print "ERROR3: $hertz hertz is too fast (max 5000)." >&2
		exit 3
	fi
	if (( hertz < 1 )); then
		print "ERROR4: $hertz hertz is too low (min 1)." >&2
		exit 4
	fi
else
	usage
fi

### Run DTrace
/usr/sbin/dtrace -n '
 #pragma D option quiet

 dtrace:::BEGIN
 {
	printf("Sampling at %d hertz... Hit Ctrl-C to end.\n",$1);
	self->start = timestamp;
 }

 profile:::profile-$1
 {
	@@Proc[pid, execname] = count();
	@@BigProc[pid, execname] = sum(1000); /* dont ask */
 }

 dtrace:::END
 {
	this->end = timestamp;

	printf("%5s %-20s %10s\n", "PID", "CMD", "COUNT");
	printa("%5d %-20s %10@@d\n", @@Proc);

	normalize(@@BigProc, 
	    ((`ncpus_online * $1 * (this->end - self->start))/100000000));
	printf("\n%5s %-20s %10s\n", "PID", "CMD", "PERCENT");
	printa("%5d %-20s %10@@d\n", @@BigProc);
 }
' $hertz
@


1.1.1.1
log
@Import the dtrace toolkit from FreeBSD; simple scripts such as dtruss work
unmodified. For others we'll need to add the missing probes and adjust.
This is not attached to the build.
@
text
@@
