LabVIEW NI CompactRIO控制器:性能和吞吐量基准测试

简介: LabVIEW NI CompactRIO控制器:性能和吞吐量基准测试

LabVIEW NI CompactRIO控制器:性能和吞吐量基准测试


CompactRIO控制器基于LabVIEW RIO架构,采用了功能强大的64位Intel Atom E3800片上系统(SoC)和Xilinx Kintex7 FPGA等最新技术。Intel Atom SoC提供了极高的性能和丰富的功能,包括集成式GPU和多核处理器。比起其他CompactRIO控制器的FPGA,Kintex-7325T FPGA包含大约3倍的复杂逻辑块和超过13倍的DSP片。FPGA与处理器使用PCI Express总线进行通信,大大提高了吞吐量,并可访问16个DMA通道。


全新CompactRIO控制器采用的LabVIEW RIO架构提供了软件灵活性,可将人机界面和控制任务整合到同一个终端和同一个操作系统中。这主要归功于多核IntelAtom SoC和NI Linux Real-Time操作系统提供的特性。NI Linux Real-Time操作系统可将任务优先级显示给开发人员,为控制任务分配的优先级应高于同一应用中运行的人机界面软件任务。


这些技术的结合大大提高了闭环控制应用的系统吞吐量并降低了延迟。CompactRIO控制器为嵌入式设计人员提供了灵活强大的硬件,同时还有助于降低系统复杂性和成本。


为了证明CompactRIO控制器的性能,编制了一系列控制和监测应用基准测试。这些测试同样适用于CompactRIO控制器(NI cRIO-903x)的所有双核和四核变体。


基准测试设置和测量


选择了具有代表性的常见控制和监测应用以及这些应用中常见的主要任务进行基准测试。下表列出了本次研究要进行的测试。


表1-在NI CompactRIO控制器上进行测试,以测量应用的性能和吞吐量


本研究的测试对象是以下硬件终端:


• NI cRIO-9025 | 800 MHz,PowerPC


• NI cRIO-9068 | 667 MHz,ARM Cortex-A9双核


• NI cRIO-903x | 1.33 GHz,Intel Atom双核


• NI cRIO-903x | 1.91 GHz,Intel Atom四核


• NI cRIO-9082 | 1.33 GHz,Intel Core i7双核


虽然本研究重点关注的是CompactRIO控制器及其与同一产品系列中其他现有控制器的性能对比,例如双核变体的cRIO-9025和四核变体的cRIO-9082,但是其他CompactRIO产品系列的代表性硬件终端,如cRIO-9068,也包含在测试中,以便读者更全面地了解CompactRIO系统所提供的各种可能性。


CPU使用率作为通用指标,用以比较这些CompactRIO控制器的相对性能。对于每个测试,通过在稳定的状态下,改变数据传输的通道数或控制循环速率来测量CPU使用率。这些指标可以帮助了解可用于添加代码、提高循环速率或增加数据传输通道的资源。


其他考量因素:


• 对于搭载多核处理器的CompactRIO系统,取每个内核测试结果的平均值。


• 对于CompactRIO控制器,分别在启用和禁用嵌入式用户界面的条件下进行测试,以测量该功能对系统整体性能的影响。


测试1-LabVIEW FPGA控制示例项目的性能基准测试


全新高性能CompactRIO系统采用的技术组合为复杂的实际应用带来了无可比拟的性能提升。针对控制应用测试,选择基于CompactRIO的LabVIEW FPGA控制示例项目。以该示例项目为基础,在实时控制器上执行8通道三次样条轨迹生成算法进行扩展,进一步增大CPU的负荷。



图1-基于CompactRIO的LabVIEW FPGA控制示例项目的架构框图,其中包含了一个8并联通道三次样条轨迹生成算法


下图显示的数字表示控制循环速率为1.5 kHz时的CPU使用率。在该速率下,双核高性能控制器使用约15%的处理器资源。相对于需要70%处理器资源的cRIO-9025控制器,这是一个重大改进。类似地,四核高性能控制器只使用5%的处理器资源,可以看到这与cRIO-9082控制器的性能非常相似。


图2-当控制循环速率为1.5 kHz时,控制应用运行包含8通道三次样条轨迹生成算法所需的处理器资源比较


对于CompactRIO控制器,在启用嵌入式用户界面选项的设置下又重复进行了该测试,由于本次测试没有涉及基于CompactRIO的LabVIEWFPGA控制示例项目的人机界面部分,因此CPU使用率并没有明显的变化。


测试2-监测应用的吞吐量基准测试


监测应用中一个常见的任务是将数据从I/O通道移动到实时处理器进行进一步处理、记录或可视化。设计了一个简单的测试来重现这一场景,并测量数据传输通道数发生变化时的CPU使用率。每个通道以100 kHz的控制循环速率传输16位采样数据。测试不包含任何数据流盘或在线处理。


图3-监测应用中一个简化的数据流盘任务的架构框图


下图显示了以100 kHz的控制循环速率读写100个通道数据的测试结果。在这个测试中,必须意识到硬件架构之间的细微差别可能会给测试带来瓶颈。例如,虽然cRIO-9068和CompactRIO控制器都使用不同的总线技术实现16个DMA通道,但它们仍然具备较高的理论最大带宽速率:cRIO-9068控制器为320 MB/s,CompactRIO控制器为250 MB/s。然而,CompactRIO控制器因其处理器具备更好的性能,能够以较低的CPU利用率维持较多数量的数据流。


图4-每通道控制循环速率为100 kHz时,读写100个通道的16位采样数据所需的处理器资源


类似于控制应用性能测试,由于本测试没有涉及人机界面,因而CompactRIO控制器的嵌入式用户界面选项对测试并没有太大的影响。如需了解嵌入式用户界面功能的影响,请查看测试3。


测试3-复杂真实应用的性能基准测试


充分发挥cRIO高性能控制器功能的最佳方式也许是进行基于复杂真实应用的测试。大型应用通常结合了不同类型的常见监测和控制任务,包括具有多速率控制的多个处理循环、数据处理、从I/O通道读写数据、数据流盘、通过网络将数据传送到远程人机界面以及执行非时间关键型健康和状态监测任务。


开发了一个包含上述任务的复杂应用,使用RT FIFO、定时循环以及网络流等常见的LabVIEW架构组件来协调各种应用组件并实现它们之间的通信。此外,还设计了一个任务,专门以较高的速度将数据发布到前面板显示控件,充分发挥cRIO高性能控制器的嵌入式用户界面功能。


图5-复杂真实控制和监测应用的架构框图


使用这一应用,NI cRIO-9025可实现大约950 Hz的最大控制循环速率。在该速率下,NI cRIO-9025的CPU使用率是91%,而双核高性能控制器仅使用可用处理器资源的15%就能达到相同的速率。这为增加额外的应用任务保留了大量的可用CPU资源,或者对于这个复杂的控制和监测应用,循环速率可提高到2 kHz以上。另一方面,可以看到四核变体在所有循环速率上都显示出与cRIO-9082非常相似的性能。


图6-在不同控制循环速率下,运行包含多个常见控制和监测任务的复杂应用所需的CPU使用率。


嵌入式用户界面的影响


CompactRIO控制器通过实现具有嵌入式用户界面支持的本地人机界面,以降低系统成本和复杂性。这主要归功于这款全新的控制器采用了最新的Intel Atom处理器,该处理器及其具有的显卡支持为使用NILabVIEW构建控制系统逻辑和触摸式用户界面提供了高性能基础。为了实现该集成,LabVIEW开发环境和NI Linux Real-Time操作系统会将任务优先级显示给开发人员,为控制任务分配的优先级应高于同一应用中运行的人机界面软件任务。


在该方法中,终端的资源用于系统控制和驱动用户界面的显卡。这降低了系统的硬件成本和维护负担,简化了软件开发的复杂性,但相对于其他显示选项会消耗更多的控制器资源。


为了测量嵌入式用户界面对处理器资源的影响,对测试3进行修改,在高速率下更新其组件,以连续运行人机界面。下图显示了在测试3的活跃用户界面下使用嵌入式用户界面功能的影响。


图7-启用嵌入式用户界面功能后,在高速率下更新用户界面,可以看到增加的CPU使用率大约恒定在3%-10%。


在满负荷下,使用嵌入式用户界面功能会导致双核高性能控制器的CPU使用率增加约10%,四核高性能控制器的CPU使用率增加约3%。类似于测试1和2,无论数据传输通道数如何变化,嵌入式用户界面功能的影响保持恒定。


为了支持嵌入式界面的图形处理能力,Intel Atom SoC采用了板载GPU来增强CPU。GPU通过频繁的处理器中断调用来与处理器进行通信,中断调用需要占用一定的LabVIEW Real-Time应用处理时间。由于采用高性能Intel Atom CPU,更新GPU所需的可变处理时间会持续增加,在测试3的应用基准测试中,控制循环速率低于6 kHz。为了实现更高的控制循环速率,同时仍然利用嵌入式用户界面,可以禁用GPU或将LabVIEW控制代码转移至板载FPGA,详情可参考以下链接。


对于嵌入式用户界面可能会影响系统性能的应用,请遵守以下建议:


通过LabVIEW中的处理器内核分配任务执行来进一步隔离任务。


如果需要进一步的隔离和更高的硬件可靠性,将LabVIEW控制代码转移至板载FPGA的硬件逻辑。


禁用Intel Atom SoC的GPU,以牺牲CPU利用率来减小抖动。


结论


嵌入式应用可执行的功能越来越多,如运动控制、数据记录、视觉采集和人机界面。由于NI CompactRIO控制器集成了最先进技术和独特的功能,可大幅加快开发时间并降低系统复杂性和成本,因而成为这些应用的理想选择。


相对于其他控制器产品系列,CompactRIO控制器有了显著的性能提升,而且扩展了可兼容NI Linux Real-Time等关键技术的终端范围。NI CompactRIO控制器基于LabVIEW RIO架构提供了灵活、功能强大的硬件和软件技术,适用于各种嵌入式控制和监测应用。


通过这一系列基准测试,证明CompactRIO控制器比同类CompactRIO控制器产品系列中的现有产品(如cRIO-9025),性能大约提升了4到8倍。此外,四核变体控制器的性能与cRIO-908x非常相似。


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
29天前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
103 2
|
26天前
|
监控 测试技术 PHP
性能和压力测试
【10月更文挑战第10天】性能和压力测试
110 60
|
4月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
95 2
|
2月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
22天前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
26 0
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:确保质量与性能的平衡之道
【9月更文挑战第24天】在软件开发的海洋中,测试是导航灯塔,指引着项目安全抵达质量的彼岸。本文将深入探讨软件测试的核心原则、方法论以及如何通过精心设计的测试策略来保障产品的可靠性和性能。我们将从测试的基础知识出发,逐步深入到高级测试技巧,最终展示如何通过实际案例来应用这些知识以确保软件的成功交付。
|
2月前
|
测试技术 Python
软件测试的艺术:确保质量与性能
【9月更文挑战第19天】在数字化时代,软件已成为我们生活的一部分。然而,随着软件复杂性的增加,如何确保其质量和性能成为了一个挑战。本文将探讨软件测试的重要性,介绍常见的测试类型和策略,并提供实用的代码示例来帮助读者更好地理解和应用这些测试方法。无论你是开发人员、测试工程师还是项目管理者,这篇文章都将为你提供有价值的见解和技巧。
|
2月前
|
存储 Java 关系型数据库
“代码界的魔法师:揭秘Micronaut框架下如何用测试驱动开发将简单图书管理系统变成性能怪兽!
【9月更文挑战第6天】Micronaut框架凭借其轻量级和高性能特性,在Java应用开发中备受青睐。本文通过一个图书管理系统的案例,介绍了在Micronaut下从单元测试到集成测试的全流程。首先,我们使用`@MicronautTest`注解编写了一个简单的`BookService`单元测试,验证添加图书功能;接着,通过集成测试验证了`BookService`与数据库的交互。整个过程展示了Micronaut强大的依赖注入和测试支持,使测试编写变得更加高效和简单。
71 4
|
3月前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能