使用IntelThreadProfiler调整线程化代码_第1页
使用IntelThreadProfiler调整线程化代码_第2页
使用IntelThreadProfiler调整线程化代码_第3页
使用IntelThreadProfiler调整线程化代码_第4页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、东南大学成贤学院计算机系东南大学成贤学院计算机系Southeast University东东 南南 大大 学学2n定义关键路径分析定义关键路径分析nThread Profiler视图视图n常见的性能问题常见的性能问题n常规优化常规优化Southeast University东东 南南 大大 学学3n定义定义: nIntel Thread Profiler使用下列线程化方法帮助你使用下列线程化方法帮助你分析多线程应用程序的性能分析多线程应用程序的性能 : Southeast University东东 南南 大大 学学4n你能用你能用Intel Thread Profiler完成下列功能完成下列功

2、能:Southeast University东东 南南 大大 学学5nIntel Thread Profiler帮助你识别下列性能问帮助你识别下列性能问题题: Southeast University东东 南南 大大 学学6n为了识别和解决性能问题,为了识别和解决性能问题,Intel Thread Profiler: Southeast University东东 南南 大大 学学7n支持的编译器支持的编译器Southeast University东东 南南 大大 学学8n在执行文件中加入二进制检测指令来采集下列数据:在执行文件中加入二进制检测指令来采集下列数据:n在下列情况下你必须使用二进制检

3、测指令在下列情况下你必须使用二进制检测指令:Southeast University东东 南南 大大 学学9n检测指令的级别检测指令的级别检测指令级别检测指令级别描述描述All Functions这个级别的检测指令动态地连接这个级别的检测指令动态地连接API,静态地,静态地连接连接C运行时运行时API。为了得到静态链接。为了得到静态链接C运行时运行时API的符号信号,要创建调试信号。的符号信号,要创建调试信号。API Imports (default)这个级别的检测指令动态地连接这个级别的检测指令动态地连接API。这是一。这是一个推荐的设置。它比个推荐的设置。它比All Functions设置

4、要花费设置要花费更少的时间。更少的时间。Module Imports这个级别不在这个级别不在API中插入检测指令。如果另外中插入检测指令。如果另外两个级别失败,你能用这个级别。如果你不希两个级别失败,你能用这个级别。如果你不希望分析这个模块或者如果检测指令在其他级别望分析这个模块或者如果检测指令在其他级别失败,就可以用这个级别。失败,就可以用这个级别。Southeast University东东 南南 大大 学学10nIntel Thread Profiler特性特性nThread Profiler视图视图n常见的性能问题常见的性能问题n常规优化常规优化Southeast University

5、东东 南南 大大 学学11n多线程应用包含多个多线程应用包含多个nIntel Thread Profiler为为Windows线程定义一个线程定义一个执行流为执行流为 n一个执行流一个执行流: Southeast University东东 南南 大大 学学12n关键路径关键路径多线程应用程序中三个线程的执行流多线程应用程序中三个线程的执行流Thread 2Thread 3T0T1T2T3T4T5T6T7T8T9T10T11T12T13T14T15Acquire LThreads 2 & 3 DoneAcquire LWait for Threads 2 & 3Release L

6、Acquire lock LWait for LRelease LWait for LThread 2 terminatesThread 3 terminatesThread 1 terminatesThread 1Southeast University东东 南南 大大 学学13n关键路径分析关键路径分析Southeast University东东 南南 大大 学学14n关键路径分析关键路径分析Southeast University东东 南南 大大 学学15n系统使用系统使用Southeast University东东 南南 大大 学学16nIntel Thread Profiler fo

7、r Windows 线程定义的线程定义的5种并发级种并发级别的类型别的类型:Idle: 不活跃的线程不活跃的线程Serial: 单独活跃的一个线程单独活跃的一个线程Under Utilized: 多个线程,但少于核数多个线程,但少于核数Fully Utilized : # 线程数线程数 = # 核数核数Over Utilized : # 线程数线程数 # 核数核数Thread 1Thread 2Thread 3T0T1T2T3T4T5T6T7T8T9T10T11T12T13T14T15Acquire lock LWait for Threads 2 & 3Wait for LRelea

8、se LWait for LRelease LAcquire LAcquire LThreads 2 & 3DoneIdleSerialFully UtilizedUnder UtilizedOver UtilizedConcurrency Level015510TimeSoutheast University东东 南南 大大 学学17nIntel Thread Profiler沿着关键路径分类线程的配合到下面沿着关键路径分类线程的配合到下面的类别的类别: Cruise Time: 没有在关键路径上受干扰的线程执行时间没有在关键路径上受干扰的线程执行时间Overhead Time :

9、从一个线程转到下一个线程的在关键路径上的延迟从一个线程转到下一个线程的在关键路径上的延迟 Blocking Time:在关键路径上的当前线程花费在等外部事件上的时间在关键路径上的当前线程花费在等外部事件上的时间Impact Time: 关键路径上的当前线程通过维持一些同步的资源让下一个线程在关键路径上的当前线程通过维持一些同步的资源让下一个线程在 关键路径上的延迟时间关键路径上的延迟时间Cruise timeOverheadBlocking timeImpact timeThread Interaction015510TimeThread 1Thread 2Thread 3T0T1T2T3T4

10、T5T6T7T8T9T10T11T12T13T14T15Acquire lock LWait for Threads 2 & 3Wait for LRelease LWait for LRelease LAcquire LAcquire LThreads 2 & 3 DoneSoutheast University东东 南南 大大 学学18n合并并发和行为合并并发和行为以系统应用开始以系统应用开始进一步的行为分类进一步的行为分类Concurrency Level Critical Path Thread Interaction015510TimeSoutheast Univer

11、sity东东 南南 大大 学学19nIntel Thread Profiler颜色图例颜色图例BehaviorProcessor UtilizationBadGoodOver UtilizedIdle0Serialn = 1Under(n p)ImpactBlockingCritical PathOverheadSoutheast University东东 南南 大大 学学20nIntel Thread Profiler特性特性n定义关键路径分析定义关键路径分析n常见的性能问题常见的性能问题n常规优化常规优化Southeast University东东 南南 大大 学学21n关键路径视图关键路

12、径视图nProfile视图视图n时间轴视图时间轴视图n源码视图源码视图n概要视图概要视图Southeast University东东 南南 大大 学学22n活动活动1ASoutheast University东东 南南 大大 学学23nProfile视图视图Profile PaneTimeline PaneSoutheast University东东 南南 大大 学学24nProfile视图视图 并发级视图并发级视图并发级视图65%的时间运行单个线程让我们看看线程视窗33%的时间两个线程在运行Southeast University东东 南南 大大 学学25nProfile视图视图 Threa

13、ds视图视图在关键路径上的时间线程的活动时间线程的生命周期Southeast University东东 南南 大大 学学26nProfile视图视图 对象视图对象视图这个对象引起的影响让我们看看时间轴视图Southeast University东东 南南 大大 学学27n时间轴视图时间轴视图Southeast University东东 南南 大大 学学28n源码视图源码视图Southeast University东东 南南 大大 学学29n活动活动1bSoutheast University东东 南南 大大 学学30nIntel Thread Profiler特性特性n定义关键路径分析定义关键

14、路径分析nThread Profiler视图视图n常规优化常规优化Southeast University东东 南南 大大 学学31n负载不均衡负载不均衡n同步同步n并行开销并行开销n粒度粒度Southeast University东东 南南 大大 学学32n负载不均衡负载不均衡 忙忙 闲闲时间时间Thread 0Thread 1Thread 2Thread 3Start threadsJoin threadsSoutheast University东东 南南 大大 学学33n将工作再分布到线程将工作再分布到线程Southeast University东东 南南 大大 学学34n将工作再分布到

15、线程将工作再分布到线程Southeast University东东 南南 大大 学学35n不均衡的工作负载不均衡的工作负载Southeast University东东 南南 大大 学学36n活动活动2-寻找负载不均衡问题寻找负载不均衡问题Southeast University东东 南南 大大 学学37n同步同步 忙忙 空闲空闲 在临界区在临界区时间时间Southeast University东东 南南 大大 学学38n同步的调整同步的调整 用本地变量存放部分结果,本地计算介绍后再修改用本地变量存放部分结果,本地计算介绍后再修改全局变量全局变量 在线程栈中分配空间在线程栈中分配空间(alloc

16、a) 使用线程本体存储使用线程本体存储(TlsAlloc) 一些全局数据的修改可以用原子操作一些全局数据的修改可以用原子操作(Interlocked API family)Southeast University东东 南南 大大 学学39n同步调整同步调整Southeast University东东 南南 大大 学学40n同步的调整同步的调整Southeast University东东 南南 大大 学学41n同步的调整同步的调整 本地对象本地对象 在同一进程中的可用线程在同一进程中的可用线程 较低的开销较低的开销(比比mutex(互斥)快(互斥)快8倍倍) 内核对象内核对象 不同进程中的可访问线程不同进程中的可访问线程 死锁安全的死锁安全的(只能被拥有者释放只能被拥有者释放)Southeast University东东 南南 大大 学学42n对象竞争对象竞争Southeast University东东 南南 大大 学学43n活动活动3Southeast University东东 南南 大大 学学44n活动活动3Southeast University东东 南南 大大 学学45n并

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论