ebpf+perfetto实现调度延迟记录与展示

1.背景

  1. 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?
  2. 其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.

我们期望最终能做成如下效果:
在这里插入图片描述

  1. 开销要小,能够在生产环境中使用. perfetto本身的ftrace采集数据太多,性能损耗较大
  2. 可以对指定进程或线程进行分析,可以只对大于某个范围的调度延迟进行统计,减少数据量和性能损耗

2.解决方案分析

我们可以利用ebpf实现调度延迟的监控

2.1 ebpf监控原理

调度延迟是指线程进入runnable状态后,等待其实际获得CPU开始运行之间的时间。
我们可以跟踪线程从放入就绪队列到实际被选中并获得CPU的过程。
其中linux中,线程放入就绪队列是通过以下函数实现的:

2.1.1 sched_wakeup, sched_wakeup_new

而实际选中并获得cpu是通过以下函数实现的:

2.1.2 sched_switch

因此,我们只需在2.1.1时记录线程的tid和时间,

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问

文章目录 1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Linux Ubuntu系统以Docker的方式快速部署Dify,并结合cpolar内网穿透工具实现公网远程访问本地Dify! Dify 是一款…

性能优化 - 你知道开发React项目中,可以做哪些性能优化吗

难度级别:中高级及以上 提问概率:75% 在React项目开发中,面临着比较大的问题就是组件更新以及重复渲染的问题,基于这两点,我们可以在日常开发工作中,可以通过以下几点,来提升React的性能,加快组件更新对比,避免过多的重复渲染问题。 …

用国内版Devin:DevOpsGPT开发一个简易官网

前言: 世界上第一个AI程序员Devin想必已经给大家带来了不小的震撼,这种L4级的技术也许已经昭示着AGI离我们或许真的不远了。 这里先给大家普及一个概念: L4是谷歌对AGI划分的第四个等级,把代码丢给 AI 改这个是 L1 或者 L2 级别的…

iOS-获取Xcode工程中文件的路径

1、使用Create folder references的Add folders的方式把文件或者文件夹拖到Xcode工程中 拖入时的设置参考下图 注意拖入到工程之后文件夹是蓝色的(Xcode10.1环境) 2、代码具体实现: 使用NSBundle的API,然后拼接具体路径即可 NS…

RabbitMQ基本使用及企业开发中注意事项

目录 一、基本使用 二、使用注意事项 1. 生产者重连机制 - 保证mq服务是通的 2. 生产者确认机制 - 回调机制 3. MQ的可靠性 4. Lazy Queue模式 5. 消费者确认机制 一、基本使用 部署完RabbitMQ有两种使用方式: 网页客户端Java代码 MQ组成部分:…

uniapp开发笔记----配置钉钉小程序

uniapp开发笔记----配置钉钉小程序 1. 项目根目录添加package.json文件2. 之后点击运行就可以看到已经添加了钉钉小程序3. 如果首次使用需要配置 其他功能待开发。。。 接上一章之后,我想要把项目配置成钉钉小程序 官方文档点击这里 1. 项目根目录添加package.json…

专业140+总410+国防科技大学831信号与系统考研经验国防科大电子信息与通信,真题,大纲,参考书。

应群里同学要求,总结一下我自己的复习经历,希望对大家有所借鉴,报考国防科技大学,专业课831信号与系统140,总分410,大家以前一直认为国防科技大学时军校,从而很少关注这所军中清华,现…

第七篇:3.6 其他评估考虑/4.审计指南/5. 通用报告规范/6.披露指南、参考标准及其他 - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇 …

【网络】什么是RPC

RPC 是Remote Procedure Call的缩写,译为远程过程调用。是一个计算机通信协议。 1、为什么需要远程调用 在如何给女朋友解释什么是分布式这一篇文章中介绍过,为了提升饭店的服务能力,饭店从一开始只有一个负责所有事情的厨师发展成有厨师、切…

Mac清理缓存哪些文件夹可以清理 Mac清理缓存怎么操作 Mac清理缓存快捷键 cleanmymac值不值得买

缓存文件属于电脑临时保存数据的一种文件,它的存在可以帮助电脑快速打开网页,减少缓存的时间。但是如果用户不主动清除这些缓存,时间一长它们会占用磁盘空间,影响系统性能和稳定性。因此,养成定期给Mac做内存缓存垃圾清…

C++奇迹之旅:我与类和对象相遇

文章目录 📝面向过程和面向对象初步认识🌠 类🌉类的引入🌉类的定义 🌠类的访问限定符🌠访问限定符 🌠类的两种定义方式🌉封装 🚩总结 📝面向过程和面向对象初…

python+django+flask+vue贫困地区儿童资助网站22pk7

Python 中存在众多的 Web 开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2 等。近几年较为流行的,大概也就是 Flask 和 Django 了 一开始,本文就对系统内谈到的基本知识,从整体上进行了描述&#xff0c…

【鸿蒙开发】系统组件Row

Row组件 Row沿水平方向布局容器 接口: Row(value?:{space?: number | string }) 参数: 参数名 参数类型 必填 参数描述 space string | number 否 横向布局元素间距。 从API version 9开始,space为负数或者justifyContent设置为…

万界星空科技工时管理系统功能介绍

一、工时管理系统的功能 1、工时记录与统计 工时管理系统提供了便捷的工时记录和统计功能。员工可以通过系统记录每天的上班时间、下班时间以及休息时间,系统会自动计算工作时长并生成工时统计报表。这一功能不仅能够准确记录员工的工作时间,还能够帮助…

基于大数据的汽车信息可视化分析预测与推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 本项目通过集成网络爬虫技术,实时获取海量汽车数据;运用先进的ARIMA时序建模算法对数据进行深度挖掘和分析;结合flask web系统和echarts可视化工具,…

如何在Rust中操作JSON

❝ 越努力,越幸运 ❞ 大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder。 前言 我们之前在Rust 赋能前端-开发一款属于你的前端脚手架中有过在Rust项目中如何操作JSON。 由于文章篇幅的原因,我们就没详细介绍…

QT 使用redis ,连接并使用

一.redis安装 链接:https://pan.baidu.com/s/17fXKOj5M4VIypR0y5_xtHw 提取码:1234 1.下载得到文件夹如图 course_redis为安装包。 2.启动Redis服务 把安装包解压到某个路径下即可。 打开cmd窗口,切换到Redis安装路径,输入 r…

微服务初始及Eureka注册中心

1,架构演变 单体架构:将所有业务功能集中在一个项目中开发,达成一个包部署 优点:架构简单,部署成本低 缺点:项目耦合度高 分布式架构:根据业务功能对系统进行拆分,每个业务作为独…

Codeforces Round 938 (Div. 3) A - F 题解

A. Yogurt Sale 题意:要购买n个酸奶,有两种买法,一种是一次买一个,价格a。一种是一次买两个,价格b,问买n个酸奶的最小价格。 题解:很容易想到用2a和b比较,判断输出即可。 代码&am…

小程序开发SSL证书下载和安装

在开发小程序时,确保数据的安全传输至关重要,而实现这一目标的关键在于正确获取与安装SSL证书。以下详细介绍了从获取到安装SSL证书的完整流程,以助您为小程序构建可靠的加密通信环境。 一、小程序SSL证书类型选择: 域名验证型D…