if [ -n "$1" ]; then
PRECISION="$1"
else
PRECISION=10000
fi
CPUINFO="/proc/cpuinfo"
MEMINFO="/proc/meminfo"
echo "Linux shell CPU benchmark"
echo "------------------------------------"
echo "Usage: $0
echo
BCCMD=$(which bc)
if [ -z "$BCCMD" ]; then
echo "bc command not found... exiting now"
exit
fi
echo -n "Getting CPU data.... "
#get cpu data
if [ -r $CPUINFO ]; then
VENDOR=$(cat "$CPUINFO" | grep vendor_id | head -n1 | cut -f2 -d':'| cut -c2- )
MODEL=$(cat "$CPUINFO" | grep "model name" | head -n1 | cut -f2 -d':' | cut -c2- | sed -e 's/ */ /g')
SPEED=$(cat "$CPUINFO" | grep "cpu MHz" | head -n1 | cut -f2 -d':' | cut -c2- )
CACHE=$(cat "$CPUINFO" | grep "cache size" | head -n1 | cut -f2 -d':' | cut -c2-)
LMFLAG=$(cat "$CPUINFO" | grep flags | head -n1 | cut -f2 -d':' | tr ' ' '\n' | grep lm)
if [ "$LMFLAG" = "lm" ]; then
CPU64="1"
else
CPU64="0"
fi
echo "[OK]"
else
CPU64=""
echo "[NOT FOUND]"
fi
echo -n "Getting memory data..."
#get memory data
if [ -r "$MEMINFO" ]; then
MEMTOTAL=$(cat "$MEMINFO" | grep MemTotal | cut -f2 -d':' | cut -c2- | sed -e 's/ *//g')
echo "[OK]"
else
MEMTOTAL=""
echo "[NOT FOUND]"
fi
echo -n "Getting machine, OS and Kernel data..."
#get machine,os,kernel data
UNAME_CMD=$(which uname)
if [ -n "$UNAME_CMD" ]; then
#MACHINE=$($UNAME_CMD -m)
OS=$($UNAME_CMD -o)
KERNEL=$($UNAME_CMD -r)
echo "[OK]"
else
OS=""
KERNEL=""
echo "[NOT FOUND]"
fi
#get distro name
LSBRELEASE=$(which lsb_release 2>/dev/null)
if [ -n "$LSBRELEASE" ]; then
DISTRO=$($LSBRELEASE -d | cut -f2 -d':' | tr -d '\t')
elif [ $(ls /etc/*version 2>/dev/null | wc -l) -gt 0 ]; then
DISTRO=$(cat $(ls /etc/*version | head -n1))
elif [ $(ls /etc/*release 2>/dev/null | wc -l) -gt 0 ]; then
DISTRO=$(cat $(ls /etc/*release | head -n1))
elif [ -f /proc/version ]; then
DISTRO=$(cat /proc/version)
else
echo "[NOT FOUND]"
DISTRO=""
fi
echo -n "Benchmarking (precision=$PRECISION)..."
#benchmarking
if [ -n "$BCCMD" ]; then
SCORE=$((time echo "scale=$PRECISION;a(1)*4" | $BCCMD -l) 2>&1 | grep real | sed -e 's/ */ /g' | tr '\t' ' ' | cut -f2 -d' ')
#echo "SCORE#$SCORE"
echo "[OK]"
else
SCORE=""
echo "[ERROR]"
fi
#print values
echo
echo "--- cut here ---"
echo "DISTRO#$DISTRO"
echo "OS#$OS"
echo "KERNEL#$KERNEL"
echo "VENDOR#$VENDOR"
echo "MODEL#$MODEL"
echo "SPEED#$SPEED"
echo "CACHE#$CACHE"
echo "CPU64#$CPU64"
echo "MEMTOTAL#$MEMTOTAL"
echo "PRECISION#$PRECISION"
echo "SCORE#$SCORE"
echo "--- cut here ---"