CN110147279A - 一种多核负载分析方法及系统 - Google Patents

一种多核负载分析方法及系统 Download PDF

Info

Publication number
CN110147279A
CN110147279A CN201910386758.6A CN201910386758A CN110147279A CN 110147279 A CN110147279 A CN 110147279A CN 201910386758 A CN201910386758 A CN 201910386758A CN 110147279 A CN110147279 A CN 110147279A
Authority
CN
China
Prior art keywords
core
sample
developing instrument
communication interface
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910386758.6A
Other languages
English (en)
Inventor
齐晓斌
李运喜
张旻
麦先根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201910386758.6A priority Critical patent/CN110147279A/zh
Publication of CN110147279A publication Critical patent/CN110147279A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种多核负载分析方法,所述方法应用于如权利要求1所述的系统,方法包括:根据开发工具130设置的采样频率,统计样本数量;根据所述样本数量和所述采样频率,分别计算各个核的应用程序的执行时间;根据所述各个核的应用程序的执行时间,计算各个核的负载情况。

Description

一种多核负载分析方法及系统
技术领域
本发明属于嵌入式系统开发技术领域,涉及一种多核负载分析方法及系统。
背景技术
随着嵌入式软件的规模和复杂性不断提高,这使得嵌入式软件的性能问题成为研究的重点。性能数据的收集及其精确度依赖于嵌入式芯片对性能分析的支持,并且,在嵌入式目标机上收集的性能数据应该通过目标机的网口或串口上送到宿主机平台,在宿主机平台上进行分析和显示。多核化趋势正在改变IT计算技术的面貌。跟传统的单核CPU相比,多核CPU带来了更强的并行处理能力、更高的计算密度和更低的时钟频率,并大大减少散热和功耗,但是在不同架构下多核的每个核的负载问题一直备受关注。从软件的角度看,多核处理器的运行模式有三种:SMP,对称多处理、AMP。非对称多处理,BMP,混合多处理。其中,BMP和SMP有点类似,也是一个OS管理所有内核,但是不同的是,BMP中,开发者可以指定将某个任务仅在指定内核上执行。
当前主要有两种不同类型的软件性能分析方法:采样和插桩。采样型分析主要通过周期性中断,来记录相关的性能信息,如处理器指令指针、线程、处理器,和事件计数器等。这种方法开销小精确度高。插桩型分析可以使用直接的二进制插桩,也可以通过编译器在应用中插入分析代码。这种方式与自己在应用中增加计时函数类似,同时带来的开销大,但提供了更多的功能,如调用树,调用次数和函数开销等。
Gprof属于Gnu-gcc binutils工具之一,和objdump、nm等属于一个类型,需要编译工具链得到。它采用插桩方法来收集程序的统计信息,在编译过程中在函数入口处插入计数器用于收集每个函数的被调用情况和被调用次数,也使用采样方法,在运行时按照一定间隔去检查程序计数器并分析时找出程序计数器对应的函数来统计函数占用的时间(每个函数的处理器消耗时间)。可以显示Call graph包括函数的调用关系,每个函数调用花费了多少时间;可以显示“注释的源代码”—是程序源代码的一个复本,标记有程序中每行代码的执行次数。通过改造Gcc中gprof小工具,使得适用于嵌入式系统开发中,并通过主机端进行数据收集,实现数据的人性化实时显示。在嵌入式的目标机端,write三部分,其中最后把写的内容存储到结构体内,一块内存中,通过主机端命令进行内存上传为gmon.out,再进行进一步的转换。
根据CPU系统结构的不同,profile支持两种采样方式基于事件的采样和基于时间的采样。如果CPU内部存在性能计数寄存器,则Profile采用基于事件采样,记录特定事件如分支预测事件发生的次数,当达到设定的定值时就采样一次。反之,则基于时间采样,主要是借助于操作系统的时钟中断机制,每当时钟中断发生时就采样一次。不难看出,基于时间的采样方式,要求被测程序不能屏蔽中断,其精度也低于事件采样。
gprof的不足之处有:不针对嵌入式的性能分析;性能数据的收集以采样的方式不精确;缺乏有效的机制对性能数据进行分析处理;命令行式的操作,性能数据的表示和分析没有图形化的显示;没有和交叉编译工具、交叉调试工具集成。
发明内容
本发明提出一种一种多核负载分析方法及系统。
第一方面,本申请提供一种嵌入式多核系统,所述系统包括开发工具130、开发通信接口140、设备通信接口180和操作系统190,其中:
所述开发工具130通过开发通信接口140与设备通信接口180通信,操作系统190通过设备通信接口180与开发通信接口140通信。
可选的,所述系统还包括开发主机110、用户接口120、目标设备160,其中:
所述用户接口120是开发工具130提供给用户使用的接口;开发通信接口140与设备通信接口180通过通信链路150连接。
第二方面,本申请提供一种多核负载分析方法,所述方法应用于如权利要求1所述的系统,方法包括:
根据开发工具130设置的采样频率,统计样本数量;
根据所述样本数量和所述采样频率,分别计算各个核的应用程序的执行时间;
根据所述各个核的应用程序的执行时间,计算各个核的负载情况。
可选的,在所述统计样本数量之前,所述方法还包括:
在操作系统190驱动程序中挂接时钟中断处理程序;
在操作系统190中分配一块内存数组,利用所述内存数组映射用户程序的地址空间。
可选的,所述根据开发工具130设置的采样频率统计样本数量,具体包括:
根据开发工具130设置的采样频率,利用所述时钟中断处理程序统计样本数量。
可选的,所述根据开发工具130设置的采样频率,统计样本数量,具体包括:
检查程序计数器的值落在内存槽值的范围,将相应的内存槽值加1;
所述用户程序的地址空间内的代码被执行时,相应的采样样本数量加1。
可选的,在所述分别计算各个核的应用程序的执行时间之后,所述方法还包括:
将各个核的应用程序的执行时间和样本数量进行上传。
可选的,将各个核的应用程序的执行时间和样本数量进行上传的模式包括:实时上传和延迟上传。
综上所述,发明介绍了一种基于gprof的多核应用的负载分析技术,采用在应用代码程序中插桩的方法使得开发人员能够实时查看分析每个核的负载分析情况,并能够查看应用的函数栈调用关系以及各个函数的执行时间,从而分析应用的负载瓶颈问题。本发明主要特点是通过使用特定的编译选项,编译时进行分析代码的插桩,嵌入式应用在目标机运行后,通过目标机数据采集程序,实时捕获关键数据,把目标机端的数据收集并上传到主机端后进行图形化分析,清晰获得各个核的性能负载情况,可以有效的对应用程序进行多核负载分析。本发明针对多核下应用程序负载不均衡的问题,发明一种在开发工具下通过与与目标机的交互技术实时获取应用的执行时间信息,从而判断各个核的负载情况。
附图说明:
图1是本发明实施例提供的多核负载分析系统的示意图;
图2为本发明实施例提供的多核负载分析过程的流程图。
具体实施方式
实施例一
针对上述问题,本发明提出了在多核BMP运行模式下的一种基于gprof的负载分析技术。用户通过在主机端设置采样频率以及应用的核运行情况,通过在编译时插桩操作,通过代理技术实时获取应用在目标机的运行数据信息,通过以太网传回主机端,可以实时获取应用的函数栈调用关系,并实时获取函数的执行时间以及调用次数,从而分析各个核的负载情况,并以友好的图形显示给用户。该方法和系统能够有效完成上述功能,提升用户开发嵌入式系统的工作效率。
通常情况下,使用采样方式获取数据时,它的采样频率取决于精度和样本数量。统计精度取决于收集样本的数量。为了理解到底以什么样的频率去收集数据才是一个期望的精确度。本发明使用基于标准正态分布公式计算样本的数量,这样获取的样本数量就可以获取自信的期望精确级别。计算公式为:
N完成预定精度需要的样本数量。p表示一个事件发生的可能性。比如0.01表示需要重点监视一个CPU占用率为1%的程序。q=1-p,表示一个事件不发生的可能性。Z()为标准正态分布函数的逆函数。g为置信系数。如0.95表示对监视结果95%的信任。e是置信区间,监视结果的误差区间。如0.005表示监视结果的误差在+-0.25%之间。其中置信度为g的标准正态分布的区间估计,只做一些函数变换就可以得到N和Z的表达式,意思就是随便抽取一个样本,我们有g(95%)的信心相信事件发生(CPU占用率为1%的程序),且误差不超过+-e/2(比如+-0.25%),即,某个频率值是程序既定的采样频率,N是为了达到95%的置信度,且误差不超过+-e/2所需的样本数,其实就是为了达到所谓的精度(置信度,误差)所需的样本数,使得既定时间能得到N个样本,高精度和普通精度所需的样本数就是不同的g和e,用公式计算出来所需的N数。Z是标准正态分布的逆函数,p是事件发生的概率,比如随机监测一个程序(抽样),这个程序CPU占用率是1%的概率,q就是反事件发生的概率=1-p,比如程序CPU占用率不是1%的概率,知道p就能算出Z,笨方法就是可以查正态分布表,这是逆函数,不过一样可以查表,就是函数的反过来,比如,函数y=f(x),逆函数就是反过来,用y来表示x,x=g(y)。通过运行应用可得出经验:获得普通精度需要1500个样本,大约113HZ下运行13秒。获得高精度需要37000个样本,113HZ下运行5分钟,或者提高采样频率到500HZ,通常大多数的应用的最快频率就是每秒500次,此时需要采样一分钟。
本发明基于采样的方式进行时间测量,可能会出现统计不精确,只要符合预期就可以,落在设定的置信区间内,是可以作为参考值的,是相对准确的。假如函数运行时间非常短,平均采样周期可能会导致获得运行时间的机会很小。但是,该工具的调用次数和调用栈并不是采样获得,它是精确的实际运行的结果。按照公式,实际的错误量可以预测,对于n个采样样本,容忍错误率是n的开平方根,例如,采样周期0.01s,foo函数运行时间为1s,那么n是100样本,sqrt(100)=10,所以foo函数的预期错误是0.1s,或者百分之十。再比如周期是0.01,bar函数运行时间是100s,n就是10000样本,sqrt(10000)=100,所以bar的预期错误就是1s,或者百分之一。这并不意味着非常小的时间的消耗的函数就没有意义。假如程序的总运行时间较大,对于运行时间较少的函数就是说明该函数不需要优化。
获取更加精确结果的方法:
1,相似或者相同的输入数据使得程序运行时间更长。
2,采集多次,通过主机端的命令解析引擎,合并多次的采集结果,再分析。
3,结合查看每行的调用次数以及每个函数的调用次数以及函数的消耗时间进行推断。
图1表示本发明用于多核负载分析的示例系统100。该系统属于交叉系统,包括一个开发主机110,一个目标设备160。开发主机110包括用户(如软件开发人员)接口,用来完成各种任务。开发主机110还包括开发工具130(例如编译器、调试器)。应注意,名词“开发工具”包括但不限于编译器调试器,同样可以更广泛地适用于其他类型的可分析并控制其它工具操作的工具。开发主机110还包括开发通信接口140,用于和目标设备160通信。通信可能通过能交互数据的各种有线或无线协议进行。
目标设备160包括应用程序代码170和多核操作系统190以及中断处理程序185。通常,在目标设备上运行的应用程序代码170必须与目标设备160的类型一致。目标设备160还包括设备通信接口180,用来和开发主机110进行有线或无线的方式通信。具体取决于目标设备160的实现,160还可能包括未在图1中提及的其它元素(如显示器、用户接口、数据存储等等)。目标设备160还包括中断处理程序185,用于记录程序计数器的位置。
图2显示本发明该方法200引用图1中的系统100进行详细描述,在该示例中,可以认为应用代码170在目标设备160的操作系统190上执行。开发工具130在开发主机110上执行,开发工具130由用户通过用户接口120进行控制。开发工具130和应用代码170、操作系统190之间可以通过开发通信接口140和设备通信接口180实现通信。
在步骤210中,应用程序代码170挂接自己到开发工具130上,并插入分析代码,插入方式可以包含多种,比如编译器自动插入,也可以是手动插入分析代码,其中开发工具130需要能够控制应用程序代码170的操作以及交互。应注意,挂接类似应用程序代码到开发工具130这种软件工具上可能有多种方式,并且挂接的方式一般依赖于工具的配置。
在步骤220中,开发工具130向操作系统的驱动程序中挂接中断处理程序,调用时钟中断。该注入步骤启动应用170中的系统调用。即,开发工具130将系统调用注入应用170将使得注入操作对操作系统190可见,操作系统190能够看到,系统调用在被应用170调用,而不是被独立的开发工具调用。系统调用的注入和后续的执行可能有多种方式实现。例如,可在应用170中的执行进程中创建一个独立线程用于实现注入的系统调用,也可以用已有的线程完成系统调用。
在步骤230中,开发工具130等待应用170完成执行。在开发工具130等待过程中,开发工具130可以执行别的任务。一旦应用执行结束,开发工具130获得应用170的执行结果。获得的方式可以有多种,比如利用系统空闲时间上传。该步骤中基于周期采样,通过统计方法得出监视数据。通过采样时的PC指针获取当前执行的函数。该方法在内核中申请一块内存数组,根据映射粒度,用于控制样本的提取粒度,从而确定用户程序的地址空间的映射情况。典型而又恰当的映射粒度可以使得每2~8个字节的地址空间映射到单个内存槽值中,在系统的每个tick时钟到来时,检查程序计数器PC的值,查看落在哪个内存数组槽值中,相应的槽值加1,而每当这段地址内的代码被执行时,相应的sample计数加1。上传缓冲中的这些数据后,主机端的命令解析引擎结合二进制文件,根据命中样本数量获得函数的执行时间。映射粒度可以映射4字节的地址空间,基本可以覆盖所有函数。
本发明可有多种实现方式,包括独立的软件模块方式或者软硬件结合的方式等。例如,方法200可能是一个在编译后执行在处理器上的程序代码。
很明显,在不脱离本发明权利范围的情况下,可以对本发明进行各种修改。因此,需要注意,本发明覆盖该发明的各种修改、变更,它们全在附录的声明和等价声明的范围内。
实施例二
本发明解决的技术问题为:本发明提出一种嵌入式的基于gprof的多核负载分析技术,通过实时监控应用的时间执行情况,解决嵌入式系统在多核的负载分析情况,从而对BMP模式下的做好应用的均衡。
软件开发人员可能希望执行正在开发的代码,并监视它的性能以决定如何改进和优化该代码。源码的编写在宿主机的Eclipse集成开发环境中完成。源码经过交叉编译插件的编译插桩,生成带有调试信息和性能数据信息的二进制可执行程序,然后将可执行程序通过网口或串口下载到目标机上,在目标机上运行可执行程序后,通过数据采集实时采集应用的执行数据信息,再将性能数据上传到宿主机,性能分析插件解析性能数据文件中的数据,并以图形形式显示出来。改进后的gprof对性能数据进行柱状图、调用图和基本块执行分析,同时将分析结果写入结果文件。
本发明包括一种在操作系统以及其运行的板级中挂接时钟中断的方法:该方法通过在板级中挂接时钟中断,周期性地检查系统正在执行的函数,记录程序计数器的位置,并实时进行采样。采样频率可以在主机端进行配置,然后通过代理技术,捕获记录函数的执行时间以及执行频次。
本发明还包括一种把目标机端的记录数据以二进制文件形式实时存储在一段内存中的方法:在性能数据收集方面采用探测技术,将用于测量性能的有关代码加入源码中,通过探测点获得衡量程序性能的信息。这种方式和采样相比,由于不依赖中断机制,不需要周期性访问定时器。所以获得的性能数据更加广泛和精确,时间信息更加完整。
另外,本发明还包括执行上述方法的相应的系统。
本发明的示例可以通过随后的描述和附加的图进行进一步理解,其中同一个对象用相同的编号标识。本发明的示例描述了由开发工具创建的、用于监视其它应用操作的方法和系统。
本文中,名词“应用”用于描述将在目标设备上执行的程序代码,而不管该代码当前是否驻留在目标设备上。名词“开发工具”用于描述辅助开发人员进行创建、控制、优化等的软件程序(或软件程序的一部分)。开发工具可能在主机开发环境中启动并执行,也有可能在目标设备上启动并执行。例如调试器是一个开发工具,但本发明的实现不局限于调试器。

Claims (8)

1.一种嵌入式多核系统,其特征在于,所述系统包括开发工具130、开发通信接口140、设备通信接口180和操作系统190,其中:
所述开发工具130通过开发通信接口140与设备通信接口180通信,操作系统190通过设备通信接口180与开发通信接口140通信。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括开发主机110、用户接口120、目标设备160,其中:
所述用户接口120是开发工具130提供给用户使用的接口;开发通信接口140与设备通信接口180通过通信链路150连接。
3.一种多核负载分析方法,其特征在于,所述方法应用于如权利要求1所述的系统,方法包括:
根据开发工具130设置的采样频率,统计样本数量;
根据所述样本数量和所述采样频率,分别计算各个核的应用程序的执行时间;
根据所述各个核的应用程序的执行时间,计算各个核的负载情况。
4.根据权利要求3所述的方法,其特征在于,在所述统计样本数量之前,所述方法还包括:
在操作系统190驱动程序中挂接时钟中断处理程序;
在操作系统190中分配一块内存数组,利用所述内存数组映射用户程序的地址空间。
5.根据权利要求4所述的方法,其特征在于,所述根据开发工具130设置的采样频率统计样本数量,具体包括:
根据开发工具130设置的采样频率,利用所述时钟中断处理程序统计样本数量。
6.根据权利要求4所述的方法,其特征在于,所述根据开发工具130设置的采样频率,统计样本数量,具体包括:
检查程序计数器的值落在内存槽值的范围,将相应的内存槽值加1;
所述用户程序的地址空间内的代码被执行时,相应的采样样本数量加1。
7.根据权利要求3所述的方法,其特征在于,在所述分别计算各个核的应用程序的执行时间之后,所述方法还包括:
将各个核的应用程序的执行时间和样本数量进行上传。
8.根据权利要求7所述的方法,其特征在于,将各个核的应用程序的执行时间和样本数量进行上传的模式包括:
实时上传和延迟上传。
CN201910386758.6A 2019-05-09 2019-05-09 一种多核负载分析方法及系统 Pending CN110147279A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910386758.6A CN110147279A (zh) 2019-05-09 2019-05-09 一种多核负载分析方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910386758.6A CN110147279A (zh) 2019-05-09 2019-05-09 一种多核负载分析方法及系统

Publications (1)

Publication Number Publication Date
CN110147279A true CN110147279A (zh) 2019-08-20

Family

ID=67594194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910386758.6A Pending CN110147279A (zh) 2019-05-09 2019-05-09 一种多核负载分析方法及系统

Country Status (1)

Country Link
CN (1) CN110147279A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630285A (zh) * 2009-08-07 2010-01-20 华南理工大学 一种应用于嵌入式系统的软件性能测试方法
CN103729288A (zh) * 2013-11-01 2014-04-16 华中科技大学 一种嵌入式多核环境下应用程序的调试方法
CN108228247A (zh) * 2016-12-14 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种工具与目标机增强交互的系统和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630285A (zh) * 2009-08-07 2010-01-20 华南理工大学 一种应用于嵌入式系统的软件性能测试方法
CN103729288A (zh) * 2013-11-01 2014-04-16 华中科技大学 一种嵌入式多核环境下应用程序的调试方法
CN108228247A (zh) * 2016-12-14 2018-06-29 中国航空工业集团公司西安航空计算技术研究所 一种工具与目标机增强交互的系统和方法

Similar Documents

Publication Publication Date Title
US6374369B1 (en) Stochastic performance analysis method and apparatus therefor
Dongarra et al. Using PAPI for hardware performance monitoring on Linux systems
US8978017B2 (en) Profiling operating context
JP5356635B2 (ja) 非侵入式アプリケーション・コード・プロファイリングの方法および装置
CN102722434B (zh) 一种针对Linux进程调度的性能测试方法和工具
London et al. The papi cross-platform interface to hardware performance counters
Schulz et al. Owl: next generation system monitoring
CN102110052A (zh) 一种程序行为动态剖析的并行加速方法
Dreyer et al. Precise continuous non-intrusive measurement-based execution time estimation
Calafiura et al. GOoDA: The generic optimization data analyzer
CN110147279A (zh) 一种多核负载分析方法及系统
Bin Controlling execution time variability using COTS for Safety-critical systems
Johansson Real-time linux testbench on raspberry pi 3 using xenomai
Kristiansen et al. A methodology to model the execution of communication software for accurate network simulation
Curreri et al. Performance analysis framework for high-level language applications in reconfigurable computing
Daumen et al. Scalomp: Analyzing the scalability of openmp applications
Schmitt et al. Emulating the Power Consumption Behavior of Server Workloads using CPU Performance Counters
Ghods A study of Linux Perf and slab allocation sub-systems
Minartz et al. Tool environments to measure power consumption and computational performance
Dietrich et al. Phase-based profiling in GPGPU kernels
Scottow et al. Instrumentation of real-time embedded systems for performance analysis
Mohsen et al. A survey on performance tools for OpenMP
Curreri et al. Performance analysis with high-level languages for high-performance reconfigurable computing
Khamparia et al. Program analysis with dynamic instrumentation Pin and performance tools
Jamil et al. Measurement-based timing analysis on heterogeneous mpsocs: A practical approach

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20190820