|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
|
|
|
#
|
|
|
|
# Filename: package/.../cpuburn/cpuburn.sh
|
|
|
|
# Copyright (C) 2008 The OpenSDE Project
|
|
|
|
# Copyright (C) 2004 - 2006 The T2 SDE Project
|
|
|
|
# Copyright (C) 1998 - 2003 Clifford Wolf
|
|
|
|
#
|
|
|
|
# More information can be found in the files COPYING and README.
|
|
|
|
#
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
# the Free Software Foundation; version 2 of the License. A copy of the
|
|
|
|
# GNU General Public License can be found in the file COPYING.
|
|
|
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
|
|
|
|
|
|
|
errors=`mktemp -t cpuburn.XXXX`
|
|
|
|
start=`date "+%s"` ; command= ; jobs=1
|
|
|
|
|
|
|
|
help() {
|
|
|
|
cat << 'EOT'
|
|
|
|
|
|
|
|
Usage: $0 [ -j Jobs ] { -k6 | -k7 | -p5 | -p6 | -bx | -mmx } [ -mem Mem ]
|
|
|
|
|
|
|
|
The -mem option is only available for the bx and mmx tests. Possible values
|
|
|
|
for Mem are: 2kb, 4kb, 8kb, 16kb, 32kb, 64kb, 128kb, 256kb, 512kb, 1MB, 2MB,
|
|
|
|
4MB, 8MB, 16MB, 32MB and 64MB.
|
|
|
|
|
|
|
|
EOT
|
|
|
|
rm $errors
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
while [ "$#" != 0 ]
|
|
|
|
do
|
|
|
|
case "$1" in
|
|
|
|
-j)
|
|
|
|
jobs=$2 ; shift ;;
|
|
|
|
|
|
|
|
-bx)
|
|
|
|
command="burnBX" ;;
|
|
|
|
-k6)
|
|
|
|
command="burnK6" ;;
|
|
|
|
-k7)
|
|
|
|
command="burnK7" ;;
|
|
|
|
-mmx)
|
|
|
|
command="burnMMX" ;;
|
|
|
|
-p5)
|
|
|
|
command="burnP5" ;;
|
|
|
|
-p6)
|
|
|
|
command="burnP6" ;;
|
|
|
|
|
|
|
|
-mem)
|
|
|
|
[ "$command" != burnBX -a "$command" != burnMMX ] && help
|
|
|
|
|
|
|
|
case "$2" in
|
|
|
|
2kb)
|
|
|
|
command="$command A" ;;
|
|
|
|
4kb)
|
|
|
|
command="$command B" ;;
|
|
|
|
8kb)
|
|
|
|
command="$command C" ;;
|
|
|
|
16kb)
|
|
|
|
command="$command D" ;;
|
|
|
|
32kb)
|
|
|
|
command="$command E" ;;
|
|
|
|
64kb)
|
|
|
|
command="$command F" ;;
|
|
|
|
128kb)
|
|
|
|
command="$command G" ;;
|
|
|
|
256kb)
|
|
|
|
command="$command H" ;;
|
|
|
|
512kb)
|
|
|
|
command="$command I" ;;
|
|
|
|
1MB)
|
|
|
|
command="$command J" ;;
|
|
|
|
2MB)
|
|
|
|
command="$command K" ;;
|
|
|
|
4MB)
|
|
|
|
command="$command L" ;;
|
|
|
|
8MB)
|
|
|
|
command="$command M" ;;
|
|
|
|
16MB)
|
|
|
|
command="$command N" ;;
|
|
|
|
32MB)
|
|
|
|
command="$command O" ;;
|
|
|
|
64MB)
|
|
|
|
command="$command P" ;;
|
|
|
|
*)
|
|
|
|
help ;;
|
|
|
|
esac
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
help ;;
|
|
|
|
esac
|
|
|
|
shift
|
|
|
|
done
|
|
|
|
|
|
|
|
[ "$command" = "" ] && help
|
|
|
|
desc="${jobs}x ${command#burn}"
|
|
|
|
|
|
|
|
while [ $jobs -gt 0 ] ; do
|
|
|
|
(
|
|
|
|
PATH=".:$PATH"
|
|
|
|
while true ; do
|
|
|
|
eval "$command"
|
|
|
|
date "+%T - $?" >> $errors
|
|
|
|
done
|
|
|
|
) &
|
|
|
|
jobs=$(( $jobs - 1 ))
|
|
|
|
done &> /dev/null
|
|
|
|
|
|
|
|
trap "fuser -9 -k $errors > /dev/null ; rm $errors ; exit 0" INT TERM
|
|
|
|
echo "Using temp file $errors ..."
|
|
|
|
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
tm=$(( `date +%s` - $start ))
|
|
|
|
tm=$( printf '%02d:%02d:%02d:%02d' \
|
|
|
|
$(( ($tm / (60*60*24)) )) \
|
|
|
|
$(( ($tm / (60*60)) % 24 )) \
|
|
|
|
$(( ($tm / 60) % 60 )) \
|
|
|
|
$(( $tm % 60 )) )
|
|
|
|
echo `date "+%T ($tm)"` " [$desc] " Load average: \
|
|
|
|
`uptime | sed "s,.*average: ,,"`, "" `wc -l < $errors` Errors.
|
|
|
|
sleep 5
|
|
|
|
done
|
|
|
|
|