Index: plugins/node.d.openbsd/cpu.in
--- plugins/node.d.openbsd/cpu.in.orig
+++ plugins/node.d.openbsd/cpu.in
@@ -35,12 +35,7 @@ fi
 
 if [ "$1" = "config" ]; then
 
-	OSV=`$SYSCTL_BIN -n kern.osrelease | cut -f1 -d.`
-	if [ "$OSV" = "4" ]; then
-		STATUNITS=`$SYSCTL_BIN -n kern.clockrate | cut -f16 -d' '`
-	elif [ "$OSV" -ge "5" ]; then
-		STATUNITS=`$SYSCTL_BIN -n kern.clockrate | cut -f13 -d' '`
-	fi
+	STATUNITS=`/sbin/sysctl -n kern.clockrate | cut -f12 -d' '`
 	PERCENT=`$SYSCTL_BIN -n hw.ncpu | awk '{print ($1)*100}'`
 	NCPU=`$SYSCTL_BIN -n hw.ncpu`
 	if [ "$scaleto100" = yes ]; then
@@ -54,8 +49,9 @@ if [ "$1" = "config" ]; then
 #	SYSCRITICAL=$PERCENT*50/100
 #	INTWARNING=$PERCENT*80/100
 #	USRWARNING=$PERCENT*80/100
+#	SPINWARNING=$PERCENT*80/100
 	echo 'graph_title CPU usage'
-	echo 'graph_order system interrupt user nice idle'
+	echo 'graph_order system interrupt user nice idle spin'
 	echo "graph_args --base 1000 -r --lower-limit 0 --upper-limit $PERCENT "
 	echo 'graph_vlabel %'
 	echo 'graph_scale no'
@@ -94,6 +90,13 @@ if [ "$1" = "config" ]; then
 	echo 'nice.info CPU time spent by nice(1)d programs'
 	echo 'nice.min 0'
 	echo "nice.cdef nice,$CDEF"
+	echo 'spin.label spin'
+	echo 'spin.draw STACK'
+	echo 'spin.max 5000'
+	echo 'spin.type DERIVE'
+	echo 'spin.info CPU time spent in spin locks'
+	echo 'spin.min 0'
+	echo "spin.cdef spin,$CDEF"
 	echo 'idle.label idle'
 	echo 'idle.draw STACK'
 	echo 'idle.max 5000'
@@ -104,5 +107,12 @@ if [ "$1" = "config" ]; then
 	exit 0
 fi
 
-$SYSCTL_BIN kern.cp_time | awk '{ print "user.value " $2 "\nnice.value " $3 "\nsystem.value " $4 "\ninterrupt.value " $5 "\nidle.value " $6 }'
+NCPU=$(/sbin/sysctl -n hw.ncpu)
+set -- $(/sbin/sysctl -n kern.cp_time | sed 's/,/ /g')
 
+echo user.value $(($1*NCPU))
+echo nice.value $(($2*NCPU))
+echo system.value $(($3*NCPU))
+echo spin.value $(($4*NCPU))
+echo interrupt.value $(($5*NCPU))
+echo idle.value $(($6*NCPU))
