要評價一個系統(tǒng)的性能,通常有不同的指標,相應(yīng)的會有不同的測試方法和測試工具。既有比較成熟的商業(yè)測試軟
Lmbench用C語言編寫的,是一套具有較好可移植性的,簡易的,符合ANSI/C標準為UNIX/PO
Lmbench是個多平臺軟件,因此能夠?qū)ν墑e的系統(tǒng)進行比較測試,反映不同系統(tǒng)的優(yōu)劣,通過選擇不同的
lmbench是一個用于評價系統(tǒng)綜合性能的軟件,主要測試內(nèi)容包括:
*存儲器延遲計算結(jié)果
—存儲器延遲測試展示了所有系統(tǒng)(數(shù)據(jù))的緩存延遲,包括L1/L2 cache以及主內(nèi)存
*帶寬測評工具
—讀取緩存文件
—拷貝內(nèi)存
—讀內(nèi)存
—寫內(nèi)存
—管道
—TCP
*反應(yīng)時間測評工具
—上下文切換
—網(wǎng)絡(luò): 連接的建立,管道,TCP,UDP和RPC hot potato
—文件系統(tǒng)的建立和刪除
—進程創(chuàng)建
—信號處理
—上層的系統(tǒng)調(diào)用
—內(nèi)存讀入反應(yīng)時間
* 其他
—處理器時鐘比率計算
Lmbench的測試內(nèi)容有很多,實在是benchmarking領(lǐng)域的“瑞士軍刀”啊。
Lmbench的成功應(yīng)用案例包括:
Sun公司和SGI公司已經(jīng)使用這種測評工具以尋找和補救存在于性能上的問題。
Intel公司在開發(fā)P6的過程中,使用了它們。
Linux在Linux的性能優(yōu)化中使用了它們。
1. 下載:
Lmbench當前的最新版本為3.0。
lmbench的主站:
http://www.bitmover.com/lmbench/
lmbench 3版本的下載鏈接:
http://www.bitmover.com/lmbench/lmbench3.tar.gz
2. 編譯:
下載解壓后運行make build后會出現(xiàn)以下錯誤:
make[2]: *** No rule to make target `../SCCS/s.ChangeSet', needed by `bk.ver'. Stop.
make[2]: Leaving directory `/home/wave/xilinx/lmbench3/src'
make[1]: *** [lmbench] Error 2
make[1]: Leaving directory `/home/wave/xilinx/lmbench3/src'
make: *** [build] Error 2
問題來源:
SCCS是Sun的版本管理工具。lmbench這個項目是Sun資助的,而且作者Larry McVoy也曾經(jīng)是Sun的員工,就用了這玩藝。
解決辦法1:
修改src/Makefile,將231行的bk.ver去掉就可以了。編譯完成后在bin下有bench
解決辦法2:
在lmbench3/SCCS目錄下創(chuàng)建一個工程要的文件s.ChangeSet,騙過make。
交叉編譯:
本人在Xilinx ZC706開發(fā)板上嘗試用PetaLinux 2013.04附帶的交叉編譯工具鏈進行了編譯,可以在lmbench3目錄下使用以下命令完成編譯:
make OS=armv7l-linux-gnu CC=arm-xilinx-linux-gnueabi-gcc AR=arm-xilinx-linux-gnueabi-ar build
如果使用其他pre-built的交叉編譯工具,需要修改CC和AR的內(nèi)容。編譯完成后,會在lmbenc
注意:使用PetaLinux 2013.04交叉編譯工具鏈之前,要先’source settings.sh’初始化環(huán)境變量。
3. 配置:
把Host上編譯好的lmbench轉(zhuǎn)移到嵌入式Linux中有很多種辦法,本人采用以下辦法:
在Host上把lmbench3目錄打成一個tar ball,然后拷貝到SD卡中,嵌入式Linux從SD卡啟動。
Linux啟動后,將SD卡mount到文件系統(tǒng)中:
mount /dev/mmcblk0p1 /mnt
在嵌入式Linux中創(chuàng)建臨時文件系統(tǒng),這里假定開發(fā)者是用root帳號登錄到Linux的:
mkdir -p /home/root/ramfs
mount -t ramfs none /home/root/ramfs -o maxsize=32768
Note:缺省情況下,Ramfs被限制最多可使用內(nèi)存大小的一半。可以通過maxsize(以kbyte
用以下命令啟動配置過程:
cd /home/root/ramfs
tar xvf /mnt/lmbench3.tar
export PATH=$PATH:/home/root/ramfs/lmbench3/bin/armv7l-li
cd lmbench3/scripts
./config-run
本人使用的配置為:
MULTIPLE COPIES [default 1]: 1
Job placement selection [default 1]: 1 > Allow scheduler to place jobs
MB [default 84]: 8
SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: all
FASTMEM [default no]: yes
SLOWFS [default no]:
DISKS [default none]
REMOTE [default none]
Processor mhz [default 498 MHz, 2.0080 nanosec clock] 733
FSDIR [default /tmp]
Status output file [default /dev/tty]
Mail results [default yes] no
關(guān)于測試項的解釋:
1. 在多核CPU上并行多少個lmbench。作者說這個目前還是實驗性質(zhì)的,結(jié)果可能不正確并有隨機性。更重
2. 測試任務(wù)的分配方式。按回車選擇缺省的方案1。
3. 有些測試需要一段內(nèi)存。內(nèi)存至少是cache size的4倍,最大不超過物理內(nèi)存的80%。內(nèi)存越大,測試的結(jié)果越準確,不過需要的時間也越長。
4. 選擇測試項目。分別是全部測試、硬件測試、OS測試和操作系統(tǒng)開發(fā)階段的測試。缺省選擇為全部測試。
5. 內(nèi)存延遲測試。測試需要的時間可能比較長。在cache line size超過128字節(jié)并希望確定cache line size的時候比較有用。
6. 測試文件系統(tǒng)的延遲。在一些老的文件系統(tǒng)(UFS, FFS等)上會比較慢,在Linux ext2fs和Sun tmpfs上會比較快??梢杂脕頊y試ramdisk的性能,間接測試RAM的性能。
7. 測試磁盤的性能。需要提供磁盤的位置,例如:/dev/sda。同時需要提供一行磁盤的文字描述。
8. 網(wǎng)絡(luò)測試。需要有另外一臺中間不經(jīng)過網(wǎng)關(guān)的機器,需要rsh訪問權(quán)限。
9. 軟件會自動分析CPU的工作頻率。如果軟件無法檢測,需要提供CPU的工作頻率。
10. 需要一個位置保存臨時文件。要求不能是內(nèi)存駐留文件系統(tǒng)。
11. lmbench的輸出設(shè)備。缺省為/dev/tty,在大多數(shù)場合都適用。
12. 是否將結(jié)果上傳給作者。
4. 運行
首先要確認Embedded Linux已經(jīng)配置了合適的hostname,這個hostname將作為測試結(jié)果raw文件的文件名。
用以下命令開始性能測試:
./results
在本人的計算機上,大約運行了9分鐘后結(jié)束。生成的結(jié)果在lmbench3/results/$OS目錄里
如果Embedded Linux root fs里面有perl,可以直接在開發(fā)板上看測試結(jié)果的summary。如果沒有也不打緊,可以把生成的測試
./getsummary ./zynq.0
Summary是對測試結(jié)果的高度精簡。如果感興趣,開發(fā)者可以用Text Editor打開測試結(jié)果raw文件,找到更多更細致的有用信息。