Off-CPU分析

news2024/11/15 16:57:48

前言

性能问题可以分为两种类型:

On-CPU:线程花时间在CPU上运行的地方;

Off-CPU:在I/O,锁,计数器,分页/交换上阻塞等待的时间

Off-CPU的分析是一种性能分析的方法,用于测量和研究Off-CPU的时间以及堆栈跟踪等上下文。它不同于CPU Profiling,后者仅当线程在On-CPU上执行时检查线程。在这里,我们的目标是阻塞和Off-CPU的时间段。如下图蓝色部分:

Off-CPU的分析是与CPU分析相辅相成的,可以理解为这个就是100%的线程时间。此方法不同于应用程序功能阻塞的跟踪技术,因此这个方法是针对内核调度的阻塞概念。这是一种方便捕获的概念。

线程离开CPU的原因包括:I/O,锁,也有一些跟当前线程执行无关的原因包括:由于对CPU资源的高需求而导致的非自愿上下文切换和中断。不管是什么原因,如果在工作负载请求(同步代码路径)期间发生的这种情况,就会引入延迟。

在本节中,主要介绍Off-CPU时间作为指标,并总结Off-CPU的分析的技术,作为Off-CPU的示例实例。

进行Off-CPU分析的先决条件要求

Off-CPU分析要求堆栈跟踪可供跟踪器使用的,因此首先必须解决这个问题。许多应用程序都是使用 -fomit-frame-pointer gcc选项编译的,从而打破了基于帧指针的堆栈遍历。VM运行时(如动态的Java编译方法)和跟踪器在没有其他帮助的情况下可能无法找到其符号信息,从而导致堆栈跟踪仅为十六进制。当然还有其他陷阱。后续再展开。

几个相关概念的说明

1)CPU采样

许多传统的分析工具使用跨所有CPU的活动定时采样,以特定的时间间隔或速率(例如:90Hz)收集当前指令地址(Program Counter)或整个堆栈回溯跟踪的快照。这将给出正在运行的函数或堆栈跟踪计数,从而可以合理估计CPU周期是花费在哪些地方。在linux上我们可以使用perftool来对cpu进行定时采样。

2)应用程序跟踪

在函数的enter和exit会被记录,Off-CPU也是没有记录。

3)Off-CPU跟踪

记录的是Off-CPU的时间段

4)Off-CPU采样

Off-CPU的时间段内的采样

这种方法使用的是定时从未在CPU上运行的线程捕获阻塞的堆栈跟踪,同样它也可以通过墙上时间profiler:一个始终对所有线程所有时间进行采样的profiler。然后可以过滤掉On-CPU的时间,以留下Off-CPU进行分析。

系统很少使用Off-CPU采样。采用通常作为每个CPU计时器中断,然后检查当前正在运行的中断进程,生成On-CPU profile,一个Off-CPU采样器需要不同的方式工作:在每个应用程序线程中设置计时器以唤醒他们并捕获堆栈,或者让内核按一定间隔遍历所有线程并捕获其堆栈。

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

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

相关文章

java懒加载实现

懒加载,也称为“不需要”加载,是一种内存管理方式。在 Java中,当一个类不再使用时,就会将其转化为另一个类对象。这也是所谓的“垃圾回收”。java中的懒加载有三种方式: 3、在对象被回收时,会将其销毁。 在…

DIY可视化必看教程 FLEX组件使用,教大家如何布局界面

DIY可视化必看教程FLEX组件使用 水平布局实现、两端对齐 1、拖个FLEX组件过来,排列方向改为水平。 2、拖个文件内容组件进去、栅格化到0 3、复制多一个文本内容组件 4、修改FLEX组件显示对齐方式 5、图标对齐 6、修改FLEX组件对齐方式 7、修改中间占位大&#xff0…

Windows 11 本地 php环境搭建:PHP + Apache + MySQL 安装和环境配置

目录 前言1. PHP 的下载、安装和配置1.1 下载 php1.2 安装 php1.3 配置 php 系统变量1.4 配置 php.ini 2. Apache 的下载、安装和配置2.1 下载 Apache2.2 安装 Apache2.3 修改配置 Apache2.4 指定服务端口(非必须)2.5 配置系统变量2.6 安装服务2.7 启动服…

计算机网络闲谈01——QUIC协议

计算机网络闲谈01——QUIC协议 预备知识 重传机制 RTT 一个连接的往返时间 RTO 重传超时时间 RTT和RTO 的关系是:由于网络波动的不确定性,每个RTT都是动态变化的,所以RTO也应随着RTT动态变化。 流量控制 对发送方发送速率的控制 称之为…

【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置

文章目录 一、模型位置发生偏移二、模型对象丢失或增加三、模型材质发生变化四、导出过程缓慢五、模型属性批量丢失一、模型位置发生偏移 在视图→可见性/图形替换模型类别→场地(VV可见性快捷),勾选项目基点。 单击选中项目基点,在属性中修改几点坐标。 即使修改了项目基…

界面控件DevExpress Blazor UI v22.2 - 支持.NET 7

DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具,该组件拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应…

# Java 并发编程的艺术(二)

Java 并发编程的艺术(二) 文章目录 Java 并发编程的艺术(二)并发编程的挑战上下文切换如何减少上下文的切换 死锁资源限制的挑战 Java 并发机制的底层实现原理volatile 的应用synchronized 的实现原理与应用三大特性实现原理 Java…

智慧冷链园区三维可视化,数字孪生助力大数据实时监控

近年来,业界学者及企业就智慧冷链物流展开深入研究,2010 年 IBM 发布的《智慧的未来供应链》研究报告中提出智慧供应链概念,并由此延伸出智慧物流概念,即智慧物流是以信息化为依托并广泛应用物联网、人工智能、大数据、云计算等技…

基于U-Net系列的医学图像分割

U-Net 在FCN 的基础上增加了上采样操作的次数和跳跃连接,使用跳跃连接将解码器的输出特征与编码器的语义特征融合,提高了分割精度,改善了 FCN 上采样不足的问题。 U-Net中没有全连接层,通过互连卷积与反卷积过程中的特征&#xff…

一文打通java泛型

目录 为什么要有泛型 生活场景 泛型的设计背景 泛型的概念 那么为什么要有泛型呢,直接Object不是也可以存储数据吗? 在集合中使用泛型 自定义泛型结构 注意点 自定义泛型结构:泛型类 自定义泛型结构:泛型方法 泛型在…

【微服务笔记23】使用Spring Cloud微服务组件从0到1搭建一个微服务工程

这篇文章,主要介绍如何使用Spring Cloud微服务组件从0到1搭建一个微服务工程。 目录 一、从0到1搭建微服务工程 1.1、基础环境说明 (1)使用组件 (2)微服务依赖 1.2、搭建注册中心 (1)引入…

网课/网校/知识付费/在线教育系统,100%全功能开源,可免费商用

一、开源项目简介 酷瓜云课堂,依托腾讯云基础服务架构,采用C扩展框架Phalcon开发,GPL-2.0开源协议,致力开源网课系统,开源网校系统,开源知识付费系统,开源在线教育系统。 酷瓜云课堂 - 网课系…

【LeetCode: 322. 零钱兑换 | 暴力递归=>记忆化搜索=>动态规划 | 背包模型】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

JavaScript 知识总结中篇(更新版)

72.get 请求传参长度的误区 常说:get 请求参数的大小存在限制,而 post 请求的参数大小无限制。 实际上 HTTP 协议并未规定 get / post 的请求参数大小限制。 纠正误区:是浏览器或 web 服务器对 get 请求参数的最大长度显示进行限制&#xf…

Nature Neuroscience:高家红团队首次发布中国人脑连接组计划研究成果及其大数据资源

人类生活在充满多样性的世界里。长久以来的研究发现,人类的脑与行为受到基因、环境和文化及其相互作用的塑造,然而这种影响发生的机制始终缺乏系统性探索与研究。近年来,前沿神经影像技术方法飞速进步,推动着多模态脑成像大数据集…

索尼ILCE-7SM3覆盖恢复案例

ILCE-7SM3算是索尼的流量级产品了,目前使用的比较多。今天我们来看一个格式化后又覆盖的恢复案例,看看这种情况下如何恢复残留的视频素材。 故障文件:80G SD卡 故障现象: 80G卡实际容量在74.5G左右,ExFat文件系统,格式化后又录…

Java8新特性-Stream

文章目录 简介Stream 的特性创建Stream通过集合创建流通过数组创建流通过Stream.of方法创建流创建规律的无限流创建无限流创建空流 Stream操作分类中间操作无状态filtermapflapMap 有状态distinctsortedreversedthenComparinglimitskipconcat 终结操作非短路操作forEachreducec…

D. Kilani and the Game(BFS模拟向四周漫延的过程)

Problem - D - Codeforces Kilani正在和他的朋友玩一个游戏。这个游戏可以表示为一个nm的网格,其中每个单元格都是空的或者被阻塞的,并且每个玩家在一些单元格中拥有一个或多个城堡(一个单元格中没有两个城堡)。 游戏分轮进行。每…

JS高级 -- 构造函数、数据常用函数

1. 深入对象 1.1 创建对象三种方式 利用对象字面量创建对象 const o {name:佩奇 }利用 new object 创建对象 const o new Object({ name:佩奇}) console.log(o) // {name: 佩奇}利用构造函数创建对象 1.2 构造函数 构造函数:是一种特殊的函数,主要…

SpringBoot+Vue3实现登录验证码功能

系列文章目录 Redis缓存穿透、击穿、雪崩问题及解决方法Spring Cache的使用–快速上手篇分页查询–Java项目实战篇全局异常处理–Java实战项目篇 Java实现发送邮件(定时自动发送邮件)_java邮件通知_心态还需努力呀的博客-CSDN博客 该系列文章持续更新…