LabVIEW使用实时跟踪查看器调试多核应用程序
LabVIEW使用实时跟踪查看器调试多核应用程序
随着多核CPU的推出,开发人员现在可以在LabVIEW的帮助下充分利用这项新技术的功能。并行编程在为多核CPU开发应用程序时提出了新的挑战,例如同步多个线程对共享内存的并发访问以及处理器关联。LabVIEW可自动处理大多数多线程任务,同时使用户能够灵活地将线分配给他们选择的CPU(或同一CPU的内核)。LabVIEW2014实时模块支持在PharLap ETS目标上具有最多12个内核的CPU。以前,即使目标有更多可用内核,该模块也仅支持8个CPU内核。
如果要开发实时应用程序,监视详细CPU使用情况和其他事件的最佳方法是从实时目标捕获执行跟踪。借助实时跟踪查看器,可以查看和分析实时任务的执行轨迹,包括虚拟仪器(VI)和操作系统(OS)线程。实时跟踪查看器由两部分组成:检测VI和跟踪查看实用程序,检测VI需要围绕要跟踪其执行的代码添加。跟踪查看实用程序用于查看捕获的执行跟踪。在LabVIEW实时模块和LabWindows/CVI实时模块的2013和先前版本中,实时跟踪观察器被打包为一个独立的工具包(实时执行追踪工具包)。
访问低级执行信息对于优化和调试实时应用程序至关重要,可以轻松识别抖动源,例如处理器关联、内存分配、优先级继承或争用条件。
由不同优先级的多个线程使用共享资源可能会导致应用程序出现意外行为。表1显示了一些共享资源以及应用程序中可能出现的潜在问题。

以下两个屏幕截图表示在嵌入式多核实时目标上运行的程序的执行跟踪。NILabVIEW中的并行编程是使用两个定时循环(TL)结构实现的。每个TL都分配给不同的CPU。给定TL中的所有代码将在同一CPU上执行。处理器关联将一直保留,直到程序完成执行。图1和图2清楚地显示了每个线程的CPU关联性。与给定CPU关联的线程将突出显示,而其余线程将灰显。另请注意在不同CPU上运行的线程的并行执行。此执行跟踪显示与CPU0关联的线程。其余线程灰显。

图1.此执行跟踪显示与CPU0关联的线程
图2.此执行跟踪显示与CPU1关联的线程。
共享资源
时间关键型线程(需要在确定性时间内执行的线程)使用共享资源可能会给实时应用程序带来额外的抖动。其中一个共享资源是LabVIEW内存管理器。它负责动态分配内存。
当内存管理器拥有正常优先级程序时,其余线程(包括时间关键线程)必须等待共享资源可用。在这种情况下,时间关键型线程不可避免地会引入抖动。为了解决此问题,线程调度程序临时提升正常优先级的应用程序,使其在时间关键型线程中运行,以便它可以更快地完成并释放内存管理器。这种现象称为优先级继承或优先级倒置。为了避免这种情况,NI建议避免使用共享资源。内存管理器的解决方案是为数组预分配内存。
当混合两种优先级调度方案时,有时会增强优先级继承-在VI级别和定时循环级别。例如,在图3中,可以看到一个时间关键型子VI(红色图标)和一个定时循环争夺相同的内存资源。时间关键型子VI和定时循环之间共享资源的竞争可能导致优先级继承。使用两种不同优先级分配方案的示例。

图3.使用两种不同优先级分配方案的示例。
图4是另一个程序的跟踪,该程序具有正常优先级子VI和共享公共资源(内存管理器)的时间关键子VI。绿色标志显示动态内存分配,橙色标志显示优先级继承。时间关键型线程的执行被中断,以便可以提升正常优先级子VI以在时间关键型线程中运行,从而更快地释放共享资源。这最终会影响时间关键子VI的确定性。绿色标志显示动态内存分配

图4.绿色标志显示动态内存分配(访问内存管理器)。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。
相关文章:
LabVIEW使用实时跟踪查看器调试多核应用程序
LabVIEW使用实时跟踪查看器调试多核应用程序随着多核CPU的推出,开发人员现在可以在LabVIEW的帮助下充分利用这项新技术的功能。并行编程在为多核CPU开发应用程序时提出了新的挑战,例如同步多个线程对共享内存的并发访问以及处理器关联。LabVIEW可自动处理…...
【go语言grpc之client端源码分析二】
go语言grpc之server端源码分析二DialContextparseTargetAndFindResolvergetResolvernewCCResolverWrapperccResolverWrapper.UpdateStatecc.maybeApplyDefaultServiceConfigccBalancerWrapper.updateClientConnState上一篇文章分析了ClientConn的主要结构体成员,然后…...
centos7安装RabbitMQ
1、查看本机基本信息 查看Linux发行版本 uname -a # Linux VM-0-8-centos 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux cat /etc/redhat-release # CentOS Linux release 7.9.2009 (Core)2、创建创建工作目录 mkdir /…...
node基于springboot 口腔卫生防护口腔牙科诊所管理系统
目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 JAVA简介 4 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2.5 SPRINGBOOT框架 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.…...
Linux常用命令之find命令详解
简介 find命令主要用于:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 是我们在…...
CMake 入门学习4 软件包管理
CMake 入门学习4 软件包管理一、Linux下的软件包管理1. 检索已安装的软件包2. 让自己编译软件支持pkg-config搜索3. 在CMakeLists查找已安装的软件包二、适合Windows下的包管理工具1. vcpkg2. Conan(1) 安装Conan(2) 配置Conan(3) 创建工程(4) 安装依赖库(5) 使用依赖库三、CMa…...
【数据库数据乱码错误】存进去的数据乱码(???)
目录 1.当我新增一条数据的时候,成功后查看数据库中的数据时,竟然变成???乱码格式了: 2.那么问题有3处需要注意: 第一:settings配置 第二:POM文件 第三:…...
rewrite中的if、break、last
目录 rewrite 作用: 依赖: 打开重定向日志: if 判断: location {} 本身有反复匹配执行特征 在 location 中加入 break 和 last (不一样) 加了break后,立刻停止向下 且 跳出。 加了last…...
JavaSE-线程池(5)- 建议使用的方式
JavaSE-线程池(5)- 建议使用的方式 虽然JDK Executors 工具类提供了默认的创建线程池的方法,但一般建议自定义线程池参数,下面是阿里巴巴开发手册给出的理由: 另外Spring也提供了线程池的实现,比如 Thread…...
城市轨道交通供电系统研究(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
什么是 RESTful 风格?
一、什么是 REST ? REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式&#…...
从业6年,对敏捷和自动化测试的一点心得
不久前,参加Thoughtworks组织的一场自动化测试的分享,同事由于出差国外不能参加,特意嘱托我提问两个问题: 在互联网这个将“敏捷”与“持续集成”进行积极实践的环境里,“敏捷测试”与“自动化测试”成了一个大家经常…...
ThreeJS 之界面控制
文章目录参考描述界面自适应问题resize 事件修改画布大小修改视锥体的宽高比全屏显示dblclick 事件检测全屏显示状态进入全屏显示状态退出全屏显示状态尾声参考 项目描述ThreeJS官方文档哔哩哔哩老陈打码搜索引擎BingMDN 文档document.mozFullScreenElementMDN 文档Element.re…...
【查找算法】解析学习四大常用的计算机查找算法 | C++
第二十二章 四大查找算法 目录 第二十二章 四大查找算法 ●前言 ●查找算法 ●一、顺序查找法 1.什么是顺序查找法? 2.案例实现 ●二、二分查找法 1.什么是二分查找法? 2.案例实现 ●三、插值查找法 1.什么是插值查找法? 2…...
Android实例仿真之一
目录 零 开局三问 第一问:为什么要有这一章? 第二问:Android算不算是一个嵌入式系统? 第三问:用什么方法来分析Android这个大系统? 一 讨论Android的流行 二 深入浅出Android 零 开局三问 在正式开始…...
软考高级-信息系统管理师之重要工具和技术的口语化表示(最新版)
重要工具和技术的口语化表示 本文主要介绍重要工具和技术的口语化解释 1、 模板、表格和标准:就是用之前的项目的模版、表格、标准,结合本项目进行了修改,在编制一些计划、方案的时候就可以采用这个工具和技术。可以拿来就用的,节约时间、提高质量的。 2、 产品分析:通过一…...
基于springboot+vue的个人健康信息服务平台
基于springbootvue的个人健康信息服务平台 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背…...
SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】
SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】 目录SpringBoot2.x实战专题——SpringBoot2 多配置文件【开发环境、测试环境、生产环境】一、创建一个SpringBoot项目二、修改pom.xml中SpringBoot的版本三、配置文件3.1 application-dev.ym…...
测试2:编写测试用例的方法
2.编写测试用例的方法 7种 测试常用的方法:code review 代码静态分析、CI/CD CI–持续集成–开发成员经常集成它们的工作,尽快发现集成错误 CD–持续部署–将集成后的代码部署到更贴近真实运行的环境 2.1 测试用例的描述: 用例编号 用例…...
docker安装配置镜像加速器-拉取创建Mysql容器示例
List item docker 常见命令大全docker安装docker拉取创建Mysql容器docker 安装 1、安装链接:https://blog.csdn.net/BThinker/article/details/123358697 ; 2、安装完成需要配置docker镜像加速器 3、docker 镜像加速器推荐使用阿里云的: 编…...
别再双击打不开了!手把手教你用CMD命令行启动BurpSuite破解版(附环境变量排查)
当BurpSuite双击无响应时的终极解决方案:从环境变量到命令行启动全解析 很多安全测试人员在初次接触BurpSuite时都会遇到一个令人沮丧的问题——双击jar文件后毫无反应。这种情况往往让初学者感到困惑,甚至怀疑自己下载的软件是否完整。本文将深入剖析这…...
终极指南:ta-lib-python社区案例分享与实用应用技巧
终极指南:ta-lib-python社区案例分享与实用应用技巧 【免费下载链接】ta-lib-python Python wrapper for TA-Lib (http://ta-lib.org/). 项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python ta-lib-python是一个强大的Python技术分析库,…...
【空间计算】【复杂系统】运动几何及运动测量
一、人类运动几何的全息参数体系与依赖关系分析 1.1、空间数学理论基础框架 1. 空间数据结构体系 数据结构 数学表示 参数维度 拓扑性质 计算复杂度 适用场景 点云 P = {p_i ∈ ℝ} 3N 无结构 O(N) 原始数据 网格 M = (V,E,F) V:3N_v, E:2N_e, F:3N_f 二维…...
EPLAN原理图绘制避坑指南:从‘中断点’到‘电位定义’,这些符号你用对了吗?
EPLAN原理图绘制进阶指南:特殊符号与连接逻辑的深度解析 在电气设计领域,EPLAN作为专业级CAD工具,其符号系统的精细程度往往决定了图纸的准确性与可维护性。许多工程师能够熟练完成基础原理图绘制,却在面对多页协同设计、复杂PLC系…...
当前塑造 AI 未来的大问题
原文:towardsdatascience.com/the-big-questions-shaping-ai-today-5e7c1da38b41?sourcecollection_archive---------6-----------------------#2024-08-08 https://towardsdatascience.medium.com/?sourcepost_page---byline--5e7c1da38b41---------------------…...
CircuitPython社区贡献指南:从代码审查到本地化翻译的完整实践
1. 项目概述:CircuitPython社区贡献的入门与进阶如果你和我一样,是个喜欢鼓捣微控制器,但又对C语言的指针和内存管理感到头疼的开发者,那么CircuitPython的出现绝对是个福音。它让Python的简洁和易读性跑在了像Adafruit Feather、…...
客户端命令行
1. ./tongzkCli.sh -server 10.10.83.95:2181ls /一创建永久节点 2.创建节点并写入数据 [tongzk: 10.10.83.95:2181(CONNECTED) 2] create /jiedian1 "a1" Created /jiedian1 [tongzk: 10.10.83.95:2181(CONNECTED) 3] ls / [jiedian1, tongzk] [tongzk: 10.10.83.95…...
流域生态系统碳排放、碳循环模拟与评估技术应用
随着全球气候变化的加剧,碳中和已成为实现可持续发展的重要目标之一。碳中和不仅仅是能源和工业领域的调整,它涉及整个生态系统的转型与再生。在这一过程中,流域的生态系统作为水、土、生物多样性等自然资源的集成体,扮演着至关重…...
5分钟快速上手:ZenTimings终极AMD内存监控工具完全指南
5分钟快速上手:ZenTimings终极AMD内存监控工具完全指南 【免费下载链接】ZenTimings 项目地址: https://gitcode.com/gh_mirrors/ze/ZenTimings ZenTimings是一款专门为AMD Ryzen平台设计的专业内存时序监控软件,能够实时显示内存的关键时序参数…...
从冷冰冰播报到“会呼吸的语音”:ElevenLabs非正式情绪语音落地4大行业案例(客服话术/有声书/AI陪伴/短视频配音),含真实AB测试CTR提升27%数据
更多请点击: https://intelliparadigm.com 第一章:从冷冰冰播报到“会呼吸的语音”:ElevenLabs非正式情绪语音的技术跃迁 传统TTS系统常陷入语调扁平、节奏机械、情感缺失的困境——即便输入“我太开心了!”,输出也如…...
