【经验分享】ARM Linux-RT内核实时系统性能评估工具

news2025/2/24 18:23:06

【经验分享】ARM Linux-RT内核实时系统性能评估工具

  • 前言
  • 下载和编译方法
  • 常用工具介绍
  • 总结


前言

最近在研究Linux-RT实时系统,介绍下常用的实时系统的性能评估工具。
在这里插入图片描述


下载和编译方法

用git下载

git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git

或者下载我上传的工具包即可,已处理arm32位linux操作系统可用。
交叉编译

make CC=arm-linux-gnueabihf-

在编译目录下会生成如下常用工具。

常用工具介绍

1、cyclictest:用于测量和分析操作系统内核中的定时调度延迟,特别是在实时内核中。它可以帮助衡量系统响应的实时性。
在终端运行如下命令

cyclictest -t 4 -a -p 99 -m

参数解释:运行 4 个线程,绑定到当前可用的 CPU 核,设置优先级为 99,同时锁定内存,适合测试实时性能。测试结果如下:
在这里插入图片描述

输出结果含义如下: 
T: 0 表示序号为0的线程 
P: 99表示线程优先级为99 
C: 80631表示计数器。线程的时间间隔每达到一次,计数器加1 
I: 1000表示时间间隔为1000微秒(us) 
Min: 表示最小时延(us) 
Act: 表示最近一次的时延(us) 
Avg:表示平均时延(us) 
Max: 表示最大时延(us)

2、hackbench:一种用于测试调度器性能的基准测试工具,模拟消息传递负载以评估系统的调度效率。
在终端输入命令

hackbench -l 10000

参数解释:表示运行 10,000 次消息传递的循环。
工具会显示完成测试所需的时间(单位为秒),数值越小,系统调度器性能越好。结果如下:
在这里插入图片描述

3、hwlatdetect:用于检测硬件延迟的工具,可以帮助发现系统中由于硬件原因导致的延迟问题。

4、pi_stress:测试优先级反转的工具,通过创建多个线程来验证实时环境下的优先级反转处理是否有效。

pi_stress --duration=10

参数解释:
–duration=10:测试运行 10 秒。
输出结果:工具通过模拟优先级反转场景,验证实时系统是否正确处理了优先级继承,输出相关统计信息。
在这里插入图片描述
5、pip_stress:与 pi_stress 类似,专注于测试优先级继承协议的有效性。

6、pmqtest:用于测试 POSIX 消息队列的实时性能,帮助开发者评估消息队列的延迟和吞吐量。

pmqtest /dev/ttyS2

参数解释:/dev/ttyS2为模拟的 POSIX 消息队列设备文件。
输出结果:工具会显示消息队列的最大延迟、最小延迟和平均延迟。
在这里插入图片描述

7、ptsematest:测试 POSIX 信号量的延迟和性能,评估在多任务环境下信号量的实时性能。

ptsematest -a

参数解释:-a:将信号量测试运行在系统的所有 CPU 核上。
输出结果:工具会输出信号量的最大延迟、最小延迟和平均延迟,用于评估信号量的实时性能。
在这里插入图片描述

8、rt-migrate-test:用于测试和分析实时任务在多个 CPU 之间的迁移性能。

在终端运行如下命令

rt-migrate-test -p 80

参数解释:设置测试任务的优先级为 80
输出结果如下:
在这里插入图片描述

45:表示当前的测试阶段编号(或循环编号)。
后面的数值(如 200704336...):表示迁移延迟(以微秒为单位)或其他相关性能指标。
len:迁移任务的长度或完成迁移所需的时间。
loops:表示任务迁移的循环次数。
Parent pid:父进程的进程 ID,是管理这些任务的主线程。
Task X (prio Y) (pid Z):
Task X:表示测试的第 X 个任务。
prio Y:任务的实时优先级(越低表示优先级越高,通常范围是 0-99,优先级 8081 表示较高优先级)。
pid Z:任务对应的进程 ID。
Max:任务迁移的最大延迟(以微秒为单位)。
Min:任务迁移的最小延迟(以微秒为单位)。
Tot:任务迁移的总延迟,即所有迁移过程的延迟总和。
Avg:任务迁移的平均延迟。

9、sendme:通常用于发送和接收信号的测试,帮助评估信号传递机制的实时性能。

10、signaltest:用于测试信号处理的延迟和性能,评估信号在系统中的传递效率。
在终端输入命令:

signaltest -l 100

参数说明:-l 100 测试100个循环
输出结果:显示信号传递的延迟数据。
在这里插入图片描述

11、sigwaittest:测试 sigwait() 的性能,分析信号等待机制在实时系统中的效率。

在终端输入命令:

sigwaittest 

测试结果如下:
在这里插入图片描述

12、svsematest:测试 System V 信号量的性能,帮助评估此类型信号量的实时性能。
在终端输入命令:

svsematest -t 10

参数解释:-t 10:测试运行 10 秒。
测试结果:输出信号量的最大延迟、最小延迟和平均延迟数据。
在这里插入图片描述


总结

本文简要介绍了Linux-RT实时系统性能评估工具及实际测试方法,希望对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2280203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…

02内存结构篇(D4_JVM内存分配机制)

目录 一、对象的创建 1. 类加载检查 2. 分配内存 3. 初始化零值 4. 设置对象头 32位对象头 64位对象头 5. 执行方法 二、对象大小与指针压缩 三、对象内存分配 1. 对象内存分配流程图 2. 对象栈上分配 3.3 对象在Eden区分配 3.4 大对象直接进入老年代 3.5 长期存…

异步 进程 Promise规范及应用

异步 两个或多个事件不同时存在或发生,区别于同步,同步是顺序执行从上到下,而异步不需要顺序执行,且不依赖于前面的事情是否已完成。 举例: //异步执行 let count 1; let timer setTimeout(function () {count…

C#树图显示目录下所有文件以及文件大小

C#树图显示目录下所有文件以及文件大小 我们在打开某个目录属性时,可以查看到有大小信息.如下图 而一个目录(文件夹)System.IO.Directory是没有FileSize或者Length属性的. 目录(文件夹)的大小是指该目录下所有子目录和所有文件大小的累加,按字节为单位. 新建窗体应用程序Get…

力扣707题——设计链表

#题目 从零开始设计链表,我们拆分成两次任务,今天先看1 ,2 ,4 #代码

机器学习09-Pytorch功能拆解

机器学习09-Pytorch功能拆解 我个人是Java程序员,关于Python代码的使用过程中的相关代码事项,在此进行记录 文章目录 机器学习09-Pytorch功能拆解1-核心逻辑脉络2-个人备注3-Pytorch软件包拆解1-Python有参和无参构造构造方法的基本语法示例解释注意事项…

天津市开通首个万兆宽带:1秒钟下载1GB文件

快科技1月21日消息,华为光网宣布,天津联通携手华为,日前成功为天津市北辰区柴楼金园小区部署了天津市首个万兆宽带网络。 在现场测速环节中,该万兆宽带网络展现出了惊人的速度——高达9429Mbps的下载速率,几乎跑满带宽…

html全局遮罩,通过websocket来实现实时发布公告

1.index.html代码示例 <div id"websocket" style"display:none;position: absolute;color:red;background-color: black;width: 100%;height: 100%;z-index: 100; opacity: 0.9; padding-top: 30%;padding-left: 30%; padding-border:1px; "onclick&q…

数据结构(四) B树/跳表

目录 1. LRU 2. B树 3. 跳表 1. LRU: 1.1 概念: 最近最少使用算法, 就是cache缓存的算法. 因为cache(位于内存和cpu之间的存储设备)是一种容量有限的缓存, 有新的数据进入就需要将原本的数据进行排出. 1.2 LRU cache实现: #include <iostream> #include <list>…

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

CSDN年度回顾:技术征途上的坚实步伐

嘿&#xff0c;时光过得可真快呀&#xff0c;就像那匹跑得飞快的白马&#xff0c;嗖的一下&#xff0c;2024 年的日历就这么悄无声息地翻到了最后一页。这会儿我回头看看在 CSDN 上度过的这一年&#xff0c;心里那叫一个感慨万千&#xff0c;满满的都是喜悦&#xff0c;就像心里…

解决 PostgreSQL 中创建 TimescaleDB 扩展的字符串错误

解决 PostgreSQL 中创建 TimescaleDB 扩展的字符串错误 在使用 PostgreSQL 数据库并尝试创建 TimescaleDB 扩展时&#xff0c;你可能会遇到一些棘手的错误。今天&#xff0c;我们就来探讨一个常见的错误信息及相应的解决方法&#xff1a; CREATE EXTENSION IF NOT EXISTS tim…

【语言处理和机器学习】概述篇(基础小白入门篇)

前言 自学笔记&#xff0c;分享给语言学/语言教育学方向的&#xff0c;但对语言数据处理感兴趣但是尚未入门&#xff0c;却需要在论文中用到的小伙伴&#xff0c;欢迎大佬们补充或绕道。ps&#xff1a;本文不涉及公式讲解&#xff08;文科生小白友好体质&#xff09;&#xff…

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

前言 手头上有个ESP32&#xff0c;发现有wifi功能&#xff0c;希望连接JY61P并通过WIFI把姿态数据发送给电脑 1.采用Arduino IDE编译器&#xff1b;需要安装ESP32的开发板管理器&#xff1b; 2.电脑接受数据是基于python的&#xff1b; 1. ESP32 连接手机WIFI #include <…

将 Docker 安装到 Windows 的 D 盘的方法

1.官网下载Docker Desktop Installer.exe&#xff0c;官网网址&#xff1a;Get Started | Docker 2.以管理员身份打开 Windows 终端 3.切换到 你Docker Desktop Installer.exe下载到的地址 4.在运行代码前&#xff0c;需要提前手动创建好D:\Program Files\Docker和D:\Program F…

DeepSeek-R1-GRPO理解

一、GRPO GRPO&#xff08;Group Relative Policy Optimization&#xff09;是一种强化学习&#xff08;Reinforcement Learning, RL&#xff09;算法&#xff0c;专门用于训练大型语言模型&#xff08;LLMs&#xff09;在复杂任务&#xff08;如数学推理、代码生成等&#xf…

Unreal Engine 5 C++ Advanced Action RPG 十章笔记

第十章 Survival Game Mode 2-Game Mode Test Map 设置游戏规则进行游戏玩法 生成敌人玩家是否死亡敌人死亡是否需要刷出更多 肯定:难度增加否定:玩家胜利 流程 新的游戏模式类游戏状态新的数据表来指定总共有多少波敌人生成逻辑UI告诉当前玩家的敌人波数 3-Survival Game M…

接口(1)

大家好&#xff0c;今天我们来看看接口的概念&#xff0c;接口跟类的使用是有一些区别的&#xff0c;接口中都是抽象方法&#xff0c;简单介绍一下后&#xff0c;我们正式来学习。 2、接口 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用. 在java中,…

docker离线安装及部署各类中间件(x86系统架构)

前言&#xff1a;此文主要针对需要在x86内网服务器搭建系统的情况 一、docker离线安装 1、下载docker镜像 https://download.docker.com/linux/static/stable/x86_64/ 版本&#xff1a;docker-23.0.6.tgz 2、将docker-23.0.6.tgz 文件上传到服务器上面&#xff0c;这里放在…

debian中apt的配置与解析

引言 在系统使用过程中&#xff0c;我们可能会遭遇 apt update 操作出现问题&#xff0c;或者 apt upgrade 速度迟缓的情况。这往往是由于所使用软件源本身存在诸如服务器性能不佳、维护不及时等质量问题&#xff0c;同时&#xff0c;软件源服务器与我们所处地理位置的距离较远…