中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. "); //-->

        博客專欄

        EEPW首頁 > 博客 > CPU& 內(nèi)存加壓工具 stress-ng 介紹

        CPU& 內(nèi)存加壓工具 stress-ng 介紹

        發(fā)布人:地平線開發(fā)者 時(shí)間:2024-11-22 來源:工程師 發(fā)布文章
        01 文章背景介紹


        在實(shí)車測(cè)試時(shí),除了感知算法外,往往還會(huì)有別的 APP 在同時(shí)運(yùn)行,從而擠壓算法的資源占用,影響模型性能,降低部署效果。因此在項(xiàng)目早期做板端驗(yàn)證的時(shí)候,我們就可以使用一些工具對(duì) CPU 和內(nèi)存進(jìn)行加壓,再運(yùn)行模型,以模擬實(shí)車測(cè)試的情況,得到模型在硬件資源受限時(shí)的性能數(shù)據(jù),做到心中有數(shù),及時(shí)調(diào)整優(yōu)化,避免到了項(xiàng)目后期還要為節(jié)約性能開銷而裁剪模型,得不償失。


        本文的重點(diǎn)在于向廣大開發(fā)者介紹 stress-ng 工具,并探究該工具是否能明顯影響模型的性能表現(xiàn),以方便開發(fā)者在非實(shí)車環(huán)境下能做好性能驗(yàn)證工作。關(guān)于模型或工程的性能調(diào)優(yōu),可參考社區(qū)其他精品貼。因作者水平有限,文章如有錯(cuò)漏之處,歡迎指出并共同交流。



        02 開發(fā)板加壓工具介紹


        2.1 stress-ng 簡(jiǎn)介


        Stress-ng 可以在 linux 上產(chǎn)生系統(tǒng)負(fù)載,可加壓 CPU、內(nèi)存、磁盤 IO 等,且有多種加壓策略,比如浮點(diǎn)運(yùn)算、整數(shù)運(yùn)算、矩陣運(yùn)算、壓縮、解壓縮等,可以用來測(cè)試系統(tǒng)在高負(fù)載的狀況下的穩(wěn)定性。


        Stress-ng 工具的 github 開源地址為:https://github.com/ColinIanKing/stress-ng


        2.2 stress-ng 編譯說明


        1. 首先進(jìn)入 stress-ng 的 github 頁面,下載源碼到我們的 x86 服務(wù)器上


        圖片


        1. 接下來進(jìn)行源碼編譯。由于我們的加壓測(cè)試環(huán)境是 arm 開發(fā)板,而 github 介紹的編譯流程基于 x86,因此我們需要配置**環(huán)境變量來設(shè)置交叉編譯器**,以編譯出可在開發(fā)板運(yùn)行的二進(jìn)制文件,參考代碼如下:

        cd stress-ng-0.17.06export CC=aarch64-linux-gnu-gccmake


        1. 編譯完成后,會(huì)在源碼所在的文件夾下生成可執(zhí)行文件 stress-ng,將其復(fù)制到開發(fā)板上的/userdata 路徑即可。


        2.3 stress-ng 使用說明


        2.3.1 主要參數(shù)介紹


        • --cpu N:讓 N 個(gè) CPU 滿載,N=0 會(huì)讓所有 CPU 滿載

        • --cpu-load M:搭配--cpu 使用,占用 N 個(gè)核各自 M%的 CPU 負(fù)載

        • --vm N:?jiǎn)⒂?N 個(gè)進(jìn)程占用內(nèi)存,不斷釋放和分配

        • --vm-bytes N:所有 vm 進(jìn)程共占用 N 字節(jié)的內(nèi)存大小,可帶單位,如 1M 1G

        • --vm-keep:vm 進(jìn)程一直占用內(nèi)存不釋放

        • --timeout N:加壓時(shí)長(zhǎng) N 秒,可帶單位,如 1s 1m 1h 1d,不配置則為 1d


        2.3.2 CPU 加壓方法


        CPU 加壓命令:

        stress-ng --cpu 4 --cpu-load 90

        運(yùn)行以上命令可讓 4 個(gè) CPU 核各以 90%左右的負(fù)載運(yùn)行。


        2.3.3 CPU 和內(nèi)存共同加壓方法(推薦)


        執(zhí)行以下命令可讓 CPU 和內(nèi)存共同被加壓:

        stress-ng --vm 2 --vm-bytes 2G --vm-keep

        vm 為 2 會(huì)讓 2 個(gè) CPU 核滿載運(yùn)行,vm-bytes 為 2G 則會(huì)占用 2G 的內(nèi)存(和 vm 數(shù)量無關(guān)),添加 vm-keep 會(huì)讓內(nèi)存一直占據(jù)不被釋放。這個(gè)命令可以同時(shí)為 CPU 和內(nèi)存加壓,是比較推薦的一種方式,本文也會(huì)基于這種方法做性能測(cè)試工作。


        03 模型性能評(píng)測(cè)工具介紹


        3.1 hrt_model_exec 簡(jiǎn)介


        hrt_model_exec 是地平線算法工具鏈提供的模型執(zhí)行工具,可以使用該工具的 perf 功能在開發(fā)板上評(píng)測(cè)模型的推理性能,該工具的完整介紹可以查看用戶手冊(cè):

        https://developer.horizon.cc/api/v1/fileData/horizon_j5_open_explorer_cn_doc/runtime/source/tool_introduction/source/hrt_model_exec.html


        我們可以在 OE 包的 ddk/package/board/hrt_tools/bin 路徑找到這個(gè)工具,需要將其復(fù)制到開發(fā)板。


        3.2 hrt_model_exec 使用方法


        hrt_model_exec 可以在單核單線程下評(píng)測(cè)模型的單幀延時(shí)(Latency),也可以在雙核多線程下評(píng)測(cè)模型的吞吐量(FPS)。單幀延時(shí)體現(xiàn)了單個(gè)模型處理一幀數(shù)據(jù)所需的時(shí)間,是衡量計(jì)算平臺(tái)能滿足實(shí)時(shí)性能要求的重要指標(biāo)。

        這里我們選擇基于單幀延時(shí)來分析性能影響,相比 FPS,對(duì)單幀延時(shí)的觀測(cè)會(huì)更加穩(wěn)定。

        評(píng)測(cè)模型單幀延時(shí)的參考命令如下:

        hrt_model_exec perf --model_file ./model.bin --frame_count 1000

        frame_count 默認(rèn)為 200,這里我們?cè)O(shè)置為 1000,為的是讓評(píng)估的數(shù)值更加準(zhǔn)確。


        04 實(shí)驗(yàn)部分


        4.1 實(shí)驗(yàn)思路


        本文分別使用一大一小兩個(gè)模型分析 CPU 和內(nèi)存加壓對(duì)單幀延時(shí)的影響,計(jì)算平臺(tái)為 征程 5。


        大模型使用 CenterPoint(來自 OE 包 ddk/samples/model_zoo/runtime/ai_benchmark/qat/centerpoint_pointpillar_nuscenes),小模型使用 Resnet18(OE 包 ddk/samples/ai_toolchain/horizon_model_convert_sample/03_classification/03_resnet18 以 O3 編譯)。加壓手段采用本文 2.3.3 “CPU 和內(nèi)存共同加壓方法”,比較兩個(gè)模型的單幀延時(shí)受影響程度。



        4.2 征程 5 硬件資源說明


        對(duì)本實(shí)驗(yàn)涉及到的 征程 5 硬件資源,這里做出以下簡(jiǎn)單介紹。


        • CPU: 8 * A55

        • BPU:征程 5 有雙核 BPU,但本文所做的性能測(cè)試只用到單核

        • 內(nèi)存:可使用 free 命令查看開發(fā)板內(nèi)存分配情況,在不執(zhí)行任何用戶進(jìn)程時(shí),可用內(nèi)存約為 3.8G,見下圖


        圖片



        4.3 實(shí)驗(yàn)結(jié)果展示


        *4.3.1 實(shí)驗(yàn)數(shù)據(jù)總表*


        圖片


        • 實(shí)驗(yàn) 1 為不加壓時(shí),分別單獨(dú)運(yùn)行 CenterPoint 和 Resnet18 得到的單幀延時(shí)數(shù)據(jù);

        • 實(shí)驗(yàn) 2-8 為 1 個(gè) CPU 核滿載時(shí),內(nèi)存占用依次提升的單幀延時(shí)數(shù)據(jù);

        • 實(shí)驗(yàn) 9-15 為 4 個(gè) CPU 核滿載時(shí),內(nèi)存占用依次提升的單幀延時(shí)數(shù)據(jù);

        • 實(shí)驗(yàn) 16-22 為全部 CPU 核滿載時(shí),內(nèi)存占用依次提升的單幀延時(shí)數(shù)據(jù);

        • CenterPoint 和 Resnet18 分開測(cè)試,不會(huì)同時(shí)運(yùn)行。


        可以查看下方更加直觀的,基于表格信息制作的折線圖。



        4.3.2 CenterPoint 折線圖


        圖片


        圖中藍(lán)色圓點(diǎn)代表不加壓時(shí),CenterPoint 的性能數(shù)據(jù),綠色折線表示單核滿載時(shí)內(nèi)存占用依次提升的性能數(shù)據(jù),黃色折線表示 4 核滿載時(shí)內(nèi)存占用依次提升的性能數(shù)據(jù),紅色折線表示 8 核滿載時(shí)內(nèi)存占用依次提升的性能數(shù)據(jù)。


        4.3.3 Resnet18 折線圖


        圖片


        Resnet18 折線圖的閱讀方法同 Centerpoint。由于在 8 核滿載(紅色折線)時(shí),模型性能下降尤為嚴(yán)重,因此額外提供了下圖,可方便地看出單核滿載(綠色折線)4 核滿載(黃色折線)下的性能變化情況。


        圖片



        05 實(shí)驗(yàn)結(jié)論


        1. stress-ng 工具對(duì) CPU 和**內(nèi)存的占用,可以顯著影響模型性能**;

        2. 內(nèi)存加壓對(duì)模型單幀延時(shí)的影響相對(duì)較小,CPU 加壓影響較大;

        3. 在內(nèi)存占用相同時(shí),CPU 占用越高,模型單幀延時(shí)越高;

        4. 在 CPU 負(fù)載相同時(shí),隨著內(nèi)存占用的提升,模型的單幀延時(shí)有上升趨勢(shì);

        5. 在 CPU 全部核滿載時(shí),小模型的單幀延時(shí)上升情況比大模型嚴(yán)重很多。



        06 結(jié)論


        本文重點(diǎn)介紹了 stress-ng 工具并通過實(shí)驗(yàn)證明了 stress-ng 對(duì) CPU 和內(nèi)存的加壓可以明顯影響模型的性能表現(xiàn),該工具可方便開發(fā)者驗(yàn)證模型在資源受限時(shí)的實(shí)際運(yùn)行性能。


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: 算法 自動(dòng)駕駛

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉