飛凌課堂丨OK1046A-C內(nèi)存交互測試,小白也能看懂
筆者最近需要進(jìn)行OK1046A-C內(nèi)存部分的測試,linux相關(guān)的資料和方法紛雜繁多,但如鼠飲河,自得其量,還是找了如下軟件進(jìn)行測試,也分享給大家。
01、工具簡介
Bandwitdh工具簡介
Bandwidth是一款內(nèi)存帶寬基準(zhǔn)測試程序,通過順序讀寫與隨機(jī)讀寫不同大小的數(shù)據(jù)塊,測試系統(tǒng)的內(nèi)存帶寬性能。
它提供了一套匯編語言實(shí)現(xiàn)的支持庫,用來完成體系結(jié)構(gòu)相關(guān)的特定操作,可以測量每個(gè)內(nèi)存系統(tǒng)的最大內(nèi)存帶寬,包括主內(nèi)存,L1和L2緩存,framebuffer內(nèi)存和寄存器的快速,連續(xù)的內(nèi)存訪問。
Bandwidth也包括自動(dòng)制圖的結(jié)果,存儲(chǔ)到一個(gè)BMP圖像文件。
Mbw工具簡介
Mbw是一個(gè)內(nèi)存帶寬測試工具可以測試在字節(jié)拷貝,塊拷貝,整體拷貝三種不同方式下的內(nèi)存拷貝速度,程序源碼比較簡單,便于理解。
? 獲取方式:git clone http://github.com/raas/mbw
Memtester工具簡介
Memtester是一款進(jìn)行內(nèi)存壓力測試的工具,通過對兩塊內(nèi)存里的數(shù)據(jù)進(jìn)行一系列的加減乘除亦或位與之類的算法后進(jìn)行對比,用于檢查是否存在內(nèi)存移位之類的問題出現(xiàn)
? 獲取方式:wget 點(diǎn)此處獲取>>
memtester的使用很簡單./memtester <memory> [runs]其中<memory>:內(nèi)存大小,單位M,[runs]:運(yùn)行次數(shù)。
02、編譯方法
bandwidth來源
? 下載并解壓bandwidth
源碼路徑:https://zsmith.co/archives/bandwidth-1.5.1.tar.gz
解壓并進(jìn)入源碼目錄:
tar xvf bandwidth-1.5.1.tar.gz
cd bandwidth-1.5.1/
? 修改makefile文件并進(jìn)行編譯
Vim Makefile
修改如下:
CC=arm-xxx-gcc -Wall
LD=arm-xxx-gcc
ARM_AS=arm-xxx-as
ARM_CC=arm-xxx-gcc
退出并make bandwidth-rpi32即可得到二進(jìn)制程序(arm-xxx-gcc為交叉編譯工具)。
Mbw
? 下載并進(jìn)入源碼目錄編譯
git clone
https://github.com/raas/mbw.git
cd mbw
arm-xxx-gcc mbw.c –o mbw
? 在源碼目錄下得到mbw應(yīng)用程序。
Memteser
? 下載并解壓源碼
wget 點(diǎn)此處獲取>>
tar xvf memtester-4.3.0.tar.gz
cd memtester-4.3.0/
? 修改配置文件:
分別把conf-ld和conf-cc文件中的"cc"(一般在文件首行)替換為“arm-xxx-gcc”
在conf-ld的第一行后面加上 -static
修改文件Makefile,更改 INSTALLPATH = `pwd`/INSTALL
執(zhí)行make即可編譯成功,在源碼目錄下得到應(yīng)用程序。
03使用方法和示例
bandwidth工具的使用
我們將bandwidth移植到開發(fā)板上運(yùn)行(因OK1046A-C gcc版本過高存在兼容性問題未能編譯成功,此處以其它板卡數(shù)據(jù)結(jié)果做工具介紹,數(shù)據(jù)不做 OK1046A-C 的參考)./bandwidth –fastest 得出如下圖表:
這部分圖表我們可以得到一些cpu與內(nèi)存之間互相訪問的數(shù)據(jù)傳輸和命令交互的性能,以及framebuffer的讀寫速度。
上表可見,內(nèi)存的讀寫速度和順序還是隨機(jī)還是有很大關(guān)系的,在寫數(shù)據(jù)時(shí)尤為明顯。
其次我們可以觀察到,寫的數(shù)據(jù)塊的大小會(huì)影響讀寫速度,在兩個(gè)關(guān)鍵點(diǎn)會(huì)產(chǎn)生突變(32kb/256kb),這是由于各級cache的不同,進(jìn)行內(nèi)存讀寫時(shí),較小的數(shù)據(jù)塊會(huì)存放在cache中,較大的數(shù)據(jù)塊則會(huì)經(jīng)過cache存放在主存中。
突變的原因就是達(dá)到了cache的上限,而轉(zhuǎn)向了下層存儲(chǔ)。
mbw工具的使用
將mbw工具移植到開發(fā)板上,并執(zhí)行./mbw -q -n 3 320
-q 隱藏日志,3 測試次數(shù),64 內(nèi)存大小(單位是M)結(jié)果如下:
我們只需要關(guān)注AVG平均值即可。
三種不同的測試方法分別對應(yīng)的是memcpy(內(nèi)存拷貝),dump(字符串拷貝),mcblock(內(nèi)存塊拷貝)。
我們可以看到,OK1046A-C的ddr4d的內(nèi)存的運(yùn)行速度是非??斓?,再內(nèi)存拷貝的速度達(dá)到了2GiB/s,甚至于接近我們的服務(wù)器的讀寫速度。
memtester的使用
? 先運(yùn)行free –h 得出剩余內(nèi)存:
? 可以看到,該開發(fā)板剩余1.2G可用內(nèi)存,所以我使用1G內(nèi)存大小運(yùn)行內(nèi)存檢錯(cuò)程序memtester。
? ./me mtester 1G 3 截圖如下:
如此便是內(nèi)存運(yùn)行正常,筆者重復(fù)了三天,利用腳本反復(fù)調(diào)用memtester程序,最終均未發(fā)現(xiàn)內(nèi)存報(bào)錯(cuò)和移位的問題,可見內(nèi)存穩(wěn)定性基本達(dá)標(biāo)。
結(jié)語
綜上我們可以看到,OK1046A-C板卡的ddr4內(nèi)存讀寫速度非??欤瑑?nèi)存使用也非常穩(wěn)定,可惜因?yàn)榘姹驹蛭茨軠y得CPU內(nèi)存交互的實(shí)際速度以及CPU一級二級緩存的使用速度,在后期經(jīng)過修改后再進(jìn)行追加。
下一期筆者將針對于OK1046A-C的萬兆網(wǎng)測試和網(wǎng)絡(luò)轉(zhuǎn)換方面,請各位保持關(guān)注。
相關(guān)產(chǎn)品 >
-
FET1046A-C核心板
4核1.8GHz,原生8網(wǎng)口靈活擴(kuò)展|LS1046A 系列ARM工控核心板基于 NXP公司的LS1046A高性能64位ARM四核處理器。LS1046A處理器將四個(gè)64位ARM Cortex-A72內(nèi)核與數(shù)據(jù)包處理加速和高速外設(shè)相集成,CoreMark跑分高達(dá)45000,LS1046A強(qiáng)大的網(wǎng)絡(luò)處理能力和豐富的高速接口,適用于工業(yè)路由、邊緣計(jì)算網(wǎng)關(guān)、IP-PBX等產(chǎn)品,以及邊緣計(jì)算、 能源物聯(lián)網(wǎng)、智慧城市、工業(yè)自動(dòng)化、視頻監(jiān)控等應(yīng)用領(lǐng)域。
了解詳情 -
OK1046A-C2開發(fā)板
4核1.8GHz,原生8網(wǎng)口,支持萬兆網(wǎng)絡(luò)|
飛凌嵌入式LS1046a ARM工控主板系列LS1046開發(fā)板 基于 NXP LS1046A 四核Cortex A72 CPU,強(qiáng)大的萬兆網(wǎng)絡(luò)處理能力和豐富的高速接口,CoreMark跑分高達(dá)45000。飛凌不僅僅提供了LS1046A開發(fā)板套件,還提供了調(diào)試心得、LS1046A硬件數(shù)據(jù)手冊,并根據(jù)應(yīng)用情況發(fā)布了 LS1046A 5G CPE 工業(yè)網(wǎng)關(guān)方案、邊緣計(jì)算網(wǎng)關(guān)方案,降低了客戶二次開發(fā)的難度。更多關(guān)于LS1046A的解決方案,產(chǎn)品詳情,您可以登入飛凌嵌入式官網(wǎng)了解。
了解詳情