summaryrefslogtreecommitdiff
path: root/contrib/ps-processor-utilization.sh
blob: c6ad2e8d7b972db8e26febcfe3179814e3407a47 (plain)
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
#!/bin/bash

# FIXME: Hardcoding, best way to get this?
HZ=1000

if [ $# -ne 3 ]; then
	echo "Usage: $0 <pid> <snapid1> <snapid2>"
	exit 1
fi

PID=$1
SNAP1=$2
SNAP2=$3

A=( `psql --no-align --tuples-only --field-separator ' ' --command "SELECT stime, utime, stime + utime AS total, extract(epoch FROM time) FROM ps_snaps a, ps_procstat b WHERE pid = ${PID} AND a.snap = b.snap AND a.snap = ${SNAP1}"` )

STIME1=${A[0]}
UTIME1=${A[1]}
TOTAL1=${A[2]}
TIME1=${A[3]}

A=( `psql --no-align --tuples-only --field-separator ' ' --command "SELECT stime, utime, stime + utime AS total, extract(epoch FROM time) FROM ps_snaps a, ps_procstat b WHERE pid = ${PID} AND a.snap = b.snap AND a.snap = ${SNAP2}"` )

STIME2=${A[0]}
UTIME2=${A[1]}
TOTAL2=${A[2]}
TIME2=${A[3]}

# Get the time difference in ticks.
TIMEDIFF=`echo "scale = 2; (${TIME2} - ${TIME1}) * ${HZ}" | bc -l`

U=`echo "scale = 2; (${TOTAL2} - ${TOTAL1}) / ${TIMEDIFF} * 100" | bc -l`

echo "Processor Utilization = ${U} %"