鲲鹏devkit训练营——《锁长期等待》项目解析

news2025/8/9 12:29:50

《锁长期等待》项目解析

通过本次实验学习掌握性能分析工具,利用性能分析工具找出程序中加锁范围不合理的地方并解决

安装web端性能分析工具

获取性能分析工具软件包
1、登录远程服务器
获取鲲鹏性能分析工具软件包上传到远端服务器
在这里插入图片描述
在这里插入图片描述

2、安装性能分析工具
使用一下命令对压缩包进行解压
tar --no-same-owner -zxvf Hyper-tuner_x.x.x_linux.tar.gz
通过–no-same-owner保证解压后的文件属组为当前操作用户(root)文件属组。

执行如下命令进入解压后的安装包目录
cd cd Hyper_tuner
执行如下命令安装工具
./install.sh
在这里插入图片描述
这里对应的信息为
选择安装工具,默认为安装系统性能分析、Java性能分析和系统诊断。可选择:
1:安装系统性能分析、Java性能分析和系统诊断

2:只安装系统性能分析和系统诊断

3:只安装Java性能分析

在这里插入图片描述
安装成功后使用web端进行登录,不要忘记打开8086端口号
在这里插入图片描述
进入性能分析页面

获取源码

首先在本地插件文件记事本,然后访问网址获取源码
https://github.com/kunpengcompute/devkitdemo/tree/main/Hyper_tuner/testdemo/lock

在这里插入图片描述
将代码粘贴到记事本当中,将记事本重命名为pthread_mutex_long.c,然后上传到远端服务器

在这里插入图片描述

进行源码编译启动

对文件授予最高权限
chmod -R 777 pthread_mutex_long.c
在这里插入图片描述

使用以下命令对源码进行编译
gcc -g pthread_mutex_long.c -o pthread_mutex_long -lpthread -lm && chmod 777 pthread_mutex_long
绑核启动程序
taskset -c 0-1 ./pthread_mutex_long
在这里插入图片描述

进行性能分析

新建系统性能分析工程
在这里插入图片描述

全景分析

首先进行全景分析
通过采集系统软硬件配置信息,以及系统CPU内存存储IO网络IO资源的运行情况,获得对应的使用率饱和度错误次数等指标,以此识别系统性能瓶颈。针对部分系统指标项,根据当前已有的基准值和优化经验提供优化建议。

针对大数据场景、数据库场景和分布式存储场景的硬件配置系统配置组件配置进行检查并显示不是最优的配置项,同时分析给出典型硬件配置及软件版本信息。
采样时长60s即可,选择立即执行
在这里插入图片描述
开始进行数据采集
在这里插入图片描述
这里注意测试应用要一直在运行状态
采集完成后查看cpu利用率
在这里插入图片描述
cpu1和cpu0的使用率比较高

进程/线程分析性能分析

新建工程xcfex选择进程线程性能分析

采集进程/线程对CPU、内存、存储IO等资源的消耗情况,获得对应的使用率、饱和度、错误次数等指标,以此识别进程/线程性能瓶颈。针对部分指标项,根据当前已有的基准值和优化经验提供优化建议。针对单个进程,还支持分析它的系统调用情况。

采样时长60s

在这里插入图片描述
在这里插入图片描述
分析完成后在优化建议处可以看到给我们提示刚刚启动的应用需要优化
在这里插入图片描述
找到这两处线程
在这里插入图片描述

资源调度分析

新建工程进行资源调度分析

基于CPU调度事件分析系统资源调度情况,主要包括:

  • 分析CPU核在各个时间点的运行状态,如:Idle、Running,以及各种状态的时长比例。
  • 分析进程/线程在各个时间点的运行状态,如:Wait、Schedule和Running,以及各种状态的时长比例。
  • 分析进程/线程切换情况,包括:切换次数、平均调度延迟时间、最小调度延迟时间和最大延迟时间点。
  • 分析各个进程/线程在不同NUMA节点之间的切换次数。如果切换次数大于基准值,能给出绑核优化建议。

在这里插入图片描述
开始进行资源调度任务

在这里插入图片描述
找到启动的应用,这里可以看出线程的切换次数并不平均,意味这可以根据这方面进行性能调优
在这里插入图片描述
发现在采样期间两个线程之间的调度没有交集,没有平衡的相互交替运行,我们可以推断两个线程可能在抢占某个资源
在这里插入图片描述

热点函数分析

新建工程进行热点函数分析
分析C/C++程序代码,找出性能瓶颈点,获得对应的热点函数及其源码汇编指令;支持通过火焰图展示函数的调用关系,给出优化路径。

在这里插入图片描述
在总览处可以给出了,排名前十的热点函数
在这里插入图片描述
点击热点函数可以直接查看函数原码
在这里插入图片描述

在这里插入图片描述
这里对函数进行修改
在这里插入图片描述
这里是加锁的范围不合理,所以将开平方的操作移到锁外,可以减少频繁进行资源切换
在这里插入图片描述
这里修改后重新进行上传编译启动

资源分析任务结果

重新进行资源调度分析

分析进程/线程在各个时间点的运行状态,如:Wait、Schedule和Running,以及各种状态的时长比例。

修改前
在这里插入图片描述
修改后

在这里插入图片描述
可以看出两个线程调度均匀等待现象很少
通过修改使资源调度均匀提高了性能

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

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

相关文章

【Flink】基本转换算子使用之fliter、flatMap,键控流转换算子和分布式转换算子

文章目录一 Flink DataStream API1 基本转换算子的使用(1)flitera 使用匿名类实现b 使用外部类函数实现b 使用flatMap实现(2)flatMapa 使用匿名类实现b 使用匿名函数实现2 键控流转换算子(1) keyBy&#xf…

mysql InnoDB存储引擎的锁机制

目录 前言 1. 锁的分类 1.1 实现方式 1.2 锁的粒度 2. 查询操作加锁方式 2.1 一致性非锁定读 2.2 一致性锁定读 3. 锁的算法 4. 锁的升级 5. 死锁 6.总结 前言 锁机制的目的是最大程度提高数据库的并发访问,另一方面确保可以以一致的方式读取和修改数据。…

Camunda工作流引擎简记

本文转载自玩转Camunda之实战篇-赶紧收藏起来吧_哔哩哔哩_bilibili 其中部分内容,经过本人修改 一、工作流相关介绍 BPM(BusinessProcessManagement),业务流程管理是一种管理原则,通常也可以代指BPMS(BusinessProcessManagementSuite)&#…

火山引擎 DataTester 应用故事:一个A/B测试,将产品DAU提升了数十万

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 疫情让线下的需求大量转移到线上,催生出了远程办公、网络授课、线上健身等新的生态现象。如何更好地为用户服务,提升用户体验,成…

计算机的组成

文章目录五大部件1) 输入设备2) 存储器3) CPU(中央处理器)4) 输出设备五大部件 所有类型的计算机,其本质都是接收用户输入的原始数据,并将其加工、处理成对用户有用的数据,它们都支持执行如表 1 所示的 5 项基本操作。…

SpringCloud Sentinel 使用

哈喽~大家好,SpringCloud Sentinel 使用。 🥇个人主页:个人主页​​​​​ 🥈 系列专栏:【微服务】 🥉推荐专栏: JavaEE框架 目录 一、前言 1、什么是Sentinel&…

时间复杂度和空间复杂度【一学就会】

目录 🥇1.算法效率 🔎2.时间复杂度 📗2.1 大O渐进表示法 📘2.2 时间复杂度的练习(没有说明即最坏情况) 🔑3.空间复杂度 🌈如何评价一个代码呢?它的效率高不高&#…

美创科技发布数据安全综合评估系统|推进安全评估高效开展

数字化深入的今天,数据价值和风险相伴相生,让数据要素发挥更大价值,提高风险预见预判,数据安全评估日益紧迫和必要。《数据安全法》提出:“重要数据处理者应对其数据处理活动定期开展风险评估,并向有关主管…

精彩回顾|关系网络赋能银行数字化转型的应用与实践

本文是根据11月10日Galaxybase图创课堂:乘金融科技之风:关系网络赋能银行数字化转型的应用与实践整理,错过的小伙伴们可以观看回放:https://uao.so/pct862806 精彩回顾 近年,知识图谱的重要性和实际应用逐步呈上升趋…

十大排序(总结+算法实现)

十大排序&#xff08;总结算法实现&#xff09; 十大排队的性能分析 冒泡排序 使用冒泡排序&#xff0c;时间复杂度为O(n^2),空间复杂度为O(1) 像气泡一样从低往上浮现 vector<int> bubbleSort(vector<int>nums) {int lengthnums.size();for(int i0;i<lengt…

PreScan快速入门到精通第三十七讲PreScan中使用深度摄像机

深度相机提供了一个 "相机"图像,其中包含深度值,而不是颜色。它提供的地面真实数据可用于校准或验证立体相机的深度计算。 对象配置 系统选项卡 变量 描述 …

antd——a-tree-select 树形选择控件 与 a-cascader 级联选择器 的对比——技能提升

在遇到 省市区多级联动数据的时候&#xff0c;经常会用到的就是 a-cascader级联选择器。 1.级联选择器的使用方法 1.1 需要指定数据源——options 数据结构是 对象数组嵌套——value/label/children <a-cascader :options"options" placeholder"Please sele…

SpringBoot3 正式发布:有哪些新玩法?

SpringBoot 3.0现已正式发布&#xff0c;可以在Maven Central中找到。 这是自四年前发布2.0以来的第一个主要版本。 它也是SpringBoot的第一个GA版本&#xff0c;提供了对Spring Framework 6.0和GraalVM的支持。 一文详解&#xff5c;从JDK8飞升到JDK17&#xff0c;再到未来…

Tesla M40 下Ubuntu anaconda pycharm安装

显卡&#xff1a;Tesla M40 24GB (2张&#xff09; 显卡驱动版本(推荐)&#xff1a;470.57.02 cuda版本&#xff1a;11.4 安装前需要&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;禁用nouveau驱动&#xff01;&#xff01;&#xff01;&#xff01;&#x…

php中通用的excel导出方法实例

一.普遍导出方法 excel导出的方法网上有很多&#xff0c;在crm或是oa系统中导出excel是常有的事&#xff0c;做过的此功能人都知道&#xff0c;其主要操作其实是循环数据列表&#xff0c;然后一格一格地添加数据到固定的单元格中。只要做好了一次&#xff0c;其后只要复制相关…

外汇天眼:2022 年世界杯已经开始,但这将如何影响外汇交易?

关于 2022 年世界杯 2022年世界杯于2022年11月20日在卡塔尔拉开帷幕&#xff0c;将持续到2022年12月18日。2022年国际足联世界杯是由国际足联成员协会的男子国家队和第22届国际足联世界杯举办的国际足球锦标赛。这是第一次在阿拉伯世界举办的世界杯。 关于中东 尽管经历了疫情…

MCE | KRAS 突变型肺癌耐药性探索

KRAS 是一种致癌基因&#xff0c;编码 KRAS 蛋白 (一种 small GTPase 转导蛋白)。KRAS 通过结合 GTP/GDP 控制其活跃状态&#xff0c;进而控制其信号传递和下游级联反应。致癌性 KRAS 突变会破坏 GTPase 活性&#xff0c;进而使 KRAS 蛋白锁定在活跃状态下&#xff0c;从而使启…

【面试题】JS基础-异步

1. 异步 1.1 为什么要异步&#xff1f; JS是单线程语言&#xff0c;只能同时做一件事。JS和DOM渲染共用同一个线程&#xff0c;因为JS可修改DOM结构。当遇到等待的情况时&#xff0c;例如网络请求、定时任务&#xff0c;程序不能卡住。所以需要异步来解决JS单线程等待的问题&…

学完Spring框架回头再来看反射你会发现真的不一样

文章目录前言一.什么是反射&#xff1f;二.如何实现反射&#xff1f;2.1java.lang.Class2.2通过反射创建对象2.3通过反射获取类成员三.反射的性能四.反射是如何破坏单例模式的&#xff1f;五.如何避免单例模式被反射破坏&#xff1f;前言 你还记得你的Spring入门案例吗&#x…

查询利器—索引

目录 索引的优缺点 常见索引分类 MySQL数据操作的宏观过程 认识磁盘 正式理解索引结构 采用B树的原因 聚簇索引与非聚簇索引 索引操作 索引创建原则 索引的优缺点 优点&#xff1a;提高一个海量数据的检索速度 缺点&#xff1a;查询速度的提高是以插入、更新、删除…