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