ZHCAEA5 August 2024 AM625 , AM6442 , AM69 , TDA4VM
如上一节所述,通过另外几个步骤可以更好地了解 CODESYS EtherCAT 协议栈影响 CPU 负载和 KPI 的原因。这些步骤尚未得到广泛调查,但在此描述为未来可能采取的步骤。其中许多步骤基于 CODESYS 针对 Linux 系统优化资源的建议。
上一节中描述的优化主要是通过实验发现的。目前已知的是,当在每个硬件平台上启动 CODESYS 应用程序时,会出现与该应用程序相关的多个线程的列表。图 4-9 显示了使用 htop 捕获的此观察示例。此 htop 是在 Codemeter 应用程序导致 CPU 负载峰值时获取的。CODESYS 文档将这些线程称为“IEC 任务”。
优先级为 -56 的线程是使用 FIFO 优先级方案调度的 EtherCAT 任务。这一点可通过以下方法验证:在 CODESYS Development System 上进行检查,并在 CODESYS Linux 系统上的任务优先级映射资源中找到的关联优先级。理解其他 CODESYS 线程(“IEC 任务”)的功能要困难一些。
图 4-9 AM62x 上的 CODESYS 相关线程为了获得更多可见性,可以执行以下步骤:
启用内核跟踪 (ftrace) 以检测中断或其他服务是否会干扰 EtherCAT 任务的性能
在 CODESYS Development System 中实现 CPU 负载跟踪对象,以便更好地了解 CPU 负载随时间的变化
在 CODESYS EtherCAT 应用程序在后台运行的同时运行 cyclictest,以查看各项指标是否与使用 stress-ng 运行的 cyclictest 显著不同。执行此任务的动机是查看各项指标是否与 EtherCAT 周期时间匹配,以及查看最大延迟是否以表明以太网流量很大的方式增加。
其他要尝试的实验包括以下各项。请记住,对于每个实验,首先使用 cyclictest 测试结果比从 CODESYS 捕获数据的更广泛过程更有益。