本文主要介紹瑞芯微RK3562J的實(shí)時(shí)性測試,開(kāi)發(fā)環(huán)境如下: U-Boot:U-Boot-2017.09 Kernel:Linux-RT-5.10.198 LinuxSDK: LinuxSDK-[版本號] (基于RK3562_LINUX_SDK_RELEASE_V1.1.0_20231220) RK3562J實(shí)時(shí)性測試數據 本文使用Cyclictest延遲檢測工具測試Linux系統實(shí)時(shí)性,分別在CPU空載、滿(mǎn)負荷(運行stress壓力測試工具)、滿(mǎn)負載-隔離CPU3核心(運行stress壓力測試工具)三種情況下運行指令測試12小時(shí)。 圖 1 RK3562J實(shí)時(shí)性測試數據 根據3種狀態(tài)的測試結果可知,當程序指定至隔離的CPU3核心上運行時(shí),Linux系統延遲最低,可有效提高系統實(shí)時(shí)性。故推薦對實(shí)時(shí)性要求較高的程序(功能)指定至隔離的CPU核心運行。 RK3562J典型應用領(lǐng)域 圖 2 Cyclictest系統實(shí)時(shí)性測試 本文通過(guò)創(chuàng )龍科技TL3562-EVM工業(yè)評估板(基于RK3562J)的硬件平臺進(jìn)行演示。為了簡(jiǎn)化描述,本文僅摘錄部分方案功能描述與測試結果。 本次測試以隔離CPU3核心為例,通過(guò)降低系統上所運行的其他進(jìn)程對隔離CPU3產(chǎn)生的延遲影響,確保CPU3進(jìn)程的正常運行,進(jìn)而評估Linux-RT內核的系統實(shí)時(shí)性。 評估板上電啟動(dòng)后,在U-Boot倒計時(shí)結束之前按下空格鍵進(jìn)入U-Boot命令行模式,執行如下命令,修改環(huán)境變量,隔離CPU3核心。 U-Boot#setenv bootargs storagemedia=sd androidboot.storagemedia=sd androidboot.mode=normal isolcpus=3 U-Boot#saveenv U-Boot#reset 圖 3 評估板重啟后,執行如下命令,查看環(huán)境變量。 Target#cat /proc/cmdline 圖 4 進(jìn)入評估板文件系統,執行如下命令,修改內核printk日志等級,避免內核打印信息影響實(shí)時(shí)測試。 Target#echo 1 > /proc/sys/kernel/printk 調整內存分配策略為“2”,禁用內存過(guò)度使用。避免出現OOM(Out-of-Memory) Killer攻擊某些進(jìn)程而產(chǎn)生延遲,影響測試結果。 Target#echo 2 > /proc/sys/vm/overcommit_memory 圖5 執行如下命令,運行stress壓力測試工具,使得CPU處于滿(mǎn)負荷狀態(tài)。再使用taskset工具將Cyclictest測試程序運行在CPU3核心,測試CPU3核心滿(mǎn)負荷狀態(tài)下的系統實(shí)時(shí)性能。測試指令需運行12小時(shí),請保持評估板長(cháng)時(shí)間穩定工作,測試完成后將生成統計結果iso_overload_output文件。 Target#stress-ng --cpu 4 --cpu-method=all --io 4 --vm 4 --vm-bytes 64M --timeout 43200s & Target#taskset -c 0-3 cyclictest -m -Sp99 -i1000 -h800 -D12h -q > iso_overload_output 圖 6 對測試結果文件的數據進(jìn)行分析,使用腳本生成直方圖,得到隔離CPU核心狀態(tài)下的統計結果如下所示。本次測試中,CPU1核心Max Latencies值最大,為244us,隔離CPU3核心的Max Latencies值最小,為33us。 圖7 表 1 |