CN112988544A - 操作系统性能瓶颈的分析方法、系统、设备和存储介质 - Google Patents
操作系统性能瓶颈的分析方法、系统、设备和存储介质 Download PDFInfo
- Publication number
- CN112988544A CN112988544A CN202110421785.XA CN202110421785A CN112988544A CN 112988544 A CN112988544 A CN 112988544A CN 202110421785 A CN202110421785 A CN 202110421785A CN 112988544 A CN112988544 A CN 112988544A
- Authority
- CN
- China
- Prior art keywords
- execution path
- kernel execution
- kernel
- sampling point
- middle position
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及一种操作系统性能瓶颈的分析方法、系统、设备和存储介质,分析方法包括:在操作系统的内核程序中添加钩子函数;通过钩子函数获取内核程序的内核执行路径;在内核执行路径中设置第一采样点,并获取第一采样点采集的内核执行路径的指令周期数;对第一采样点采集的内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。该分析方法,通过钩子函数获取内核程序的内核执行路径,根据第一采样点采集内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段,实现对操作系统性能瓶颈的精确度量,最终消除操作系统的性能瓶颈。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种操作系统性能瓶颈的分析方法、系统、设备和存储介质。
背景技术
Linux操作系统作为开源的操作系统,目前发展非常迅速,已经开发出了很多不同版本,如redhat、suse、ubuntu等,并广泛使用到政府、电商、企业等的生产服务器系统中,以及经过再开发后整合到各种计算机硬件设备中。
由于Linux操作系统内核属于宏内核且大量用在服务器、嵌入式等领域,而现有的服务器追求的是高密度计算,系统吞吐能力以及计算的多样性。为了使Linux操作系统具备实时特性,需要对操作系统的性能瓶颈进行精确度量,以达到对性能瓶颈进行定性和定位,最终消除性能瓶颈,做到硬实时。当前,Linux操作系统性能瓶颈度量方案主要有内核tracepoints、内核probes、Perf Event以及内核函数采样这四种,由于这四种方案并不构成一个统一的整体,甚至有时候,这些方案在一起运行时还会相互干扰,影响最终度量结果,因此不能仅依靠使用Linux上现存的性能瓶颈度量方案来对Linux操作系统性能瓶颈进行度量,必须根据操作系统的硬实时需求,设计一种简洁的、有针对性的Linux操作系统性能瓶颈度量方案。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种操作系统性能瓶颈的分析方法、系统、设备和存储介质,实现对操作系统性能瓶颈的精确度量,最终消除操作系统的性能瓶颈。
第一方面,本公开实施例提供了一种操作系统性能瓶颈的分析方法,包括:
在所述操作系统的内核程序中添加钩子函数;
通过所述钩子函数获取所述内核程序的内核执行路径;
在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数;
对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
可选的,在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数,包括:
在所述内核执行路径的起点位置、终点位置和中间位置处依次设置第一采样点;
获取所述第一采样点采集的所述内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数。
可选的,对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,根据所述内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段;
或,当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据所述第二采样点采集的所述内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
可选的,所述当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,根据所述内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数时,当前内核执行路径中的起点位置至中间位置之间存在性能瓶颈的代码段;
当获取所述内核执行路径的中间位置至终点位置的指令周期数大于预设指令周期数时,当前内核执行路径中的中间位置至终点位置之间存在性能瓶颈的代码段。
可选的,所述当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据第二采样点采集的所述内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置设置第二采样点,根据所述第二采样点采集的所述内核执行路径中的起点位置至中间位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段;
当获取所述内核执行路径的中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的中间位置至终点位置设置第二采样点,根据所述第二采样点采集的所述内核执行路径中的中间位置至终点位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
可选的,所述对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段之后包括:
对所述内核执行路径中存在性能瓶颈的代码段进行修正。
可选的,所述在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数之后还包括:
通过零拷贝环的方式输出所述第一采样点采集的所述内核执行路径的指令周期数。
第二方面,本发明实施例还提供一种操作系统性能瓶颈的分析系统,包括:
函数添加模块,用于在所述操作系统的内核程序中添加钩子函数;
执行路径获取模块,用于获取所述内核程序的内核执行路径;
指令周期数采集模块,用于获取第一采样点采集的所述内核执行路径的指令周期数;
分析确定模块,对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
第三方面,本发明实施例还提供一种计算机设备,包括:一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面任一所述的操作系统性能瓶颈的分析方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面任一所述的操作系统性能瓶颈的分析方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本发明实施例提供的一种操作系统性能瓶颈的分析方法、系统、设备和存储介质,通过在操作系统的内核程序中添加钩子函数,利用钩子函数获取内核程序的内核执行路径,根据获取的内核执行路径在内核执行路径中设置第一采样点,利用第一采样点采集内核执行路径的指令周期,根据第一采样点采集的内核执行路径的采样周期确定当前内核执行路径中存在性能瓶颈的代码段,实现对操作系统存在性能瓶颈代码段的准确定位,提高操作系统的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种操作系统性能瓶颈的分析方法的流程示意图;
图2是本发明实施例提供的另一种操作系统性能瓶颈的分析方法的流程示意图;
图3是本发明实施例提供的又一种操作系统性能瓶颈的分析方法的流程示意图;
图4是本发明实施例提供的又一种操作系统性能瓶颈的分析方法的流程示意图;
图5是本发明实施例提供的一种操作系统性能瓶颈的分析系统的结构示意图;
图6是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1是本公开实施例提供的一种操作系统性能瓶颈的分析方法的流程示意图。本实施例可适用于实现Linux操作系统性能瓶颈的定位和定性的情况。本实施例方法可由操作系统性能瓶颈的分析系统来执行,该系统可采用硬件/或软件的方式来实现,并可配置于计算机设备中。可实现本申请任意实施例所述的操作系统性能瓶颈的分析方法。
现有技术中,Linux操作系统性能瓶颈度量方案主要有内核 tracepoints、内核probes、Perf Event以及内核函数采样这四种。
内核tracepoints机制:在内核中加入tracepoint代码,内核运行时,将待记录的信息发送到debugfs文件系统中,用户态的程序对记录信息进行读取,采用该机制的缺点是加入新的tracepoint点的过程很繁琐,导致内核跟踪点位有限,不能实现精准度量的目的。
内核probes机制:在内核动态植入钩子,当内核运行到给定的地址时,调用相应的钩子,执行预设操作,采用该机制的缺点是植入地址是二进制地址,需要手工对应源代码地址。
Perf Event机制:Perf是一款Linux性能分析工具,是一个基于内核的子系统,它提供一个性能分析框架,比如硬件性能分析功能和软件性能分析功能。通过Perf,应用程序可以利用PMU、tracepoint和内核中的计数器来进行性能统计。它不但可以分析应用程序的性能问题,也可以用来分析内核的性能问题。因为该机制的实现过于依赖现存性能分析框架,造成采样不够灵活,采样操作不够简洁,所以该机制不能很好地适配操作系统实时性能瓶颈度量。
内核函数采样机制:该机制利用编译器的profile功能在内核函数的入口和出口生成回调函数。内核在运行时对函数进行采样,统计内核对函数调用的次数以及在函数上耗费的时间。该机制的缺点是不加区别地对所有函数进行采样,并且只能对函数的入口和出口进行采样。
当仅仅使用Linux上现存的性能瓶颈度量方案来对Linux操作系统性能瓶颈进行度量时,无法实现对Linux操作系统性能瓶颈的实时度量,为解决上述问题,本发明实施例提供了一种操作系统性能瓶颈的分析方法。
如图1所示,该方法具体包括如下:
S110、在操作系统的内核程序中添加钩子函数。
利用编译器gprofile功能在操作系统的内核程序中植入钩子函数,此钩子函数仅在分析内核关键路径中使用,通过钩子函数统计完成特定的操作系统功能时执行的内核关键路径。本操作系统植入的钩子函数相比经典的内核gprofile采样,本发明在操作系统的内核程序中添加的钩子函数仅在内核关键路径定位过程中使用,而经典内核函数的采样钩子全程参与操作系统性能分析的过程。本发明在所有的内核函数入口进行钩子挂载,而经典内核函数采用在所有的内核函数入口和出口都进行挂载。
S120、通过钩子函数获取内核程序的内核执行路径。
通过在操作系统的内核程序中植入的gprofile钩子函数,利用钩子函数记录操作系统的特定操作牵涉的内核函数调用。与操作系统特定操作相关的内核函数调用集合构成了还原内核执行路径的依据。例如,操作系统读文件操作会牵涉到generic_file_read_iter函数及其子函数。
S130、在内核执行路径中设置第一采样点,并获取第一采样点采集的内核执行路径的指令周期数。
在内核关键路径植入第一采样点,通过第一采样点采集内核执行路径的指令周期数。具体的在内核执行路径中设置第一采样点包括在内核执行路径中关键函数的入口、关键函数的出口、以及执行路径的中间位置进行植入,通过第一采样点采集的关键函数的入口、关键函数的出口、以及执行路径的中间位置确定内核执行路径的指令周期数。
本发明实施例提供的操作系统性能瓶颈的分析方法通过在内核程序的内核执行路径中植入第一采样点,通过采样函数进行采集,较之内核probes机制,定位更精准,且更加便于性能瓶颈的迭代分析。
在内核执行路径中设置第一采样点,并获取第一采样点采集的内核执行路径的指令周期数之后还包括:
通过零拷贝环的方式输出第一采样点采集的内核执行路径的指令周期数。
零拷贝环通过Linux的mmap机制实现,而通过零拷贝环的方式输出第一采样点采集的内核执行路径的指令周期数可以直接被用户态采样程序读取。本发明实现轻量级采样输出机制,较之Linux内核tracepoints机制利用debugfs进行输出,用户态采样程序实现更为轻便、灵活。
S140、对第一采样点采集的内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
通过对第一采样点采集的内核执行路径的指令周期数进行分析,分析内核执行路径中,哪些代码段耗费的指令周期数较多,根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
S150、对内核执行路径中存在性能瓶颈的代码段进行修正。
根据对内核执行路径的指令周期数进行分析后确定内核执行路径中存在性能瓶颈的代码段,通过对内核执行路径中存在性能瓶颈的代码段进行修正,以实现操作系统性能瓶颈的消除。
本发明实施例提供的一种操作系统性能瓶颈的分析方法,通过在操作系统的内核程序中添加钩子函数,利用钩子函数获取内核程序的内核执行路径,根据获取的内核执行路径在内核执行路径中设置第一采样点,利用第一采样点采集内核执行路径的指令周期,根据第一采样点采集的内核执行路径的采样周期确定当前内核执行路径中存在性能瓶颈的代码段,实现对操作系统存在性能瓶颈代码段的准确定位,提高操作系统的性能。
图2是本公开实施例提供的另一种操作系统性能瓶颈的分析方法的流程示意图。本实施例是在上述实施例的基础上进一步扩展与优化,并可与上述技术方案中任意可选方案组合。如图2所示,该方法包括:
S210、在操作系统的内核程序中添加钩子函数。
S220、通过钩子函数获取内核程序的内核执行路径。
S230、在内核执行路径的起点位置、终点位置和中间位置处依次设置第一采样点。
S240、获取第一采样点采集的内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数。
具体的,在内核执行路径的起点位置、终点位置已经中间位置依次设置第一采样点,在内核程序运行过程中,通过采样函数获取第一采样点采集的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数。其中,起点位置指的是内核执行路径中函数的起点位置,终点位置为内核执行路径中函数的终点位置,中间位置指的的内核执行路径的函数中代码段的中间位置。
在程序运行过程中,采样函数获取起点位置的第一采样点、中间位置的第一采样点以及终点位置的第一采样点采集的指令周期数。
S250、对第一采样点采集的内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
在确定第一采样点采集的内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数后,通过分析起点位置第一采样点采集的指令周期数与中间位置第一采样点采集的指令周期数确定起点位置至中间位置的指令周期数,通过分析中间位置第一采样点采集的指令周期数与终点位置第一采样点采集的指令周期数确定中间位置至终点位置的指令周期数。然后根据起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段。
具体的,起点位置的第一采样点采集的指令周期数为T1,中间位置第一采样点采集的指令周期数为T2,终点位置的第一采样点采集的指令周期数为T3,则通过比对T2-T1与T3-T2的时间关系确定当前内核执行路径中存在性能瓶颈的代码段。
S260、对内核执行路径中存在性能瓶颈的代码段进行修正。
可选的,对第一采样点采集的内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段,包括:
当获取内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,根据内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段;
或,当获取内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,在内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据第二采样点采集的内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
具体的,当获取内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,一方面可以根据内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段,另一方面,可以在内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据第二采样点采集的内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段,以下将通过具体的实施例举例说明。
可选的,在图2的基础上,图3是本公开实施例提供的又一种操作系统性能瓶颈的分析方法的流程示意图。本实施例是在上述实施例的基础上进一步扩展与优化,并可与上述技术方案中任意可选方案组合。如图3所示,该方法包括:
S310、在操作系统的内核程序中添加钩子函数。
S320、通过钩子函数获取内核程序的内核执行路径。
S330、在内核执行路径的起点位置、终点位置和中间位置处依次设置第一采样点。
S340、获取第一采样点采集的内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数。
S350、判断起点位置至中间位置的指令周期数是否大于中间位置至终点位置的指令周期数,若是,执行S360,若否,执行S370。
S360、当前内核执行路径中的起点位置至中间位置之间存在性能瓶颈的代码段。
S370、当前内核执行路径中的中间位置至终点位置之间存在性能瓶颈的代码段。
具体的,利用编译器gprofile功能在操作系统的内核程序中植入钩子函数,通过钩子函数统计完成特定的操作系统功能时执行的内核关键路径,在内核执行路径的起点位置、终点位置已经中间位置依次设置第一采样点,在内核程序运行过程中,通过采样函数获取第一采样点采集的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数,获取的起点位置的第一采样点采集的指令周期数为T1,中间位置第一采样点采集的指令周期数为T2,终点位置的第一采样点采集的指令周期数为T3,则通过比对T2-T1与T3-T2的时间关系确定当前内核执行路径中存在性能瓶颈的代码段。
当中间位置第一采样点采集的指令周期数为T2与起点位置的第一采样点采集的指令周期数为T1的差值大于终点位置的第一采样点采集的指令周期数为T3与中间位置第一采样点采集的指令周期数为T2时,(T2-T1)>(T3-T2),即此时至操作系统的内核执行路径中,起点位置至中间位置的指令周期数较长,说明在该代码段中存在性能瓶颈的代码段。当中间位置第一采样点采集的指令周期数为T2与起点位置的第一采样点采集的指令周期数为T1的差值小于终点位置的第一采样点采集的指令周期数为T3与中间位置第一采样点采集的指令周期数为T2时,(T2-T1)<(T3-T2),即此时至操作系统的内核执行路径中,中间位置至终点位置的指令周期数较长,说明在该代码段中存在性能瓶颈的代码段。在根据起点位置的第一采样点采集的指令周期数为T1,中间位置第一采样点采集的指令周期数为T2以及终点位置的第一采样点采集的指令周期数为T3确定存在性能瓶颈的代码段后,对存在性能瓶颈的代码段进行修正,以实现操作系统性能瓶颈的消除,提高操作系统的性能。
可选的,在图2的基础上,图4是本公开实施例提供的又一种操作系统性能瓶颈的分析方法的流程示意图。本实施例是在上述实施例的基础上进一步扩展与优化,并可与上述技术方案中任意可选方案组合。如图4所示,该方法包括:
S410、在操作系统的内核程序中添加钩子函数。
S420、通过钩子函数获取内核程序的内核执行路径。
S430、在内核执行路径的起点位置、终点位置和中间位置处依次设置第一采样点。
S440、获取第一采样点采集的内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数。
S450、判断起点位置至中间位置的指令周期数是否大于中间位置至终点位置的指令周期数,若是,执行S460,若否,执行S470。
S460、在内核执行路径中的起点位置至中间位置设置第二采样点,根据第二采样点采集的内核执行路径中的起点位置至中间位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
S470、在内核执行路径中的中间位置至终点位置设置第二采样点,根据第二采样点采集的内核执行路径中的中间位置至终点位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
具体的,利用编译器gprofile功能在操作系统的内核程序中植入钩子函数,通过钩子函数统计完成特定的操作系统功能时执行的内核关键路径,在内核执行路径的起点位置、终点位置已经中间位置依次设置第一采样点,在内核程序运行过程中,通过采样函数获取第一采样点采集的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数,获取的起点位置的第一采样点采集的指令周期数为T1,中间位置第一采样点采集的指令周期数为T2,终点位置的第一采样点采集的指令周期数为T3,则通过比对T2-T1与T3-T2的时间关系后通过在内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点确定当前内核执行路径中存在性能瓶颈的代码段。
具体的,当中间位置第一采样点采集的指令周期数为T2与起点位置的第一采样点采集的指令周期数为T1的差值大于终点位置的第一采样点采集的指令周期数为T3与中间位置第一采样点采集的指令周期数为T2时,(T2-T1)>(T3-T2),即此时至操作系统的内核执行路径中,起点位置至中间位置的指令周期数较长,说明在该代码段中存在性能瓶颈的代码段,为实现对存在性能瓶颈代码段的准确定位,缩小瓶颈代码段的范围,通过在内核执行路径中的起点位置至中间位置设置第二采样点,利用第二采样点获取起点位置至中间位置内的内核执行路径的指令周期数,根据第二采样点获取的指令周期数确定起点位置至中间位置的内核执行路径中存在性能瓶颈的代码段。当中间位置第一采样点采集的指令周期数为T2与起点位置的第一采样点采集的指令周期数为T1的差值小于终点位置的第一采样点采集的指令周期数为T3与中间位置第一采样点采集的指令周期数为T2时,(T2-T1)<(T3-T2),即此时至操作系统的内核执行路径中,中间位置至终点位置的指令周期数较长,说明在该代码段中存在性能瓶颈的代码段,为实现对存在性能瓶颈代码段的准确定位,缩小瓶颈代码段的范围,通过在内核执行路径中的中间位置至终点位置设置第二采样点,利用第二采样点获取中间位置至终点位置内的内核执行路径的指令周期数,根据第二采样点获取的指令周期数确定中间位置至终点位置的内核执行路径中存在性能瓶颈的代码段。
需要说明的是,当根据第一采样点采集的指令周期数T1,中间位置第一采样点采集的指令周期数T2以及终点位置的第一采样点采集的指令周期数T3确定存在性能瓶颈的代码段后,为实现对存在性能瓶颈代码段的准确定位,可通过设置指令周期数较长的内核执行路径设置第二采样点,第二采样点采集该段内起点位置的指令周期数,中间位置的指令周期数以及终点位置的指令周期数,根据第二采样点采集的起点位置的指令周期数,中间位置的指令周期数以及终点位置的指令周期数确定存在性能瓶颈的代码段。
示例性的,当中间位置第一采样点采集的指令周期数为T2与起点位置的第一采样点采集的指令周期数为T1的差值大于终点位置的第一采样点采集的指令周期数为T3与中间位置第一采样点采集的指令周期数为T2时,(T2-T1)>(T3-T2),通过在起点位置和中间位置设置第二采样点,第二采样点采集起点位置、中间位置以及终点位置的指令周期数,其中第二采样点采集的起点位置与第一采样点采集的起点位置为同一处,第二采样点采集的终点位置与第一采样点采集的中间位置为一处,第二采样点采集的中间位置为第一采样点的起点位置与中间位置代码段的中间位置处。
进一步的,对第二采样点采集内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段后可进一步设置第三采样点、第四采样点,进而进一步缩小性能瓶颈代码段的范围,实现对性能瓶颈代码段的准确定位。
图5是本公开实施例提供的一种操作系统性能瓶颈的分析系统的结构示意图;该系统配置于计算机设备中,可实现本申请任意实施例所述的操作系统性能瓶颈的分析方法。该系统具体包括如下:
函数添加模块510,用于在操作系统的内核程序中添加钩子函数。
执行路径获取模块520,用于获取内核程序的内核执行路径。
指令周期数采集模块530,用于获取第一采样点采集的内核执行路径的指令周期数。
分析确定模块540,对第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
本发明实施例提供的操作系统性能瓶颈的分析系统通过函数添加模块在编译过程中实现在操作系统中添加钩子函数,通过执行路径获取模块获取内核程序的内核执行路径,通过指令周期数采集模块获取第一采样点采集的内核执行路径的指令周期数,通过分析确定模块对第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段,实现对操作系统存在性能瓶颈代码段的准确定位,提高操作系统的性能。
本发明实施例所提供的操作系统性能瓶颈的分析系统可执行本发明任意实施例所提供的分析方法,具备执行方法相应的功能模块和有益效果。
图6是本公开实施例提供的一种计算机设备的结构示意图。如图6所示,该计算机设备包括处理器610、存储器620、输入装置630和输出装置640;计算机设备中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;电子设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的操作系统性能瓶颈的分析方法对应的程序指令/模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现本发明实施例所提供的操作系统性能瓶颈的分析方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入,可以包括键盘、鼠标等。输出装置640可包括显示屏等显示设备。
本公开实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于实现本发明实施例所提供的操作系统性能瓶颈的分析方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的操作系统性能瓶颈的分析方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述操作系统性能瓶颈的分析系统的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种操作系统性能瓶颈的分析方法,其特征在于,包括:
在所述操作系统的内核程序中添加钩子函数;
通过所述钩子函数获取所述内核程序的内核执行路径;
在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数;
对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
2.根据权利要求1所述的方法,其特征在于,在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数,包括:
在所述内核执行路径的起点位置、终点位置和中间位置处依次设置第一采样点;
获取所述第一采样点采集的所述内核执行路径的起点位置至中间位置的指令周期数,以及中间位置至终点位置的指令周期数。
3.根据权利要求2所述的方法,其特征在于,对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,根据所述内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段;
或,当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据所述第二采样点采集的所述内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
4.根据权利要求3所述的方法,其特征在于,所述当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,根据所述内核执行路径的起点位置至中间位置的指令周期数以及中间位置至终点位置的指令周期数确定当前内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数时,当前内核执行路径中的起点位置至中间位置之间存在性能瓶颈的代码段;
当获取所述内核执行路径的中间位置至终点位置的指令周期数大于预设指令周期数时,当前内核执行路径中的中间位置至终点位置之间存在性能瓶颈的代码段。
5.根据权利要求3所述的方法,其特征在于,所述当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数,或中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置或中间位置至终点位置之间设置第二采样点,根据第二采样点采集的所述内核执行路径的指令周期数确定内核执行路径中存在性能瓶颈的代码段,包括:
当获取所述内核执行路径的起点位置至中间位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的起点位置至中间位置设置第二采样点,根据所述第二采样点采集的所述内核执行路径中的起点位置至中间位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段;
当获取所述内核执行路径的中间位置至终点位置的指令周期数大于预设指令周期数时,在所述内核执行路径中的中间位置至终点位置设置第二采样点,根据所述第二采样点采集的所述内核执行路径中的中间位置至终点位置的指令周期数确定内核执行路径中存在性能瓶颈的代码段。
6.根据权利要求1所述的方法,其特征在于,所述对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段之后包括:
对所述内核执行路径中存在性能瓶颈的代码段进行修正。
7.根据权利要求1所述的方法,其特征在于,所述在所述内核执行路径中设置第一采样点,并获取所述第一采样点采集的所述内核执行路径的指令周期数之后还包括:
通过零拷贝环的方式输出所述第一采样点采集的所述内核执行路径的指令周期数。
8.一种操作系统性能瓶颈的分析系统,其特征在于,所述系统包括:
函数添加模块,用于在所述操作系统的内核程序中添加钩子函数;
执行路径获取模块,用于获取所述内核程序的内核执行路径;
指令周期数采集模块,用于获取第一采样点采集的所述内核执行路径的指令周期数;
分析确定模块,对所述第一采样点采集的所述内核执行路径的指令周期数进行分析并根据分析结果确定当前内核执行路径中存在性能瓶颈的代码段。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1~7中任一所述的操作系统性能瓶颈的分析方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~7中任一所述的操作系统性能瓶颈的分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110421785.XA CN112988544B (zh) | 2021-04-20 | 2021-04-20 | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110421785.XA CN112988544B (zh) | 2021-04-20 | 2021-04-20 | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988544A true CN112988544A (zh) | 2021-06-18 |
CN112988544B CN112988544B (zh) | 2021-08-27 |
Family
ID=76341253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110421785.XA Active CN112988544B (zh) | 2021-04-20 | 2021-04-20 | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988544B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238973A (zh) * | 2021-07-13 | 2021-08-10 | 统信软件技术有限公司 | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 |
CN115033434A (zh) * | 2022-06-07 | 2022-09-09 | 海光信息技术股份有限公司 | 一种内核性能理论值计算方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120022832A1 (en) * | 2009-11-01 | 2012-01-26 | Shannon Lesley Lorraine | Modular re-configurable profiling core for multiprocessor systems-on-chip |
CN111428241A (zh) * | 2019-10-31 | 2020-07-17 | 北京深之度科技有限公司 | 一种多安全访问策略控制方法及计算设备 |
-
2021
- 2021-04-20 CN CN202110421785.XA patent/CN112988544B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120022832A1 (en) * | 2009-11-01 | 2012-01-26 | Shannon Lesley Lorraine | Modular re-configurable profiling core for multiprocessor systems-on-chip |
CN111428241A (zh) * | 2019-10-31 | 2020-07-17 | 北京深之度科技有限公司 | 一种多安全访问策略控制方法及计算设备 |
Non-Patent Citations (1)
Title |
---|
赵霞等: "基于模拟器的嵌入式操作系统能耗估算与分析", 《电子学报》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113238973A (zh) * | 2021-07-13 | 2021-08-10 | 统信软件技术有限公司 | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 |
CN113778892A (zh) * | 2021-07-13 | 2021-12-10 | 统信软件技术有限公司 | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 |
CN113778892B (zh) * | 2021-07-13 | 2024-05-07 | 统信软件技术有限公司 | 定位操作系统性能瓶颈的方法、计算设备以及存储介质 |
CN115033434A (zh) * | 2022-06-07 | 2022-09-09 | 海光信息技术股份有限公司 | 一种内核性能理论值计算方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112988544B (zh) | 2021-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5520371B2 (ja) | 多重仮想マシンのためのサポートを有する、トレース・データの時間ベース・コンテキスト・サンプリング | |
US8141053B2 (en) | Call stack sampling using a virtual machine | |
CN112988544B (zh) | 操作系统性能瓶颈的分析方法、系统、设备和存储介质 | |
US8615619B2 (en) | Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs | |
Lau et al. | The strong correlation between code signatures and performance | |
US20100017583A1 (en) | Call Stack Sampling for a Multi-Processor System | |
US8286134B2 (en) | Call stack sampling for a multi-processor system | |
US8132170B2 (en) | Call stack sampling in a data processing system | |
US20030135720A1 (en) | Method and system using hardware assistance for instruction tracing with secondary set of interruption resources | |
JP2006260542A (ja) | コード部分実行時のプロセッサ消費実時間量の決定 | |
JP6790913B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP6070712B2 (ja) | 情報処理装置及び性能解析データの収集方法 | |
CN111104104A (zh) | 函数调用时间和统计结果可视化的方法、装置及可读介质 | |
CN117195568B (zh) | 一种基于离散事件的仿真引擎性能分析方法及装置 | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
JP2017167930A (ja) | 情報処理装置、電力測定方法及び電力測定プログラム | |
CN111090593A (zh) | 确定崩溃归属的方法、装置、电子设备及存储介质 | |
CN111782490A (zh) | 数据采集方法及装置 | |
CN117234859B (zh) | 一种性能事件监控方法、装置、设备和存储介质 | |
CN107451038B (zh) | 硬件事件采集方法、处理器和计算系统 | |
CN107769987B (zh) | 一种报文转发性能评估方法和装置 | |
Qian et al. | Load balancing on generalized hypercube and mesh multiprocessors with LAL | |
US6725363B1 (en) | Method for filtering instructions to get more precise event counts | |
CN114780409A (zh) | 基于程序运行进程的断点设置方法、电子设备和存储介质 | |
CN106095631B (zh) | 一种基于有限状态机实现的多周期非流水线cpu动态调试方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |