亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

Linux perf 实战指南:分布式应用性能剖析

优化成熟应用如大海捞针。识别真实性能瓶颈的最佳途径是让数据说话,而非凭直觉。实践中,最耗时的代码往往最不显眼。

怀疑某代码慢时,我先查证据再动手改。

剖析将直觉转为可测事实。市面上有数十种剖析器,但为多线程或分布式系统选对工具颇具挑战。传统指令计数剖析器如 Callgrind 会扭曲时序,尤其在重互斥锁争用下,因其度量指令而非墙钟时间。

统计剖析器则以低开销采样运行程序,适配复杂并发工作负载。Linux perf 是此路数的集大成者。

下文演示分步工作流,展示如何结合 Brendan Gregg 的 FlameGraph 使用 perf 定位分布式应用热点。示例针对 RTI Connext 5.3.0 的 c/hello_dynamic 样例。

1. 安装 perf
Ubuntu 执行:

sudo apt-get install linux-tools-common linux-tools-3.13.0-107-generic

2. 克隆 FlameGraph
克隆到便利位置(如主目录):

git clone https://github.com/brendangregg/FlameGraph

3. 构建示例
进入 rti_workspace/examples/c 并带调试符号编译:

export DEBUG=1 make -f makefile_Hello_x64Linux3gcc4.8.2

按平台替换 makefile 名称。

4. 运行发布者并剖析
后台启动订阅者,再启动 perf:

objs/x64Linux3gcc4.8.2/Hello sub & sudo perf record -g objs/x64Linux3gcc4.8.2/Hello pub

短时测试后按 Ctrl+C 停止发布者。perf 生成 perf.out。

5. 转换数据供 FlameGraph
将 perf 输出转为折叠栈文件:

perf script -f | ~/FlameGraph/stackcollapse-perf.pl > out.perf-folded

再生成可视火焰图:

~/FlameGraph/flamegraph.pl out.perf-folded > perf.svg

6. 检视结果
浏览器打开 perf.svg。横轴显示各函数耗时,堆叠条揭示调用栈。点击条形可深入该栈。无订阅者运行发布者会移除图右侧部分,确认 DDS 仅在订阅者存在时发数据。

Perf 更多选项——调整采样频率、排除内核代码、聚焦特定 CPU。若有技巧或发现简化剖析的互补工具,欢迎评论分享。

剖析愉快!

物联网技术

  1. 医疗领域的AI:5大经验证实的现实应用与实战案例
  2. CNC木工雕刻机:高端家具制造的多功能精密利器
  3. Microchip推出基于Arm的航天级MCU 从COTS到辐射强化全覆盖
  4. 电感式接近传感器:电路设计、功能与实际应用
  5. 模拟与数字传感器:类型、应用与实战案例对比
  6. 基于Ethereum与Google Cloud构建混合区块链-云应用架构实战
  7. React Native + AWS Serverless架构:构建可扩展移动应用实战指南
  8. 当ZigBee网状网不足时:4大更适合星型拓扑的应用
  9. 结合TinyML与自动化机器学习构建智能物联网解决方案
  10. 低代码平台消除IT瓶颈:简化数字化转型
  11. Ovo Energy收购VCharge智能电网强化分布式能源战略
  12. 钼能与其他元素结合吗?专家关于合金化与高温应用的见解