您的位置 首页 嵌入式

根据硬件盯梢的Linux体系功能优化

随着Linux系统的复杂度越来越高,如何调试并优化系统性能,以提高系统硬件的使用效率,减轻系统负载也越来越重要。其关系到整个产品的成本和使用体验,甚至影响产品上市期限。虽然在Linux中,有很多开源软

  作者/刘栋(劳特巴赫(姑苏)技能有限公司,江苏 姑苏 215021)

  摘要:跟着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决议运用TRACE32
PowerTrace的硬件盯梢功用,该盯梢功用不会对方针体系的时序有任何影响,一起也答应运用者对最小代码部分进行深入剖析。

  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相关的代码进行盯梢剖析,一起还防止引入一些其他问题,而且计算成果更精确、数据剖析方式更灵敏。

本文来源于科技期刊《电子产品世界》2019年第3期第27页,欢迎您写论文时引证,并注明出处

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/129408.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部