引言
本文是对我之前关于 Raspberry Pi 3 同一主题的帖子的更新。
与之前的帖子一样,我使用的是随Raspbian镜像提供的标准内核,以及应用了RT补丁的相似内核版本。对于实时版,我使用的是raspberrypi/linux仓库中的rpi-4.19.y-rt分支。同样,在测试中,我使用了实时Linux项目中的cyclic test程序。
Cyclic test程序用于测量对定时器产生的中断做出响应所需的时间。
设置
下面的两个实验均在Raspberry Pi 4上运行。
对于标准Linux内核,我使用的是Raspbian镜像,并在撰写本文时进行了升级,结果是内核版本为4.19.75。
对于实时Linux内核,我克隆了raspberrypi/linux仓库中的rpi-4.19.y-rt分支。在撰写本文时,这导致了内核版本为4.19.71-rt24-v71+。这里有一篇帖子总结了构建内核的步骤。.
对于cyclic test程序,我使用的是rt-tests-1.5.tar.gz包。我使用make NUMA=0构建了该工具。
下面的图表是使用gnuplot和OSADL的mklatencyplot脚本生成的。cyclic test以以下参数运行:
cyclictest -l100000000 -m -S -p90 -i200 -h400 -q
单次测试运行时间超过5小时。
在之前的文章中,我没有在系统上施加额外的负载。对于本文,我使用stress-ng生成了CPU负载来进行实验。我使用以下参数运行stress-ng:-c 0 -q,并以低优先级nice -19 运行压力测试。
测试结果1 - 标准内核
在运行4.19.75内核的Raspberry Pi 4上生成的延迟图
测试结果2 - 实时内核
在运行4.19.71-rt24内核的Raspberry Pi 4上生成的延迟图
结论
与Raspberry Pi 3和我之前的实验类似,Raspberry Pi 4的表现也相仿,使用实时内核时的平均延迟更低。与之前的帖子相比,这里的平均延迟更高,显然这是因为stress-ng产生的负载所致。这表明,为了获得更好的结果,在实验中施加与预期合理相似的负载是非常重要的。
原文链接: https://metebalci.com/blog/latency-of-raspberry-pi-4-on-standard-and-real-time-linux-4.19-kernel/