论文部分内容阅读
随着嵌入式多核技术的不断发展,多核多线程已经成为了嵌入式软硬件设计的发展趋势。因为影响多线程性能的原因非常复杂,为了帮助程序员高效分析多线程程序中存在的性能瓶颈,针对多线程性能分析的专用工具应运而生。虽然ARM-DS5工具链中的Streamline性能分析器有一定的多线程分析功能,比如提供线程起止时间、线程状态和占用CPU时间等信息。但Streamline无法对线程阻塞原因进行统计和分析,更无法提供性能瓶颈的分析和定位。本文以Streamline性能分析器为基础,设计了一款能够有效分析线程阻塞时间、阻塞原因以及正常运行时间等性能指标的性能分析工具,CT Analyzer。本文的工作主要包含两个部分。第一,在分析Streamline采样数据特点的基础上,本文对比了近年来的多线程瓶颈定位模型,最终选择Critical Stacks模型作为瓶颈定位方法的基础,结合采样数据的结构和特点以及POSIX多线程的同步操作原理,设计了适合CT Analyzer的瓶颈定位方法。第二,通过对POSIX多线程同步操作实现机制的分析,利用Streamline的采样数据,完成了一个能够分析多线程应用在运行时线程的状态变化、线程阻塞的时间以及线程阻塞原因,并利用Critical Stacks模型分析和定位瓶颈线程的性能分析工具。为了评估CTAnalyzer性能分析工具功能的完成情况和瓶颈定位方法的准确性,本文选用了 Parsec-2.1和Splash2两大多线程测试集,在四核ARMA9平台(Tiny4412)上进行了实验。实验结果显示,本文设计的CTAnalyzer性能分析工具能够有效分析出多线程应用运行中的线程阻塞时间、线程阻塞原因、正常运行时间等性能问题,利用Critical Stacks实现的瓶颈线程定位方法能够准确定位到瓶颈线程,并且平均并行度的计算误差不超过1%。实验结果表明,本文设计的CTAnalyzer性能分析工具达到了设计指标,符合设计要求。