PERF EVENT API篇

简介: 简介 perf_event 是内核对用户态提供软硬件性能数据的一个统一的接口,用户通过 perf_event 的句柄操作能获取到各式各样的性能数据,本文将介绍如何通过用户态实现对内核 perf_event 功能的使用 API 介绍 int perf_event_open(struct perf_e.

简介

perf_event 是内核对用户态提供软硬件性能数据的一个统一的接口,用户通过 perf_event 的句柄操作能获取到各式各样的性能数据,本文将介绍如何通过用户态实现对内核 perf_event 功能的使用

API 介绍

int perf_event_open(struct perf_event_attr *attr,
                    pid_t pid, int cpu, int group_fd,
                    unsigned long flags);

用于打开特定的 perf 事件

参数 attr 指定 事件类型以及参数 (attr.type attr.config)
参数 pid 指定 被监控的进程 或者 cgroup
参数 cpu 指定 cpu id
参数 group_fd 指定 perf 事件组
参数 flags man perf_event_open

man perf_event_open 去发现更多

对创建的 event 句柄控制

主要是通过 ioc 和 prctl

ioc(fd, PERF_EVENT_IOC_DISABLE, 0) # 暂停该事件的监控
ioc(fd, PERF_EVENT_IOC_RESET, 0) # 重置计数器

完整用例

# 创建 event 属性
cycle_perf_event_attr = pyperf.perf_event_attr()
cycle_perf_event_attr.type = pyperf.PERF_TYPE_HARDWARE # 通用 CPU 事件类型
cycle_perf_event_attr.config = pyperf.PERF_COUNT_HW_CPU_CYCLES # 记录 CPU cycle
cycle_perf_event_attr.inherit = 1

# 其他参数
cpu = -1 # 所有cpu
pid = 0 # 监控本进程

# 打开事件
fd = pyperf.perf_event_open(cycle_perf_event_attr, pid, cpu, -1, flag)

time.sleep(1)
ret = os.read(fd, 8) # 所有字段均为 64 bit
value = struct.unpack("L", ret)[0]

注意事项

  • counter 是每次累加,需要用户态自己算偏移量
  • 注意事件类型 core, uncore, offcore
  • 注意潜在可能产生的 multiplexing 情况

其他

PERF_EVENT 系列文章

  1. PERF EVENT API篇
  2. PERF EVENT 硬件篇
  3. PERF EVENT 内核篇
  4. PERF EVENT 硬件篇续
目录
相关文章
|
10天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
17天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
29天前
|
安全 算法 API
产品经理必备知识——API接口
前言 在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。
|
29天前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
1月前
|
安全 API 数据安全/隐私保护
API接口知识小结
应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。
|
4天前
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
173 2
|
9天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
18天前
|
XML API 网络架构
API 常用的接口类型都有哪些?
在软件开发的宏大舞台上,接口充当着不可或缺的角色,确保了不同的软件模块能够高效、无缝地沟通和协作。
|
18天前
|
监控 API 开发者
邮件发送API接口配置步骤?
`邮件发送API让开发者轻松集成邮件功能。选择服务提供商如SendGrid、Mailgun或AWS SES,注册获取API密钥。配置发件人、收件人、主题和内容,调用API发送邮件。处理响应以确认发送成功,并监控性能进行优化。API简化了邮件发送,提升开发效率。`
|
25天前
|
供应链 搜索推荐 BI
深入了解淘宝原数据:获取API接口及其使用场景
在当今数字化的时代,对于电商行业来说,数据具有极大的价值。淘宝作为中国最大的综合电商平台,拥有庞大的商品信息和用户数据。对于开发者和企业来说,淘宝原数据的获取和分析是实现个性化服务和精准营销的基础。本文将介绍如何通过API接口获取淘宝原数据,以及数据的使用场景。