/**********************************************************************
* Buildroot lmbench使用方法
* 说明:
* 想在i.mx6上用Buildroot编译出lmbench,结果发现全是单独的命令,不知道
* 怎么使用,脚本需要用到perl,所以编译需要选好perl。
*
* 2018-6-21 深圳 宝安西乡 曾剑锋
*********************************************************************/ 一、参考文档:
. Performances
http://www.armadeus.org/wiki/index.php?title=Performances
. Linux系统性能测试工具Lmbench
https://wiki.deepin.io/mediawiki/index.php?title=Linux%E7%B3%BB%E7%BB%9F%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7Lmbench
. 性能测试工具Lmbench使用说明
https://wenku.baidu.com/view/aa29812727d3240c8447ef9a.html 二、解决办法:
. 将Buildroot编译出来的文件夹打包,目前我自己的是:/output/build/lmbench-3.0-a9
. 拷贝到主板上解压;
. cd /jump/to/lmbench/dir/
. cd scripts
. OS=arm ./config-run (生成的配置放在后面)
MULTIPLE COPIES [default ]
Job placement selection:
MB [default ]
SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all] HARDWARE
then default value (except for result mailing, choose no) except
Processor mhz [default MHz, 5.2910 nanosec clock]
FSDIR [default /var/tmp] /mnt/host/
Mail results [default yes] no
. OS=arm ./results
Using config in CONFIG.buildroot
Sat Jan :: UTC
Latency measurements
Sat Jan :: UTC
Calculating file system latency
Sat Jan :: UTC
Local networking
Sat Jan :: UTC
Bandwidth measurements
Sat Jan :: UTC
Calculating context switch overhead
Sat Jan :: UTC
McCalpin's STREAM benchmark
Sat Jan :: UTC
Calculating memory load latency Sat Jan :: UTC
. ./getsummary ../results/arm/*,
L M B E N C H 3 . 0 S U M M A R Y
------------------------------------
(Alpha software, do not distribute) Basic system parameters
------------------------------------------------------------------------------
Host OS Description Mhz tlb cache mem scal
pages line par load
bytes
--------- ------------- ----------------------- ---- ----- ----- ------ ----
buildroot Linux 4.1.15+ arm 996 64 2 Processor, Processes - times in microseconds - smaller is better
------------------------------------------------------------------------------
Host OS Mhz null null open slct sig sig fork exec sh
call I/O stat clos TCP inst hndl proc proc proc
--------- ------------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
buildroot Linux 4.1.15+ 996 0.23 0.56 5.70 12.1 19.7 0.66 4.03 1303 3049 7073 Basic integer operations - times in nanoseconds - smaller is better
-------------------------------------------------------------------
Host OS intgr intgr intgr intgr intgr
bit add mul div mod
--------- ------------- ------ ------ ------ ------ ------ Basic uint64 operations - times in nanoseconds - smaller is better
------------------------------------------------------------------
Host OS int64 int64 int64 int64 int64
bit add mul div mod
--------- ------------- ------ ------ ------ ------ ------ Basic float operations - times in nanoseconds - smaller is better
-----------------------------------------------------------------
Host OS float float float float
add mul div bogo
--------- ------------- ------ ------ ------ ------ Basic double operations - times in nanoseconds - smaller is better
------------------------------------------------------------------
Host OS double double double double
add mul div bogo
--------- ------------- ------ ------ ------ ------ Context switching - times in microseconds - smaller is better
-------------------------------------------------------------------------
Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw
--------- ------------- ------ ------ ------ ------ ------ ------- -------
buildroot Linux 4.1.15+ 3.6900 10.8 21.9 26.8 46.8 33.3 49.3 *Local* Communication latencies in microseconds - smaller is better
---------------------------------------------------------------------
Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP
ctxsw UNIX UDP TCP conn
--------- ------------- ----- ----- ---- ----- ----- ----- ----- ----
buildroot Linux 4.1.15+ 3.690 17.2 26.5 76.4 86.0 *Remote* Communication latencies in microseconds - smaller is better
---------------------------------------------------------------------
Host OS UDP RPC/ TCP RPC/ TCP
UDP TCP conn
--------- ------------- ----- ----- ----- ----- ----
buildroot Linux 4.1.15+ File & VM system latencies in microseconds - smaller is better
-------------------------------------------------------------------------------
Host OS 0K File 10K File Mmap Prot Page 100fd
Create Delete Create Delete Latency Fault Fault selct
--------- ------------- ------ ------ ------ ------ ------- ----- ------- -----
buildroot Linux 4.1.15+ 1998.0 0.207 1.42140 6.259 *Local* Communication bandwidths in MB/s - bigger is better
-----------------------------------------------------------------------------
Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem
UNIX reread reread (libc) (hand) read write
--------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- -----
buildroot Linux 4.1.15+ 453. 411. 238. 552.7 1214.5 591.4 537.1 1204 596.0 Memory latencies in nanoseconds - smaller is better
(WARNING - may not be correct, check graphs)
------------------------------------------------------------------------------
Host OS Mhz L1 $ L2 $ Main mem Rand mem Guesses
--------- ------------- --- ---- ---- -------- -------- -------
buildroot Linux 4.1.15+ 996 4.0220 33.7 61.1 316.6 三、生成的配置
DISKS=""
DISK_DESC=""
OUTPUT=/dev/tty
ENOUGH=5000
FASTMEM="NO"
FILE=/var/tmp/XXX
FSDIR=/var/tmp
INFO=INFO.buildroot
LINE_SIZE=64
LOOP_O=0.00001841
MAIL=no
TOTAL_MEM=1001
MB=8
MHZ="995 MHz, 1.0050 nanosec clock"
MOTHERBOARD=""
NETWORKS=""
OS="arm"
PROCESSORS="2"
REMOTE=""
SLOWFS="NO"
SYNC_MAX="2"
LMBENCH_SCHED="BALANCED"
TIMING_O=0
RSH=
RCP=
VERSION=3.0-a9
BENCHMARK_HARDWARE=YES
BENCHMARK_OS=YES
BENCHMARK_SYSCALL=
BENCHMARK_SELECT=
BENCHMARK_SIG=
BENCHMARK_PROC=
BENCHMARK_CTX=
BENCHMARK_PAGEFAULT=
BENCHMARK_FILE=
BENCHMARK_MMAP=
BENCHMARK_PIPE=
BENCHMARK_UNIX=
BENCHMARK_UDP=
BENCHMARK_TCP=
BENCHMARK_CONNECT=
BENCHMARK_RPC=
BENCHMARK_HTTP=
BENCHMARK_BCOPY=
BENCHMARK_MEM=
BENCHMARK_OPS= 四、getsummary显示数据疑问:
1. 可能前面会发现整形、浮点等运算为什么无效?也就是没有数据。
2. 分析getsummary源代码:
[...省略]
if (/SYNC_MAX/) { -------+
@_ = split; |
$_[1] =~ s/\]//; |
push(@load, $_[1]); --------+----------------------+
} |
[...省略] |
for ($i = 0; $i <= $#uname; $i++) { |
if (&resultsq($i, $i, ( 'int64_bit', 'int64_add', |
'int64_mul', 'int64_div', |
'int64_mod' )) <= 0) { |
next; |
} |
if ($load[$i] > 1) { <---------------------------------+
next;
}
printf "%-9.9s %13.13s ", $host[$i], &getos($uname[$i]);
printf " %5.5s %6.6s %6.6s %6.6s %6.6s\n",
&scale_num($int64_bit[$i], 6, $load[$i]),
&scale_num($int64_add[$i], 6, $load[$i]),
&scale_num($int64_mul[$i], 6, $load[$i]),
&scale_num($int64_div[$i], 6, $load[$i]),
&scale_num($int64_mod[$i], 6, $load[$i]);
}
[...省略]
3. 可知SYNC_MAX不能设置大于1的值,否者不会显示相应的部分。