prettify

Aug 15, 2016

Cross compile lm benchmark for ARM

$ wget http://www.bitmover.com/lmbench/lmbench3.tar.gz
$ tar -zxvf lmbench3.tar.gz
$ cd lmbench3/src
$ cp Makefile Makefile.bak
$ vim Makefile
$ diff Makefile.bak Makefile
114c114
<  @env CFLAGS=-O MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" CC="$(CC)" OS="$(OS)" ../scripts/build all
---
>  @env CFLAGS="-O -static" MAKE="$(MAKE)" MAKEFLAGS="$(MAKEFLAGS)" CC="$(CC)" OS="$(OS)" ../scripts/build all
231c231
< $O/lmbench : ../scripts/lmbench bk.ver
---
> $O/lmbench : ../scripts/lmbench #bk.ver
$ make CC=/opt/aarch64/aarch64v8-marvell-linux-gnu-5.2.1_i686_20151110/bin/aarch64-linux-gnu-gcc OS=arm-linux TARGET=linux 

An example script to run memory test only


#!/bin/bash -x

exec 2>&1

target=linux
sizes="1k 4k 16k 32k 128k 256k 512k 1m 2m 4m 8m" 
stride="32 128 1024"

date

LOGFILE="benchmark_run_raw.log"
LOGFILE2="benchmark_run.log"
echo "Creating / cleaning out file.";
cat /dev/null > $LOGFILE;
cat /dev/null > $LOGFILE2;

TITLE=`basename ${PWD}`
echo ">>>>>>   Benchmarks is $TITLE" >> $LOGFILE

echo "\"------mhz \"">> $LOGFILE
${RUNPREFIX} ./mhz  >> $LOGFILE

echo "\"------stream -v 1 -M 8k -W5 -N 10\"">>  $LOGFILE
${RUNPREFIX} ./stream -v 1 -M 8k -W5 -N 10 2>> $LOGFILE
echo "\"------stream -v 1 -M 128k -W5 -N 10\"">>  $LOGFILE
${RUNPREFIX} ./stream -v 1 -M 128k -W5 -N 10 2>> $LOGFILE
echo "\"------stream -v 1 -M 3m -W5 -N 10\"">>  $LOGFILE
${RUNPREFIX} ./stream -v 1 -M 3m -W5 -N 10 2>> $LOGFILE


for ds in ${stride}; do
 echo "\"------lat_mem_rd \"">>  $LOGFILE
    ${RUNPREFIX} ./lat_mem_rd $(echo ${sizes} | awk '{print $NF}') ${ds}  2>> $LOGFILE
done

echo "\"------bw_mem frd \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} frd  2>> $LOGFILE
done

echo "\"------bw_mem rd \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} rd  2>> $LOGFILE
done

    echo "\"------bw_mem wr \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} wr  2>> $LOGFILE
done

echo "\"------bw_mem fwr \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} fwr  2>> $LOGFILE
done

echo "\"------bw_mem fcp \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} fcp  2>> $LOGFILE
done

echo "\"------bw_mem cp \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} cp  2>> $LOGFILE
done

echo "\"------bw_mem rdrw \"">>  $LOGFILE
for ds in ${sizes}; do
    ${RUNPREFIX} ./bw_mem ${ds} rdwr  2>> $LOGFILE
done

echo "<<<<<<   End of $TITLE" >> $LOGFILE

cat $LOGFILE | sed -r -e '/stream -v 1 -M 8k/,/------lat_mem_rd/s/(.*): (.*) (.*)/\1(\3),\2/' -e '/stride=32/,/------bw_mem frd/s/^0.00977.*|^0.01367.*|^0.01758.*|^0.01953.*|^0.02148.*|^0.02539.*|^0.02734.*|^0.0293.*|^0.03516.*|^0.03906.*|^0.04297.*|^0.05078.*|^0.05469.*|^0.05859.*|^0.07031.*|^0.07812.*|^0.08594.*|^0.10156.*|^0.10938.*|^0.11719.*|^0.14062.*|^0.15625.*|^0.17188.*|^0.20312.*|^0.21875.*|^0.23438.*|^0.28125.*|^0.3125.*|^0.34375.*|^0.40625.*|^0.4375.*|^0.46875.*|^0.5625.*|^0.625.*|^0.6875.*|^0.8125.*|^0.875.*|^0.9375.*|^1.125.*|^1.25.*|^1.375.*|^1.625.*|^1.75.*|^1.875.*|^2.25.*|^2.5.*|^2.75.*|^3.25.*|^3.5.*|^3.75.*|^4.5.*|^5.*|^5.5.*|^6.5.*|^7.0.*|^7.5.*//' -e '/stride=1024/,/------bw_mem frd/s/^0.00049.*|^0.00098.*|^0.00195.*|^0.00293.*|^0.00391.*|^0.00586.*|^0.00781.*|^0.01172.*|^0.01562.*|^0.02344.*|^0.03125.*|^0.04688.*|^0.0625.*|^0.09375.*|^0.125.*|^0.1875.*|^0.25.*|^0.375.*|^0.5.*|^6.0000.*|^0.75.*|^3.0.*//' -e '/^$/d' -e 's/"stride/stride/' -e 's/([0-9]) ([0-9])/\1,\2/' > $LOGFILE2

date

here is a link that describe how to use lmbenchmark in detail: http://www.hexiongjun.com/?p=174

No comments:

Post a Comment