基于硬件跟踪的Linux系统性能优化

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:flash_chen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着Linux系统的复杂度越来越高,如何调试并优化系统性能,以提高系统硬件的使用效率,减轻系统负载也越来越重要。其关系到整个产品的成本和使用体验,甚至影响产品上市期限。
  虽然在Linux中,有很多开源软件可以用来测量整个系统的性能,但是这些软件同时可能也会引进其他问题,最终导致调试优化过程变得更加复杂。本文将介绍德国的ADIT公司面临的类似问题,并最终如何使用劳特巴赫的TRACE32这一非侵入式硬件跟踪工具来解决这些问题。
  关键词:硬件跟踪;调试;Linux
   1 Linux软件调试的挑战
  德国ADIT(Advanced Driver Information Technology GmbH)的最初方案是在Arm和Intel平台上均部署Linux,使用SystemTap来测量整体系统性能以定位并消除性能瓶颈。SystemTap使用了Linux的一些很好的功能:uprobe和kprobe。这些功能允许用户创建一个动态的跟踪过程,可以分别跟踪用户级别和内核级别的函数。
  借助工具来减轻系统负载这个理念本身并没有问题,而且ADIT一开始也期望诸如SystemTap等软件工具仅对整体系统的实时性能产生较小的影响。然而出乎意料的是,使用了这些软件后,Arm平台相较于Intel平台而言,其系统速度的下降幅度明显大于后者。为了确认问题所在,ADIT创建了一个空函数,并且通过uprobe来进行测量。结果表明,在Arm平台上,调用一次uprobe耗费的时间是Intel平台的两倍。因为uprobe内部使用了kprobe,所以最初的怀疑是kprobe导致了前述问题。然而这种怀疑是错误的,因为实际上kprobe在Arm处理器上比在Intel处理器上运行得更快,所以很显然问题出在uprobe代码中。既然问题出在软件跟踪工具的代码中,那么软件跟踪工具就不适合用来解决定位问题。
   “因为内核uprobe代码并不简单,一时间我不知道该如何继续。于是我决定使用TRACE32来对之前的问题一探究竟。有些时候,图像是很有帮助的。基于图表,我可以選择部分区域的代码来做更深层次的分析。”ADIT的开发者Frederic Berat说道。
   2 TRACE32 PowerTrace硬件跟踪效果
  因此,ADIT决定使用TRACE32PowerTrace的硬件跟踪功能,该跟踪功能不会对目标系统的时序有任何影响,同时也允许使用者对最小代码部分进行深入分析。
   Arm和Intel设备都能提供非侵入式的程序流信息,Arm的这种技术是ETM(嵌入式跟踪宏单元)Intel相应的技术则是IPT(Intel处理器跟踪)。代码的执行信息会通过一系列专用的引脚传输出来。TRACE32工具连上这些引脚后,无需修改客户任何程序代码,就能够实时收集数据并分析,以此产生应用程序的函数流和每个函数的详细时序。
   ADIT的工程师在他们当前的系统状态下,直接连接TRACE32硬件后(如图1),仅需在TRACE32软件的TPIU配置窗口对PortSize和PortMode进行适当选择(如图2),即可获取实时的跟踪数据。整个系统的函数流都会被TRACE32软件重建并以统计的方式进行展现,例如时序图或函数层级图。最终汇总成的这张图表,还原出了一个完整的Linux系统的运行过程,不仅包含内核代码也包含用户代码。根据这张图表,ADIT的工程师们方便地定位到系统时间消耗的关键函数。同时他们也注意到开源性能测试软件kprobe和uprobe给整个系统带来的性能瓶颈。
  通过使用TRACE32的高级分析特性,ADIT的工程师们快速地定位出两个明显的问题点(见图3和图4)。最明显的一个瓶颈,就是在Arm平台,uprobe调用了preempt_disable()和preempt_enable()共四次,每一次都需要耗时0.6μs检查栈帧。这样一共导致了2.4μs的迟延。但这个现象在Intel平台上并不会出现。虽然单次调用uprobe引起的2.4μs迟延似乎并不是很长,但因为每秒都调用了很多次,这部分延迟会迅速累积成严重的滞后。再进一步,第二个瓶颈是uprobe调用过程中的字符串操作。并且,受制于Arm和Intel之间的架构差异,这个瓶颈时间并不固定。
  如果没有实时跟踪功能,这些瓶颈就几乎很难被发现。而有了实时跟踪功能后,把这些信息跟踪并记录下就很简单。明确了从何处着手调查,通过对跟踪结果的分析,ADIT的工程师确认主要问题在于内核配置。在跨平台迁移过程中,CONFIG_PREEMPT_TRACE这个配置项被无意地使用了。跟踪结果显示,这个配置被打开后,在Arm平台会导致栈展开,但在Intel平台并没有影响,而正是这导致了两个平台之间明显的性能差异。
   3结论
  通过本文案例可以看出,在Linux系统性能分析和优化过程中,基于硬件的非侵入式实时跟踪技术,不仅可以实现开源跟踪软件的所有功能,而且也可以对Boot相关的代码进行跟踪分析,同时还避免引进一些其他问题,并且统计结果更准确、数据分析形式更灵活。
其他文献
示范作文,即“下水作文”。当前语文写作教学中,很多老师总是担心写不好而造成不良效果,因而疏于笔耕。其实,示范作文有如下作用:一是可以有效激发学生的写作兴趣,二是可以提
达诺沙星和太乐菌素控制鸡脓毒枝原体感染的比较TannerACetal前言呼吸道疾病可以引起家禽业严重的经济损失。特别是鸡败血枝原体(MG)感染,因其能使鸡易患大肠杆菌继发感染,导致屠宰时胴体禁食率
摘要:负载开关在电源管理和负载保护中发挥重要作用。在为特定应用选择负载开关时有一些因素要考虑,此外,现在还可以使用一些性能和功能得以改进的新器件。  关键词:负载开光;电源管理;导通电阻  0 引言  电源是推动我们现代世界技术的命脉,我们越来越依赖高科技产品在忙碌的工作中和工作外的生活中帮助我们。管理和控制电源是高科技、低功耗应用的一个重要主题。无论是为更大的设备开发复杂的多轨电源系统,还是利用
通过对爆管法对环境影响的理论分析,并结合有关的试验进行模拟分析,探讨了爆管法施工产生的碎片对新铺管道的影响,对周围结构设施的影响,重点论述了爆管法施工引起的地表位移。
本文通过对吸收塔中填料层的高度计算方法的比较,得出了目前利用计算机直接计算填料层高度的通用方法.
采用四种方法:即①单克隆抗体检抗原的酶联免疫吸附试验(Ag-ELISA)②检测抗体的在酶联免疫吸附试验(Ab-ELISA)③表膜检查(BCE)④小白鼠接种(MI),检查了肯尼亚183头骆驼锥虫的循环抗原,BCE查出尼亚183头骆驼锥早的循环抗
体育与健康课程的功能是多方面的,并总是与德育、智育、美育相结合,促进个体社会化。本文重点介绍了一个体育课堂上进行德育渗透的成功案例,即利用体育课堂组织形式多样性的
期刊
分子遗传学在现代兽医实践中的作用OstranderEAetal随着应用遗传学的迅速发展,兽医师在帮助畜主清除伴侣动物遗传病方面,正发挥越来越重要的作用.临床兽医师可以为畜主提供动物的遗传学测定,从而
<正> 在目前的报道中引用了有关在生产单位条件下骆驼伪狂犬病病程的资料和对这种传染病的病毒学和血液学研究结果的资料。1992年末,在土库曼斯坦省的两个生产单位的单峰驼患
烟酸诺氟沙星治疗公牛生殖道绿脓杆菌感染王建元摘译1引言生殖系统细菌性疾病是构成繁殖性能降低的因子之一。公牛精液中存在的微生物,在自然交配或人工授精中可以传播给母牛,造