主题中讨论的其他器件:AM625
大家好、
我在 am625 SoC 上使用 preemp_RT 内核(v5.10.120-rt70)运行了一系列测试、旨在评估我可以从此器件获得的实时性能、特别是等待计时器事件的用户任务的最坏情况延迟。 我的问题是 以下结果是否 准确地表示我们可能期望的典型最坏情况下的延迟(很抱歉、发布较长的帖子、但详细信息可能会有所帮助)。
测试配置如下:
- PLL 设置为25MHz (启动开关)
-使用来自 RT 测试套件的常规'cyclictest'程序(仅限于 clock_nanosleep()接口)测量的最坏情况下的计时器事件延迟。
-可 从[1]获取 TI 供应商内核
-内核配置调整:
*禁用 ACPI (CONFIG_ACPI)
*强制启用 CPU_FREQ "性能"调节器
(CPU_FREQ_DEFAULT_GOV_performance)、禁用所有其他调速器
*关闭所有内核调试
-以1kHz 频率运行的20英寸采样环路、由单个线程执行。 这 可能太短、无法观察到最差的数字、但在我们的情况下足以观察 到已有的高值。
- 采样线程始终固定在单个 CPU 上、无论是隔离式(CPU2)还是非隔离式(CPU1)。
-一个应力负载与测试并行运行、其中包括一个 dd 循环持续 清除内存、以及 一个发出大量上下文开关的'hackbench'循环、所有这些都可以在非隔离式 CPU 上自由运行。
实际上、使用的命令是:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A
# dd if=/dev/zero of=/dev/null BS=128M&
# while :; do hackbench; done &
# cyclictest -a -p 98 -m -n -i 1000 -D 20m -q
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~μ A
测试隔离式 CPU 案例时使用'isolcpus=2'引导参数。 对采样线程的正确 CPU 关联性进行了双次检查。
结果如下所示、显示为"最坏情况(平均值)"、所有结果均以微秒为单位、
隔离式(CPU2) | 非隔离式(CPU1)
170(27) 368(59)
对于这类硬件、这些数字看起来很高、 由于 在其他 CPU 上运行的活动以高速率移动内存和切换上下文、导致在运行延迟测试的隔离式 CPU 上产生明显干扰/噪声。 正如预期的那样、在非隔离式情况下、情况更糟。
如果能对这些数字有任何了解,并能尽可能减少这些数字,我们将不胜感激。
simal:在 TI 基本内核[2]上移植此 SoC 的 xenomai4 EVL 内核 显示了非 RT 应力负载的相同影响,分别为130 (10)和284 (40))。 这可能排除了特定于 preemp_RT 的问题、因为实现没有任何共同之处。 这个特定测试的另一个要点:在查看 EVL 数据时、我们可以肯定地看到在配置中启用透明的大页面支持的(负面)影响。 Ftracing 告诉我们、这可能与修复页表条目后的 I/D 高速缓存维护操作有关、尽管 CPU 未屏蔽中断、但会显著延迟中断。 由于 不支持此配置、我无法检查 preemp_RT。
谢谢、
[1] git.ti.com/.../、位于#gca705d5c043)