当前位置: 首页 > news >正文

cyclictest stress 工具 使用

工具介绍

1. Cyclictest 准确且重复地测量线程的预期唤醒时间与它实际唤醒的时间之间的差异,以提供有关系统延迟的统计数据。 它可以测量由硬件、固件和操作系统引起的实时系统延迟
2.stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试

cyclictest 工具

cyclictest 功能介绍,安装编译

Cyclictest 准确且重复地测量线程的预期唤醒时间与它实际唤醒的时间之间的差异,以提供有关系统延迟的统计数据。 它可以测量由硬件、固件和操作系统引起的实时系统延迟

  1. 下载地址
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
  2. 安装依赖库
    sudo apt-get install libnuma-dev
  3. make && make install 编译

cyclictest 使用介绍

1.参数介绍
在这里插入图片描述2. 使用举例
在这里插入图片描述

  1. 输出参数介绍
    在这里插入图片描述

cyclictest 工具原理

主要逻辑在线程timerthread 中,在代码rt-tests/src/cyclictest/cyclictest.c
一句话的原理:记录当前时间next 通过nanosleep 函数,延时固定的时间,切出任务,等待任务重新切回来的时候,获取当前时间now,now减去时间间隔,减去next时间,则为系统延时的时间,统计该延时的时间,则为系统调度的延时时间。

默认参数
在这里插入图片描述

void *timerthread(void *param)
{/* 设置时间间隔 也就是参数 -i 指定的时间, 默认1000us */interval.tv_sec = par->interval / USEC_PER_SEC;interval.tv_nsec = (par->interval % USEC_PER_SEC) * 1000;... while(1){/* 延时切出任务 */if (nanosleep(&interval, NULL)) {if (errno != EINTR)warn("nanosleep failed. errno: %d\n", errno);goto out;}next.tv_sec = now.tv_sec + interval.tv_sec;next.tv_nsec = now.tv_nsec + interval.tv_nsec;if ((ret = clock_gettime(par->clock, &now))) {if (ret != EINTR)warn("clock_getttime() failed. errno: %d\n", errno);goto out;}
/* 计算系统调度延时 */....if (use_nsecs)diff = calcdiff_ns(now, next);elsediff = calcdiff(now, next);if (diff < stat->min)stat->min = diff;if (diff > stat->max) {stat->max = diff;if (refresh_on_max)pthread_cond_signal(&refresh_on_max_cond);}
....
}

stress 工具

stress 功能介绍,安装

sudo apt-get install stress 直接使用命令安装就可以啦

stress 参数介绍

-c, --cpu N:产生N个进程,每个进程都循环调用sqrt函数产生CPU压力。
-i, --io N:产生N个进程,每个进程循环调用sync将内存缓冲区内容写到磁盘上,产生IO压力。通过系统调用sync刷新内存缓冲区数据到磁盘中,以确保同步。如果缓冲区内数据较少,写到磁盘中的数据也较少,不会产生IO压力。在SSD磁盘环境中尤为明显,很可能iowait总是0,却因为大量调用系统调用sync,导致系统CPU使用率sys 升高。
-m, --vm N:产生N个进程,每个进程循环调用malloc/free函数分配和释放内存。
–vm-bytes B:指定分配内存的大小
–vm-stride B:不断的给部分内存赋值,让COW(Copy On Write)发生
–vm-hang N :指示每个消耗内存的进程在分配到内存后转入睡眠状态N秒,然后释放内存,一直重复执行这个过程
–vm-keep:一直占用内存,区别于不断的释放和重新分配(默认是不断释放并重新分配内存)
-d, --hdd N:产生N个不断执行write和unlink函数的进程(创建文件,写入内容,删除文件)
–hdd-bytes B:指定文件大小

–hdd-noclean:不要将写入随机ASCII数据的文件Unlink
-t, --timeout N:在N秒后结束程序
–backoff N:等待N微秒后开始运行
-q, --quiet:程序在运行的过程中不输出信息
-n, --dry-run:输出程序会做什么而并不实际执行相关的操作
–version:显示版本号
-v, --verbose:显示详细的信息

stress 使用介绍

  1. cpu 测试
    stress --cpu 8 --timeout 60
    开启8个CPU进程执行sqrt计算,60秒后结束
    在这里插入图片描述2. io 测试
    stress --io 2 --hdd 2 --timeout 60s
    开启2个IO进程,2个磁盘IO进程
    在这里插入图片描述
    测试结果,查看iowait 参数
    在这里插入图片描述
  2. 内存测试
    stress --vm 2 --vm-bytes 1G --vm-hang 100 --timeout 100s
    开启2个IO进程,2个磁盘IO进程
    开启2个进程分配内存,每次分配1GB内存,保持100秒后释放,100秒后退出。
    在这里插入图片描述
    测试结果,使用htop 查看
    在这里插入图片描述

相关文章:

cyclictest stress 工具 使用

工具介绍 1. Cyclictest 准确且重复地测量线程的预期唤醒时间与它实际唤醒的时间之间的差异&#xff0c;以提供有关系统延迟的统计数据。 它可以测量由硬件、固件和操作系统引起的实时系统延迟 2.stress是Linux的一个压力测试工具&#xff0c;可以对CPU、Memory、IO、磁盘进行…...

天合翔宇荣获 HICOOL 2023 全球创业者大赛决赛二等奖

8 月 25 日晚&#xff0c;主题为“聚势创新 向光而行”的 HICOOL2023 全球创业者峰会开幕式&#xff0c;在中国国际展览中心&#xff08;顺义馆&#xff09;举行。北京市委书记尹力宣布开幕&#xff0c;市委副书记、市长殷勇致辞&#xff0c;市委副书记刘伟出席。 开幕式之后&…...

【LeetCode75】第三十五题 统计二叉树中好节点的数目

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一棵二叉树&#xff0c;让我们统计这棵二叉树中好节点的数目。 那么什么是好节点&#xff0c;题目中给出定义&#xff0c;从根节点…...

探究排序算法:比较与非比较排序算法及性能分析

探究排序算法&#xff1a;比较与非比较排序算法及性能分析 排序算法是计算机科学中的基本问题&#xff0c;它涉及将一组元素按照特定的顺序排列。本文将深入介绍比较排序算法和非比较排序算法&#xff0c;包括每个算法的原理、Java代码示例以及它们的性能分析和比较。 比较排…...

如何输出高质量软文,媒介盒子教你4大技巧

作为一名软文作者&#xff0c;只有知道软文写作的要求&#xff0c;才能打造一篇成功的软文&#xff0c;以便为企业或产品带来较高的关注度和曝光率&#xff0c;提高企业的知名度和品牌形象。下面就随小编一起来看看吧&#xff01; 1、吸引眼球的标题 标题是软文写作的灵魂&am…...

用centos7镜像做yum仓库

用centos7镜像做yum仓库&#xff0c;公司全部服务器使用。 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.先下载对应版本的centos7的DVD版或Everything版 我用的是DVD的&#xff0c;比Everything版小&#xff0c;功能也挺全&#xff0c;这里里centos7.5的镜像做实验…...

【无法联网】电脑wifi列表为空的解决方案

打开电脑, 发现wifi列表为空, 点击设置显示未连接 首先检查是不是网卡驱动有问题, cmd, devmgmt.msc 找到网络适配器, 看看网卡前面是否有感叹号, 如果没有则说明网卡没问题, 有问题则重装驱动 看看网络协议是否设置正确 找到"控制面板\所有控制面板项\网络和共享中心&…...

Ajax-Axios的快速入门

Ajax 概念&#xff1a;Asynchronous Javascript Anderson XML&#xff0c;异步的JavaScript和XML 作用&#xff1a;数据交换&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器相应数据 异步交互&#xff1a;可以在不重新加载整个页面的情况下&#xff0c;与…...

mysql insert出现主键冲突错误的解决方法

mysql insert出现主键冲突错误的解决方法 insert 时防止出现主键冲突错误的方法 在mysql中插入数据的时候常常因为主键存在而冲突报错&#xff0c;下面有两个解决方法&#xff1a; 1 在insert 语句中添加ignore 关键字 insert ignore into table (id,name) values (1,username)…...

Visual Studio2022史诗级更新,增加多个提高生产力的功能

Visual Studio 2022发布了17.7x版&#xff0c;这次更新中&#xff0c;增加多个提高生产力的功能以及性能进一步改进。 如果要体验新功能&#xff0c;需要将Visual Studio 2022的版本升级到17.7及以上 下面我们看看新增的功能以及改进的功能&#xff01; 目录 文件比较自动修复代…...

理解HTTPS/TLS/SSL(一)基础概念+配置本地自签名证书

文章目录 没有HTTPS时的样子场景模拟WireShark的Capture Filter和Display Filter设置Capture Filter启动程序设置Display Filter过滤抓到的包 结论 关于为什么加密更简洁有力的回答对称加密和非对称加密和CA证书密钥交换对称加密非对称加密CA机构和证书如何解决客户端和CA机构之…...

前端需要理解的Vue知识

1 模板语法 Vue使用基于 HTML 的模板语法&#xff0c;能声明式地将其组件实例的数据绑定到DOM。所有Vue 模板可以被符合规范的浏览器和 HTML 解析器解析。Vue 会将模板编译成高度优化的 JavaScript 代码。结合响应式系统&#xff0c;当应用状态变更时&#xff0c;Vue 能够智能…...

【Go 基础篇】Go语言中的自定义错误处理

错误是程序开发过程中不可避免的一部分&#xff0c;而Go语言以其简洁和高效的特性闻名。在Go中&#xff0c;自定义错误&#xff08;Custom Errors&#xff09;是一种强大的方式&#xff0c;可以为特定应用场景创建清晰的错误类型&#xff0c;以便更好地处理和调试问题。本文将详…...

LeetCode面试经典150题(day 1)

LeetCode是一个免费刷题的一个网站&#xff0c;想要通过笔试的小伙伴可以每天坚持刷两道算法题。 接下来&#xff0c;每天我将更新LeetCode面试经典150题的其中两道算法题&#xff0c;一边巩固自己&#xff0c;一遍希望能帮助到有需要的小伙伴。 88.合并两个有序数组 给你两个…...

嵌入式linux之QT交叉编译环境搭建(最简单实测通用版)

这里总结下用于嵌入式linux下的QT交叉编译环境搭建&#xff0c;留作备忘&#xff0c;分享给有需要的小伙伴。不管你的是什么嵌入式linux环境&#xff0c;实测过的通用方法总结。 环境准备 需要准备的环境要求如下&#xff1a; 1.虚拟机(vmvare15.5) 2.ubuntu18.04-x64的linu…...

线性代数的学习和整理14: 线性方程组求解

目录 1 线性方程组 2 有解&#xff0c;无解 3 解的个数 1 线性方程组 A*xy 3根直线的交点&#xff0c;就是解 无解的情况 无解&#xff1a; 三线平行无解&#xff1a;三线不相交 有解 有唯一解&#xff1a;三线相交于一点有无数解&#xff1a;三条线重叠 2 齐次线性方程组…...

Web Components详解-Custom Elements

目录 引言 演变过程 概述 使用方式 创建标签 定义标签 使用标签 获取标签 异步定义标签 升级标签 完整案例 结语 相关代码 参考文章 引言 随着项目体量的增大&#xff0c;组件化和模块化的优势也愈发明显了&#xff0c;构建可重复使用、独立、可互操作的组件变得…...

批量将excel文件按照分类生成多个excel文件

要批量将Excel文件按照分类生成多个Excel文件&#xff0c;文件名为分类名&#xff0c;可以使用Python中的pandas库来实现。下面是示例代码&#xff1a; import pandas as pd import os def split_excel_by_category(file_path, category_column, output_folder): # 读取Ex…...

PCL 点云组件聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 该算法与欧式聚类、DBSCAN聚类很是类似,聚类过程如下所述: 1. 首先,我们需要提供一个种子点集合,对种子点集合进行初始的聚类操作,聚类的评估器(即聚类条件),可以指定为法向评估,也可以是距离评估,以此我…...

学习Linux的注意事项(使用经验;目录作用;服务器注意事项)

本篇分享学习Linux过程中的一些经验 文章目录 1. Linux系统的使用经验2. Linux各目录的作用3. 服务器注意事项 1. Linux系统的使用经验 Linux严格区分大小写Linux中所有内容以文件形式保存&#xff0c;包括硬件&#xff0c;Linux是以管理文件的方式操作硬件 硬盘文件是/dev/s…...

zotero-style:智能文献管理在学术研究中的创新实践

zotero-style&#xff1a;智能文献管理在学术研究中的创新实践 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件&#xff0c;提供了一系列功能来增强 Zotero 的用户体验&#xff0c;如阅读进度可视化和标签管理&#xff0c;适合研究人员和学者。 项目地址: ht…...

SEER‘S EYE模型辅助计算机组成原理教学:概念可视化与问答

SEERS EYE模型辅助计算机组成原理教学&#xff1a;概念可视化与问答 计算机组成原理这门课&#xff0c;对很多学生来说&#xff0c;就像在学一门“外星语”。CPU、寄存器、流水线、缓存……这些词听起来就够抽象的&#xff0c;更别说理解它们是怎么协同工作的了。传统的教学方…...

tkinter表格神器tkintertable实战:5分钟搞定可拖拽编辑的数据表格(附完整代码)

tkinter表格神器tkintertable实战&#xff1a;5分钟搞定可拖拽编辑的数据表格&#xff08;附完整代码&#xff09; 在Python GUI开发中&#xff0c;表格控件一直是刚需但实现起来又颇为棘手的组件。传统tkinter自带的Treeview虽然能勉强实现表格功能&#xff0c;但在交互体验上…...

HunyuanVideo-Foley保姆级教程:从零部署到音效生成的5个关键步骤

HunyuanVideo-Foley保姆级教程&#xff1a;从零部署到音效生成的5个关键步骤 1. 环境准备与镜像部署 1.1 硬件要求检查 在开始部署前&#xff0c;请确保您的设备满足以下最低配置要求&#xff1a; 显卡&#xff1a;NVIDIA RTX 4090/4090D&#xff08;24GB显存&#xff09;内…...

硬盘监控与健康管理:DiskInfo全方位使用指南

硬盘监控与健康管理&#xff1a;DiskInfo全方位使用指南 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo 在数字化时代&#xff0c;硬盘故障可能导致珍贵数据永久丢失。DiskInfo作为一款基于Crysta…...

22:L应用区块链+AI:蓝队的分布式安全

作者&#xff1a; HOS(安全风信子) 日期&#xff1a; 2026-03-19 主要来源平台&#xff1a; GitHub 摘要&#xff1a; 区块链的不可篡改特性与AI的智能分析能力相结合&#xff0c;为蓝队防御带来了新的可能性。L深入研究区块链AI的融合应用&#xff0c;构建了一个分布式、透明、…...

ESP32上给LVGL做个‘懒加载’:分页与动态读取大文本的实战对比(附代码)

ESP32上LVGL大文本显示优化&#xff1a;分页加载与动态读取的深度对比与实践 在嵌入式设备上处理大文本显示一直是开发者面临的挑战之一。当我们在ESP32这样的资源受限平台上使用LVGL&#xff08;Light and Versatile Graphics Library&#xff09;显示超长文本时&#xff0c;如…...

Android Gradle - Gradle 自定义插件(Build Script 自定义插件、buildSrc 自定义插件、独立项目自定义插件)

一、Build Script 自定义插件 1、基本介绍插件代码直接写在模块级 build.gradle 文件中逻辑非常简单&#xff0c;且仅在该模块使用2、演示 &#xff08;1&#xff09;具体实现 在模块级 build.gradle 文件中定义插件 class SimpleBuildScriptPlugin implements Plugin<Proje…...

使用PyTorch Lightning优化PETRV2-BEV模型训练流程

使用PyTorch Lightning优化PETRV2-BEV模型训练流程 如果你正在训练像PETRV2这样的BEV感知模型&#xff0c;可能已经体会过那种“一步一坑”的感觉。数据加载复杂、多GPU训练配置繁琐、日志记录混乱、实验难以复现……这些工程上的琐事&#xff0c;常常比模型本身更让人头疼。 …...

大模型“预训练”是怎么回事

经常在想&#xff0c;大模型是怎么学会“理解和生成语言”的。仔细看&#xff0c;它的训练过程其实很有规律&#xff0c;简单讲可以拆解成几个步骤。数据准备 训练大模型之前&#xff0c;最重要的是数据。我看到的做法是从各种网络资源收集海量文本&#xff0c;比如网页、书籍、…...