Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Sanghyun-Hong/812b6fbbd87ba7c301f10fdbb46fd5c5 to your computer and use it in GitHub Desktop.
Save Sanghyun-Hong/812b6fbbd87ba7c301f10fdbb46fd5c5 to your computer and use it in GitHub Desktop.
intelcpu.sh
#!/usr/bin/sh
#
# intelcpi - measure CPI and utilization on Intel processors.
#
# USAGE: intelcpi [interval]
# eg,
# intelcpi 0.1 # for 0.1 second intervals
#
# CPI shows how memory intensive CPU workloads are.
#
# Copyright 2011 Joyent, Inc. All rights reserved.
# Copyright 2011 Brendan Gregg. All rights reserved.
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
interval=${1:-1} # default interval, 1 second
set -- `kstat -p unix:0:system_misc:ncpus` # assuming no psets,
cpus=$2 # number of CPUs
pics='instr_retired.any' # instructions
pics=$pics,'cpu_clk_unhalted.ref,sys' # cycles
/usr/sbin/cpustat -tc $pics $interval | nawk '
BEGIN { printf "%16s %8s %8s\n", "Instructions", "CPI", "%CPU"; }
NR > 1 {
total += $4;
instructions += $5;
cycles += $6;
}
NR > 1 && (((NR - 1) % '$cpus') == 0) {
printf "%16u %8.2f %8.2f\n", instructions,
cycles / instructions,
100 * cycles / total ;
total = 0;
cycles = 0;
instructions = 0;
}
'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment