《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式系統(tǒng)的性能測(cè)試(1) – lmbench篇
嵌入式系統(tǒng)的性能測(cè)試(1) – lmbench篇
摘要: 要評(píng)價(jià)一個(gè)系統(tǒng)的性能,,通常有不同的指標(biāo),,相應(yīng)的會(huì)有不同的測(cè)試方法和測(cè)試工具。既有比較成熟的商業(yè)測(cè)試軟件,,也有許多優(yōu)秀的開(kāi)源工具來(lái)完成這個(gè)任務(wù),。本文簡(jiǎn)要介紹如何使用lmbench來(lái)完成系統(tǒng)綜合性能測(cè)試。&nbs
關(guān)鍵詞: 軟件 嵌入式系統(tǒng)
Abstract:
Key words :

要評(píng)價(jià)一個(gè)系統(tǒng)的性能,,通常有不同的指標(biāo),,相應(yīng)的會(huì)有不同的測(cè)試方法和測(cè)試工具。既有比較成熟的商業(yè)測(cè)試軟件,,也有許多優(yōu)秀的開(kāi)源工具來(lái)完成這個(gè)任務(wù),。本文簡(jiǎn)要介紹如何使用lmbench來(lái)完成系統(tǒng)綜合性能測(cè)試,。

 

Lmbench用C語(yǔ)言編寫的,是一套具有較好可移植性的,,簡(jiǎn)易的,,符合ANSI/C標(biāo)準(zhǔn)為UNIX/POSIX而制定的微型測(cè)評(píng)工具。一般來(lái)說(shuō),,它衡量?jī)蓚€(gè)關(guān)鍵特征:反應(yīng)時(shí)間和帶寬,。Lmbench旨在使系統(tǒng)開(kāi)發(fā)者深入了解系統(tǒng)關(guān)鍵操作的基礎(chǔ)成本。

 

Lmbench是個(gè)多平臺(tái)軟件,,因此能夠?qū)ν?jí)別的系統(tǒng)進(jìn)行比較測(cè)試,,反映不同系統(tǒng)的優(yōu)劣,通過(guò)選擇不同的庫(kù)函數(shù)我們就能夠比較庫(kù)函數(shù)的性能,;更為重要的是,,作為一個(gè)開(kāi)源軟件,lmbench提供一個(gè)測(cè)試框架,,假如測(cè)試者對(duì)測(cè)試項(xiàng)目有更高的測(cè)試需要,,能夠通過(guò)少量的修改源代碼達(dá)到目的(比如現(xiàn)在只能評(píng)測(cè)進(jìn)程創(chuàng)建、終止的性能和進(jìn)程轉(zhuǎn)換的開(kāi)銷,,通過(guò)修改部分代碼即可實(shí)現(xiàn)線程級(jí)別的性能測(cè)試),。

 

lmbench是一個(gè)用于評(píng)價(jià)系統(tǒng)綜合性能的軟件,主要測(cè)試內(nèi)容包括:

    *存儲(chǔ)器延遲計(jì)算結(jié)果

          —存儲(chǔ)器延遲測(cè)試展示了所有系統(tǒng)(數(shù)據(jù))的緩存延遲,,包括L1/L2 cache以及主內(nèi)存

    *帶寬測(cè)評(píng)工具

          —讀取緩存文件

          —拷貝內(nèi)存

          —讀內(nèi)存

          —寫內(nèi)存

          —管道

          —TCP

    *反應(yīng)時(shí)間測(cè)評(píng)工具

          —上下文切換

          —網(wǎng)絡(luò): 連接的建立,,管道,TCP,,UDP和RPC hot potato

          —文件系統(tǒng)的建立和刪除

          —進(jìn)程創(chuàng)建

          —信號(hào)處理

          —上層的系統(tǒng)調(diào)用

          —內(nèi)存讀入反應(yīng)時(shí)間

    * 其他

          —處理器時(shí)鐘比率計(jì)算

 

Lmbench的測(cè)試內(nèi)容有很多,,實(shí)在是benchmarking領(lǐng)域的“瑞士軍刀”啊。

 

Lmbench的成功應(yīng)用案例包括:

   Sun公司和SGI公司已經(jīng)使用這種測(cè)評(píng)工具以尋找和補(bǔ)救存在于性能上的問(wèn)題,。

   Intel公司在開(kāi)發(fā)P6的過(guò)程中,,使用了它們。

   Linux在Linux的性能優(yōu)化中使用了它們,。

 

1. 下載:

Lmbench當(dāng)前的最新版本為3.0,。

lmbench的主站:

http://www.bitmover.com/lmbench/

lmbench 3版本的下載鏈接:

http://www.bitmover.com/lmbench/lmbench3.tar.gz

 

2. 編譯:

下載解壓后運(yùn)行make build后會(huì)出現(xiàn)以下錯(cuò)誤:

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

 

問(wèn)題來(lái)源:

SCCS是Sun的版本管理工具。lmbench這個(gè)項(xiàng)目是Sun資助的,,而且作者Larry McVoy也曾經(jīng)是Sun的員工,,就用了這玩藝。

 

解決辦法1:

修改src/Makefile,,將231行的bk.ver去掉就可以了,。編譯完成后在bin下有benchmarking需要的的binary。

 

解決辦法2:

在lmbench3/SCCS目錄下創(chuàng)建一個(gè)工程要的文件s.ChangeSet,,騙過(guò)make,。

 

交叉編譯:

本人在Xilinx ZC706開(kāi)發(fā)板上嘗試用PetaLinux 2013.04附帶的交叉編譯工具鏈進(jìn)行了編譯,,可以在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)容,。編譯完成后,,會(huì)在lmbench3\bin目錄下生成OS指定的目錄,可執(zhí)行文件放在這個(gè)目錄下,。這個(gè)OS名稱適用于ZC706開(kāi)發(fā)板,,在其他嵌入式開(kāi)發(fā)板上可能會(huì)不同。一個(gè)簡(jiǎn)單的工程上取得合適名字的辦法:如果不是這個(gè)名字,,在下一步配置完成后會(huì)提示無(wú)法保存配置文件到某個(gè)位置,,看系統(tǒng)提示修改就好了。

注意:使用PetaLinux 2013.04交叉編譯工具鏈之前,,要先’source settings.sh’初始化環(huán)境變量,。

 

3. 配置:

把Host上編譯好的lmbench轉(zhuǎn)移到嵌入式Linux中有很多種辦法,本人采用以下辦法:

 

在Host上把lmbench3目錄打成一個(gè)tar ball,,然后拷貝到SD卡中,,嵌入式Linux從SD卡啟動(dòng)。

 

Linux啟動(dòng)后,,將SD卡mount到文件系統(tǒng)中:

mount /dev/mmcblk0p1 /mnt

 

在嵌入式Linux中創(chuàng)建臨時(shí)文件系統(tǒng),,這里假定開(kāi)發(fā)者是用root帳號(hào)登錄到Linux的:

mkdir -p /home/root/ramfs

mount -t ramfs none /home/root/ramfs -o maxsize=32768

Note:缺省情況下,Ramfs被限制最多可使用內(nèi)存大小的一半,??梢酝ㄟ^(guò)maxsize(以kbyte為單位)選項(xiàng)來(lái)改變。

 

用以下命令啟動(dòng)配置過(guò)程:

cd /home/root/ramfs

tar xvf /mnt/lmbench3.tar

export PATH=$PATH:/home/root/ramfs/lmbench3/bin/armv7l-linux-gnu

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)于測(cè)試項(xiàng)的解釋:

1. 在多核CPU上并行多少個(gè)lmbench,。作者說(shuō)這個(gè)目前還是實(shí)驗(yàn)性質(zhì)的,結(jié)果可能不正確并有隨機(jī)性,。更重要的是,,整個(gè)benchmark的速度會(huì)變得非常慢(100倍)。既然這樣,,當(dāng)然用缺省的數(shù)值1了,。

2. 測(cè)試任務(wù)的分配方式。按回車選擇缺省的方案1,。

3. 有些測(cè)試需要一段內(nèi)存,。內(nèi)存至少是cache size的4倍,最大不超過(guò)物理內(nèi)存的80%,。內(nèi)存越大,,測(cè)試的結(jié)果越準(zhǔn)確,不過(guò)需要的時(shí)間也越長(zhǎng),。

4. 選擇測(cè)試項(xiàng)目,。分別是全部測(cè)試,、硬件測(cè)試、OS測(cè)試和操作系統(tǒng)開(kāi)發(fā)階段的測(cè)試,。缺省選擇為全部測(cè)試,。

5. 內(nèi)存延遲測(cè)試。測(cè)試需要的時(shí)間可能比較長(zhǎng),。在cache line size超過(guò)128字節(jié)并希望確定cache line size的時(shí)候比較有用,。

6. 測(cè)試文件系統(tǒng)的延遲。在一些老的文件系統(tǒng)(UFS, FFS等)上會(huì)比較慢,,在Linux ext2fs和Sun tmpfs上會(huì)比較快,。可以用來(lái)測(cè)試ramdisk的性能,,間接測(cè)試RAM的性能,。

7. 測(cè)試磁盤的性能。需要提供磁盤的位置,,例如:/dev/sda,。同時(shí)需要提供一行磁盤的文字描述。

8. 網(wǎng)絡(luò)測(cè)試,。需要有另外一臺(tái)中間不經(jīng)過(guò)網(wǎng)關(guān)的機(jī)器,,需要rsh訪問(wèn)權(quán)限。

9. 軟件會(huì)自動(dòng)分析CPU的工作頻率,。如果軟件無(wú)法檢測(cè),,需要提供CPU的工作頻率。

10. 需要一個(gè)位置保存臨時(shí)文件,。要求不能是內(nèi)存駐留文件系統(tǒng),。

11. lmbench的輸出設(shè)備。缺省為/dev/tty,,在大多數(shù)場(chǎng)合都適用,。

12. 是否將結(jié)果上傳給作者。

 

4. 運(yùn)行

首先要確認(rèn)Embedded Linux已經(jīng)配置了合適的hostname,,這個(gè)hostname將作為測(cè)試結(jié)果raw文件的文件名,。

 

用以下命令開(kāi)始性能測(cè)試:

./results

 

在本人的計(jì)算機(jī)上,大約運(yùn)行了9分鐘后結(jié)束,。生成的結(jié)果在lmbench3/results/$OS目錄里面,。

 

如果Embedded Linux root fs里面有perl,可以直接在開(kāi)發(fā)板上看測(cè)試結(jié)果的summary,。如果沒(méi)有也不打緊,,可以把生成的測(cè)試結(jié)果raw文件拷貝到host上,在host上生成summary。

./getsummary ./zynq.0

 

Summary是對(duì)測(cè)試結(jié)果的高度精簡(jiǎn),。如果感興趣,,開(kāi)發(fā)者可以用Text Editor打開(kāi)測(cè)試結(jié)果raw文件,找到更多更細(xì)致的有用信息,。

 

 

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。