登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
Gitee Talk | 模力方舟 AI 应用开发沙龙第六站 · 8月23日 广州集结中!
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
12
Star
15
Fork
34
openEuler
/
libkperf
代码
Issues
1
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
294
修复对多线程应用生成perf.data无法读取的问题;修复go错误码问题
已合并
Galaxy:perf_data
openEuler:master
Galaxy
创建于 2025-07-24 16:20
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
修复对多线程应用生成perf.data无法读取的问题。 修复go错误码问题。 --- ##### 问题: pr期望解决的问题 LD_LIBRARY_PATH=./output/lib/ ./pmu_perfdata -e cycles,branch-misses -- /tmp/test 对多线程应用采集多个事件,运行的应用会持续创建线程,在此场景下输出perf.data,用perf script读取会报错bad address。 ##### 原因: 问题产生的原因 原因是perf.data会包含PERF_RECORD_FORK。 由于采集时,attr.sample_id_all=1,对于非PERF_RECORD_SAMPLE,会记录额外id信息: ``` struct sample_id { { u32 pid, tid; } /* if PERF_SAMPLE_TID set */ { u64 time; } /* if PERF_SAMPLE_TIME set */ { u64 id; } /* if PERF_SAMPLE_ID set */ { u64 stream_id;} /* if PERF_SAMPLE_STREAM_ID set */ { u32 cpu, res; } /* if PERF_SAMPLE_CPU set */ { u64 id; } /* if PERF_SAMPLE_IDENTIFIER set */ }; ``` 但是PERF_RECORD_FORK写入perf.data的时候并没有带上这些信息,perf script在读取的时候需要通过id来确认PERF_RECORD_FORK属于哪个event(perf_evlist__event2id), 因此读到了错误的id,无法找到对应的event。 ##### 方法: 问题解决的方法 在生成perf.data的时候去掉sample_id_all,这样,perf script在读取的时候,对非PERF_RECORD_SAMPLE,不会进入perf_evlist__event2id,绕过该逻辑。 造成的影响是,perf.data内的PERF_RECORD_FORK不会包含时间戳和id信息(因为sample_type只有PERF_SAMPLE_TIME和PERF_SAMPLE_ID),对于编译反馈优化来说暂无影响。
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
yangyongguang
openeuler-ci-bot
陈臻
bingo
PshySimon
chendh6
znzjugod
已完成
(0/0人)
测试
openeuler-ci-bot
已完成
(0/0人)
怎样手动合并此 Pull Request
git checkout master
git pull https://gitee.com/GalaxyG/libkperf.git perf_data
git push origin master
评论
7
提交
1
文件
3
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
bingo
hubin95
yangyongguang
yangyongguang
陈臻
Vchanger
Galaxy
GalaxyG
jinyao320
jinyao320
zhangyuhan
eggilu
wangning126
wangning126
znzjugod
znzjugod
chendh6
chendh6
PshySimon
pshysimon
openeuler-ci-bot
openeuler-ci-bot
未设置
最少人数
0
测试
bingo
hubin95
yangyongguang
yangyongguang
陈臻
Vchanger
Galaxy
GalaxyG
jinyao320
jinyao320
zhangyuhan
eggilu
wangning126
wangning126
znzjugod
znzjugod
chendh6
chendh6
PshySimon
pshysimon
openeuler-ci-bot
openeuler-ci-bot
未设置
最少人数
0
优先级
不指定
严重
主要
次要
不重要
标签
openeuler-cla/yes
lgtm
approved
ci_successful
sig/A-Tune
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
参与者
(3)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
1
https://gitee.com/openeuler/libkperf.git
git@gitee.com:openeuler/libkperf.git
openeuler
libkperf
libkperf
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册