Valgrind 之 Cachegrind 调研报告

Cachegrind介绍

1 Cachegrind基于Valgrind的剖析器(profiler)

  计算机系统变得越来越复杂,需要剖析工具

  存储系统往往是系统瓶颈,需要剖析Cache

2 功能

  •  模拟L1、L2 Cache
  • 剖析Cache行为,执行次数、失效率等
  • 按照文件、函数、代码行、汇编指令剖析

3  作用

  •  详细Cache剖析,发现程序瓶颈
  • 指令改进程序,提高执行效率
  • Trace驱动的Cache模拟器

4  优点

  •   容易使用,不需要重新编译
  • 剖析所有执行的代码,包括库
  •  不限定语言
  • 速度相对较快
  • 灵活,模拟不同配置的Cache

Cachegrind使用

  •  valgrind --tool=cachegrind prog
  •  -I1/D1/LL=<size>,<associativity>,<line size>
  •  Output 文件、函数、代码、汇编

 

检测程序瓶颈

Cachegrind运行结果

Kcachegrind剖析

改进后

Kcachegrind结果

工作原理

  •  数据结构

Ø  Global Cache State

  执行每条指令时更新

  标记每个内存块在哪个cache中

Ø  Cost Centre Table

Ø  哈希表

Ø  记录每行源代码cache访问状况数据

Ø  Instr-info Table

Ø  每条指令信息

Ø  指令地址、数据地址、大小

Ø  指向对应的CostCentre Table

  • 插桩过程

性能

p  SPEC 2000     20 – 95 倍

p  快速原因

Ø  每天指令的信息存在instrinfo中、减少参数传递

Ø  cost centre addresses包含特性

Ø  只有C函数调用  与 trace buffer对比

Ø  使用tracebuffer,可以减少C函数调用,却性能下降

Ø  最后处理整体结果,而不是执行过程中计算

Ø  尽快减少输出文件大小,减少I/O

缺点

p  地址的trace

Ø  系统调用、内核态代码和一些客户端代码

Ø  并发行问题,只考察某个进程

Ø  将x86指令转换Ucode过程中,丢失少量信息

p  地址不准确

Ø  虚拟地址,未考虑虚实地址转换

Ø  TLB失效

Ø  Valgrind线程调度有别于标准库

Ø  客户程序的内存布局影响

p  Cache模拟本身的不正确

Ø  替换算法与真实硬件差别

Ø  未考虑预取

应用

p  Haskell 应用与 Glasgow Haskell编译器

p  指导插入prefetchinginstructions

p  提升22%

p  Rank和Select查询算法比较[3]

p  Rank(B, i)

p  Select(B, j)

p  Kcachegrind

p  Data structure

 

参考文献

[1]Nethercote N. Dynamic binary analysisand instrumentation[D]. University of Cambridge, 2004.

[2] Bauer M. Detecting bugs andbottlenecks in C/C++ sources[J]. 2012.

[3] González R, Grabowski S, Mäkinen V, etal. Practical implementation of rank and select queries[A]. Poster ProceedingsVolume of 4th Workshop on Efficient and Experimental Algorithms (WEA’05)[C]. pp. 27-38, 2005.

[4] Mehl M, Weinzierl T, Zenger C. A cache‐obliviousself‐adaptive full multigrid method[J]. Numerical Linear Algebra withApplications, 2006, 13(2‐3): 275-291.

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值