一种数据采集方法、装置、以及计算机可读存储介质与流程

文档序号:31710245发布日期:2022-10-04 18:02阅读:39来源:国知局
一种数据采集方法、装置、以及计算机可读存储介质与流程

1.本技术涉及计算机技术领域,尤其涉及一种数据采集方法、装置、以及计算机可读存储介质。


背景技术:

2.当技术人员想要对应用程序的性能进行分析时,需要对应用程序运行过程中的运行数据进行采集,因为运行数据可以精确的反应一个应用程序的性能,开发人员可以根据运行数据对应用程序的性能指标进行调整,以使得应用程序可以达到更优的状态。
3.目前,对应用程序的运行数据的采集方法大致分成两类,一类是通过二进制翻译应用程序执行过程中各种寄存器的中间变量信息来获得运行数据,例如intel x86平台上有pin工具可以对应用程序进行二进制翻译,可以获得程序执行过程各种寄存器中间变量信息,包括程序的内存访问地址,该类方法支持ia-32,i386,x86-64等x86相关指令集;另一类是直接通过动态翻译应用程序执行规程信息来获得运行数据,例如,dynamorio通过动态翻译目前程序进行执行过程信息的采集和分析,该类方法支持aarch32,ia-32,x86-64三种指令集。上述两类方法,一方面,和指令集具有强绑定的特点,通用性较差,如上述两类方法都不支持risc-v架构;另一方面,通过动态翻译获取运行数据,会在运行过程中引入其他指令,导致采集到的运行数据不精准。
4.因此,怎样提高数据采集的通用性和准确性成为亟待的技术问题。


技术实现要素:

5.本技术实施例提供了一种数据采集方法、装置、以及计算机可读存储介质,可以提高数据采集的准确性以及通用性。
6.本技术实施例一方面公开了一种数据采集方法,该方法包括:
7.当满足数据采集条件时,调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,所述数据采集条件包括所述第一核心上运行的目标应用程序的内存访问出现缺页中断,且所述第一核心的工作模式为截获模式,所述数据采集指示包括所述缺页中断的断点信息;
8.调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值;
9.调用所述第二核心将所述断点信息和所述计数值作为所述目标应用程序的性能指标数据。
10.本技术实施例一方面公开了一种数据采集装置,该装置包括:
11.发送单元,用于当满足数据采集条件时,调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,所述数据采集条件包括所述第一核心上运行的目标应用程序的内存访问出现缺页中断,且所述第一核心的工作模式为截获模式,所述数据采集指示包括所述缺页中断的断点信息;
12.获取单元,用于调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值;
13.所述获取单元,还用于调用所述第二核心将所述断点信息和所述计数值作为所述目标应用程序的性能指标数据。
14.本技术实施例一方面公开了一种计算机设备,该计算机设备包括:
15.处理器,适于实现一条或多条计算机程序;以及,计算机存储介质,所述计算机存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由所述处理器加载并执行以上述的数据采集方法。
16.本技术实施一方面公开了一种计算机可读存储介质,所述计算机可读存储介质存储有一条或多条计算机程序,所述一条或多条计算机程序适于由处理器加载并执行上述的数据采集方法。
17.本技术实施例一方面公开了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述的数据采集方法。
18.本技术实施例中,当在满足数据采集条件时,调用处理器的第一核心向处理器的第二核心发送数据采集指示,发送的数据采集指示中包括第一核心获取断点信息,断点信息可以理解成缺页中断所对应的断点信息,再调用第二核心响应数据采集指示,获取断点信息和处理器事件计数器的计数值,并调用第二核心将获取到的断点信息和计数值作为目标应用程序的性能指标数据。该方法通过第二核心来采集第一核心上运行的目标应用程序的处理器事件计数器的计数值,由于未在目标应用程序中引入多余的指令,因此,可以提高数据采集的准确率,保证获取到目标应用程序的性能指标数据更为精确,更利于开发人员对目标应用程序进行优化。同时,由于本技术是通过处理器中未运行目标应用程序的其他核心来采集数据,不存在程序和指令集强绑定的情况,因此,可以提高数据采集的通用性。
附图说明
19.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本技术实施例公开的计算机设备的处理器的架构示意图;
21.图2是本技术实施例公开的一种数据采集方法的流程示意图;
22.图3是本技术实施例公开的另一种数据采集方法的流程示意图;
23.图4是本技术实施例公开的一种内存访问的示意图;
24.图5是本技术实施例公开的又一种数据采集方法的流程示意图;
25.图6是本技术实施例公开的另一种内存访问的示意图;
26.图7是本技术实施例公开的一种数据采集装置的结构示意图;
27.图8是本技术实施例公开的一种计算机设备的结构示意图。
具体实施方式
28.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
29.本技术提供的数据采集方法还涉及云技术以及云技术中的大数据技术,具体的:云技术(cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
30.大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
31.请参见图1,图1为本技术实施例的一种计算机设备的处理器架构示意图,如图1所示,该计算机设备的处理器100为多核处理器,可以至少包括第一核心110和第二核心120这两个核心,第一核心110上运行有目标应用程序111和内核态状态线程112,第二核心120上运行有数据采集程序121和内态处理线程122。
32.在一种可能的实现方式中,所述计算机设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能车载等,但并不局限于此;计算机设备还可以是服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
33.结合处理器架构,对本技术实施例的数据采集方法进行简单概述,主要可以包括:当在满足数据采集条件时,处理器100调用处理器的第一核心110上运行的内核态状态线程112向处理器的第二核心120上运行的内核态处理线程122发送数据采集指示,发送的数据采集指示中包括第一核心110上运行的内核态状态线程112获取的断点信息,断点信息可以理解成缺页中断所对应的断点信息,再调用第二核心120上运行的数据采集程序121响应数据采集指示,获取断点信息和处理器事件计数器的计数值,并调用第二核心120上运行的数据采集程序121将获取到的断点信息和计数值作为目标应用程序111的性能指标数据。本技术实施例,通过第二核心120来采集第一核心110上运行的目标应用程序111的处理器事件计数器的计数值,由于未在目标应用程序中引入多余的指令,因此,可以提高数据采集的准
确率,保证获取到目标应用程序的性能指标数据更为精确,更利于开发人员对目标应用程序进行优化。同时,由于本技术是通过处理器中未运行目标应用程序的其他核心来采集数据,不存在程序和指令强绑定的情况,因此,可以提高数据采集的通用性。
34.在一些可行的实施例中,上述的计算机设备可以部署在区块链网络中,作为区块链网络的节点。同时,本技术实施例中的相关数据,如缺页中断的断点信息、处理器事件计数器的计数值等性能指标数据,以及数据的采集时间、采集数据的核心的标识等,均可以保存在区块链上。
35.基于上述对计算机设备的处理器架构的阐述,本技术实施例公开了一种数采集方法,请参见图2,为本技术实施例公开的一种数据采集方法的流程示意图,该数据采集方法可以由计算机设备执行,具体可以是计算机设备中的处理器执行的,该处理器上部署有第一核心和第二核心。该数据采集方法具体可以包括步骤s201~s203:
36.s201、当满足数据采集条件时,调用处理器的第一核心向处理器的第二核心发送数据采集指示,数据采集指示包括断点信息。
37.其中,数据采集条件包括第一核心上运行的目标应用程序的内存访问出现缺页中断,且第一核心的工作模式为截获模式。截获模式用来指示需要进行数据采集了,在截获模式下,目标应用程序访问虚拟内存地址是不成功的。第一核心上运行有目标应用程序和内核态状态线程,采集的性能指标数据也是目标应用程序运行时所对应的运行数据,主要是为了让开发人员根据性能指标数据对运行在第一核心上的目标应用程序的性能进行分析,进而对目标应用程序的性能进行优化;在目标应用程序不能进行成功访问时,内核态状态线程主要充当一个内部工作者,执行不能成功访问后的相关工作,如收发数据、建立虚拟内存地址和物理内存页面之间的映射关系,等等。可以理解成,目标应用程序执行的结果对用户来说是可见的,内核态状态线程的执行结果用户是不可见的,相当于一个黑匣。
38.在一个可能的实现方式中,若处理器确定当前时刻满足采集条件,则调用运行在第一核心上的内核态状态线程获取缺页中断的断点信息,该断点信息可以存储在处理器的内存空间中,或者在一些可行的实现方式中,该断点信息也可以存储在区块链节点中,或者还可以存储在云服务器中。断点信息可以包括目标应用程序当前的内存访问指令、目标虚拟内存地址以及调用堆栈。例如,目标应用程序当前的内存访问指令可以为“访问a1”,目标虚拟地址可以为“a1”,调用堆栈可以是包括的调用函数等。进一步,处理器调用内核态状态线程根据断点信息生成数据采集指示,并调用内核态状态线程向第二核心发送数据采集指示。
39.其中,需要注意的是,本技术实施例中的缺页中断指的是软性中断,即数据已在物理内存页面中,但虚拟内存地址和物理内存页面的映射关系未建立的情况。通常情况下,缺页中断是指当软件(应用程序,如某个app)试图访问已映射在虚拟地址空间中,但是由于逻辑映射关系不存在,由中央处理器的内存管理单元所发出的中断。一般可以根据数据是否在物理内存的情况分为软性和硬性中断。
40.s202、调用第二核心响应数据采集指示,获取断点信息和处理器事件计数器的计数值。
41.其中,第二核心上运行有内核态处理线程和数据采集程序,第二核心是为了实现申请中数据采集所引入的一个新的核心,数据采集程序主要用于性能指标数据的采集,内
核态处理线程主要用于进行收发工作,以及目标虚拟内存地址和目标物理内存页面之间映射关系的建立。通过第二核心来对第一核心上运行的目标应用程序的性能指标数据进行采集,由于不会在第一核心上引入其他指令,因此,可以保证采集到的性能指标数据更为精确。
42.在一个可能的实现方式中,当第二核心接收到第一核心发送的数据采集指示后,处理器调用内核态处理线程获取数据采集指示中包括的断点信息,可以是直接读取,也可以是通过对数据采集指示进行解析从而得到断点信息;调用内核态处理线程将得到的断点信息以及数据采集指示发送给数据采集程序,调用数据采集程序将断点信息进行存储,同时,调用数据采集程序根据数据采集指示获取处理器事件计数器的计数值,并将计数值也进行存储。其中,处理器事件计数器是第一核心对应的处理器事件计数器,这样一来,可以保证获取到目标应用程序对应的计数值的准确性。
43.在本技术实施例中,处理器事件计数器可以理解成cpu事件计数器(performance monitoring unit,pmu counter),一般用于性能分析。一般的性能数据采集观察一定时间(秒级)周期内pmu counter的累计值,而本技术不是以时间为单位进行采集,而是分解采集,具体指的是观察一定数目的指令执行前后的pmu counter差值,统计细微过程,进而分析应用程序的性能。
44.s203、调用第二核心将断点信息和计数值作为目标应用程序的性能指标数据。
45.在一个可能的实现方式中,当处理器调用第二核心获取到断点信息和计数值之后,再调用第二核心将断点信息和计数值进行保存,并将断点信息和计数值作为目标应用程序的性能指标数据。其中,调用第二核心将断点信息和计数值进行存储的地方可以是处理器的内存控件,也可以是区块链中,还可以是云服务器中。存储的性能指标数据便是在有需求时提供给开发人员查看的,并以方便开发人员对目标应用程序进行优化的。
46.本技术实施例中,当在满足数据采集条件时,处理器调用处理器的第一核心向处理器的第二核心发送数据采集指示,发送的数据采集指示中包括第一核心获取断点信息,断点信息可以理解成缺页中断所对应的断点信息,再调用第二核心响应数据采集指示,获取断点信息和处理器事件计数器的计数值,并调用第二核心将获取到的断点信息和计数值作为目标应用程序的性能指标数据。该方法通过第二核心来采集第一核心上运行的目标应用程序的处理器事件计数器的计数值,由于未在目标应用程序中引入多余的指令,因此,可以提高数据采集的准确率,保证获取到目标应用程序的性能指标数据更为精确,更利于开发人员对目标应用程序进行优化。同时,由于本技术是通过未运行有目标应用程序的其他核心来采集数据,不存在程序和指令强绑定的情况,因此,提高了数据采集的通用性,是一种通用的数据采集方法,可以运用在通用处理器环境下。
47.基于上述对计算机设备的处理器架构和数据采集方法的阐述,本技术实施例公开了另一种数据采集方法,请参见图3,为本技术实施例公开的另一种数据采集方法的流程示意图,该数据采集方法可以由计算机设备执行,具体由计算机设备的处理器执行。具体阐述的是在满足数据采集条件时,处理器获取数据采集的步骤以及采集数据后重新建立目标虚拟地址和目标物理内存页面的相关步骤,可以包括步骤s301~s310:
48.s301、获取目标应用程序的内存访问指令,内存访问指令包括目标虚拟内存地址。
49.其中,此处的内存访问指令就相当于目标应用程序的当前内存访问指令,内存访
问指令可以理解成前述描述的“访问a1”,内存访问指令又包括目标虚拟内存地址,即“a1”。
50.在一个可能的实现方法中,由于目标应用程序只负责进行访问,在技术层面上,目标应用程序无法感知访问是否成功,只会通过最终的结果判断成功与否,例如,若是访问不成功,即在终端界面上不显示相应的页面,若是访问成功,则在终端界面上显示相应的页面。技术层面上是否访问成功还是处理器自身确定的,当处理器确定目标应用程序访问不成功时,则处理器获取目标应用程序对应的内存访问指令,内存访问指令包括目标虚拟内存地址,该目标虚拟地址是处理器感知到不能访问物理内存页面时,主动发送给第一核心上运行的内核态状态线程的,处理器感知访问是否成功具体可参见步骤s302。
51.s302、从内存页表中查询目标虚拟内存地址对应的映射关系,若内存页表中不存在目标虚拟内存地址对应的映射关系,则确定内存访问出现缺页中断。
52.在一个可能的实现方式中,在某一时刻,当处理器获取到目标应用程序的内存访问地址后,同时,内存页表中查询内存访问地址包括的目标虚拟内存地址对应的映射关系,即查内存页表中是否存在目标虚拟内存地址和目标物理内存页面之间的映射关系。因为本技术针对的软性缺页中断,因此,在物理内存页面中是已经存在数据了,所以只需判断内存页表中是否有映射关系,若是内存页表中不存在目标虚拟内存地址对应的映射关系,则处理器就可以确定目标应用程序的内存访问出现缺页中断。对应的,在终端界面上就不会出现对应的页面。
53.s303、调用第一核心获取第一核心的工作模式的指示标识,若指示标识为预设第一数值,则确定第一核心的工作模式为截获模式。
54.其中,由于本技术实施例对应的采集条件有两个,一个是缺页中断,即步骤s302所描述的,另一个是第一核心的工作模式是截获模式,则在步骤s303中进行详细的阐述。若是只满足缺页中断,不满足截获模式,则对应的处理流程可以参见图5以及图6,这里就不进行详细阐述了。
55.在一个可能的实现方式中,处理器是根据第一核心的工作模式的指示标识来确定工作模式的,则具体的,当确定目标应用程序出现缺页中断后,进一步的,调用第一核心上运行的内核态状态线程获取第一核心的工作模式的指示标识,通常情况下,该指示标识存储在内存空间中,包括内核态状态线程标识和指示标识,若读取到指示标识为预设第一数值,则处理器就可以确定第一核心的工作模式为截获模式。在本技术实施例中,预设第一数值可以为1,即1表示是截获模式。
56.在又一个可能的实现方式中,判断第一核心的工作模式为截获模式的具体步骤为:处理器调用第一核心上运行的内核态状态线程获取处理器事件计数器的计数值,当计数值的增加量达到预设第一阈值时,相当于满足模式切换的条件,此时,处理器就可以调用第一核心上运行的内核态状态线程将第一核心的工作模式的指示标识调整为预设第一数值,对应前述,就是将指示标识调整为1,以将第一核心的工作模式切换为截获模式。其中,计数值记录的是内存访问指令的条数。例如,假设预设第一阈值为10万,在某一时刻,获取的处理器事件计数器的计数值为30万,则随着指令数的增加,当增加了10万条时,则达到了模式切换条件,对应的,就进行指示标识的调整。
57.当既满足步骤s302的缺页中断,又满足步骤s303中的截获模式时,就可以确定满足采集条件了。
58.s304、调用第一核心将内存页表中包括的虚拟内存地址与物理内存页面之间的映射关系删除。
59.在一个可能的实现方式中,为保证采集条件不被干扰,处理器调用第一核心上运行的内核态状态线程将内存页表中包括的虚拟内存地址与物理内存页面之间的映射关系删除。这样一来,就可以保证缺页中断,一旦删除了内存页表中的所有映射关系,即使用户切换其他内存访问指令,也不可以成功访问,也就是说,在这种情况下,缺页中断是始终存在的。虽然内存页表中的映射关系被删除了,但是该映射关系在数据结构中,或者处理器的内存空间中依然存在,以便于后续对内存页表中的映射关系的恢复。
60.s305、调用处理器的第一核心向处理器的第二核心发送数据采集指示。
61.可选的,步骤s304也可以在步骤s305之后执行,若是在步骤s305之后,可以是处理器调用第二核心上运行的内核态处理线程将内存页表中包括的虚拟内存地址与物理内存页面之间的映射关系删除。这里不对步骤的执行顺序进行限定。
62.s306、调用第二核心响应数据采集指示,获取断点信息和处理器事件计数器的计数值。
63.其中,步骤s305~s306已经在图2示出的相关实施例中进行了详细的阐述,这里就不再赘述了。
64.在一个可能的实现方式中,处理器在调用第二核心响应数据采集指示,获取处理器事件计数器的计数值时,还需要判断什么时候结束采集,在本技术实施例中,也可以通过对处理器事件计数器的计数值的统计,来进行判断。具体的,当切换成截获模式,处理器调用第二核心上运行的数据采集程序获取处理器事件计数器的计数值时,处理器调用第一核心上运行的内核态状态线程获取处理器事件计数器的计数值,当计数值的增加量达到预设第二阈值时,则确定采集结束。同时,调用第一核心上运行的内核态状态线程将第一核心的工作模式的指示标识调整为预设第二数值,以将第一核心的工作模式切换为非截获模式。在本技术实施例中,预设第一数值可以为1,预设第二数值可以设置成0,或者其他数值,只要不和1冲突就行。
65.进一步的,当第一核心的工作模式调整为非截获模式之后,非截获模式相当于退出了数据采集过程,为了使后续访问能够成功执行,则处理器调用第一核心上运行的内核态状态线程从处理器的内存空间中获取虚拟内存地址和物理内存页面之间的所有映射关系,并将这些映射关系添加到内存页表中,方便后续目标应用程序的访问。可选的,处理器也可以调用第二核心上运行的内核态处理线程从处理器的内存空间中获取虚拟内存地址和物理内存页面之间的所有映射关系,并将这些映射关系添加到内存页表中。
66.s307、调用第二核心将断点信息和计数值作为目标应用程序的性能指标数据。
67.其中,步骤s307已经在图2示出的相关实施例中进行了详细的阐述,这里也不再赘述了。
68.s308、调用第二核心建立目标虚拟地址和目标物理内存页面之间的映射关系。
69.在一个可能的实现方式中,当处理器调用第二核心得到目标应用程序的性能指标数据后,还可以调用第二核心上运行的内核态处理线程建立目标虚拟地址和目标物理内存页面之间的映射关系。也就是建立目标虚拟地址和目标物理内存页面之间的逻辑映射关系。
70.例如,若目标虚拟内存地址为“aj”,目标物理内存页面为“pj”,则处理器就是调用第二核心上运行的内核态处理线程建立“aj”和“pj”之间的映射关系“lj”。
71.s309、调用第二核心将映射关系发送给第一核心。
72.在一个可能的实现方式中,当调用第二核心建立好目标虚拟地址和目标物理内存页面之间的映射关系后,处理器再调用第二核心将映射关系发送给第一核心,以使得第一核心获知该映射关系已经建立了。可选的,处理器还可以调用第一核心上运行的内核态状态线程将该映射关系添加到内存页面中。
73.s310、调用第一核心根据映射关系和内存页表获取目标物理内存页面的数据,并向目标应用程序发送目标物理内存页面的数据。
74.在一种可能的实现方式中,当目标虚拟内存地址对应的映射关系被建立后,响应步骤s301获取的目标应用程序的内存访问指令,处理器可以调用第一核心上运行的内核态状态线程根据映射关系和内存页表获取目标物理内存页面的数据,并向目标应用程序发送目标物理内存页面的数据。对应的,就在终端界面上显示目标物理页面以及接收到的目标物理内存页面的数据。
75.其中,步骤s301~s310可以用图4的例子进行详细的阐述,如图4所示,图4示出的前提是:前一时刻目标应用程序访问目标虚拟地址ai,内存页表中有ai和对应物理内存页面pi之间存在映射关系li。在当前时刻,应用程序开始访问虚拟内存地址aj,但内存页表中没有aj和对应物理内存页面pj之间存在映射关系lj。则对应的,具体可以包括以下步骤:
76.s1:目标应用程序指令访问虚拟地址aj;
77.s2:aj到物理内存页面的映射关系不存在,处理器确定存在缺页中断,进而转为内核态状态线程处理;
78.s3:内核态状态线程获取第一核心的工作模式的指示标识,指示标识是用来指示第一核心的工作模式的,若此时指示标识为1,则判断第一核心的工作模式处于截获模式,获取中断点信息,并向第二核心的内核态处理线程发送携带中断点信息的数据采集指示;
79.s4:内核态处理线程将数据采集指示包括的断点信息(包括:目标应用程序当前内存访问指令地址,目标虚拟内存地址,调用堆栈)发送给数据采集程序;
80.s5:数据采集程序执行数据采集操作,将接收到断点信息进行存储,并获取目标应用程序的处理器事件计数器的计数值,将断点信息和计数值作为目标应用程序的性能指标数据,采集结束将采集完成的通知消息发送给内核态处理线程;
81.s6:内核态处理线程将ai和pi之间的映射关系li从内存页表中删除,(但是关系li仍保存在数据结构中,或者是保存在处理器的内存空间中),该步骤的执行顺序在s3之后即可;
82.s7:内核态处理线程建立aj和pj之间的映射关系lj;
83.s8:内核态处理线程将映射关系lj通知给内核态状态线程,内核态状态线程可以将访问结果返回给目标应用程序,此时,目标用于程序就可以进行正常的访问了。进一步,内核态状态线程还可以根据第一核心的工作模式的指示标识将截获模式转换成非截获模式。
84.本技术实施例中,主要阐述的是在满足数据采集条件时,处理器通过引入一个新的处理器的核心来进行目标应用程序的性能指标数据的采集,由于在数据采集过程中,没
有引入其他的指令集,因此,可以使得获得的性能指标数据更为精准,更有利于开发人员对目标应用程序的性能进行优化。
85.基于上述对计算机设备的处理器架构和数据采集方法的阐述,本技术实施例公开了另一种数据采集方法,请参见图5,为本技术实施例公开的另一种数据采集方法的流程示意图,该数据采集方法可以由计算机设备执行,具体由计算机设备的处理器执行。具体阐述的是当存在缺页终端,但第一核心的工作模式又是非截获模式事,处理器是怎样调用第一核心进行内存访问的,具体可以包括步骤s501~s505:
86.s501、获取目标应用程序的内存访问指令,内存访问指令包括目标虚拟内存地址。
87.s502、从内存页表中查询所述目标虚拟内存地址对应的映射关系,若内存页表中不存在目标虚拟内存地址对应的映射关系,则确定内存访问出现缺页中断。
88.其中,步骤s501和s502已经在图3示出的相关实施例中进行了详细的阐述,这里也不再赘述了。
89.s503、调用第一核心获取所述第一核心的工作模式的指示标识,若指示标识为预设第二数值,则确定第一核心的工作模式为非截获模式。
90.在一个可能的实现方式中,处理器是根据第一核心的工作模式的指示标识来确定工作模式的,则具体的,当确定目标应用程序出现缺页中断后,进一步的,调用第一核心上运行的内核态状态线程获取第一核心的工作模式的指示标识,该工作模式的指示标识存储在内存空间中。可选的,工作模式的指示标识可以包括内核态状态线程标识和状态标识,内核态状态线程标识用于指示是哪一个内核态状态线程,状态标识主要用于指示是哪种工作模式。若读取到指示标识为预设第二数值,则处理器就可以确定第一核心的工作模式为非截获模式。在本技术实施例中,预设第二数值可以为0,即0表示的是非截获模式,可以将非截获模式理解成常规模式,即目标应用程序现在处于一个稳态,对应的内核态可以对缺页中断进行处理。在这种情况下,不需要对目标应用程序的性能指标数据进行采集,只需要建立访问的映射关系即可,具体参见步骤s504。
91.s504、调用第一核心建立目标虚拟地址和内存地址的映射关系。
92.在一个可能的实现方式中,处理器调用第一核心上运行的内核态状态线程建立目标虚拟地址和目标物理内存页面之间的映射关系,目标物理内存页面是内核态状态线程从处理器的内存空间中获取的。也就是建立目标虚拟地址和目标物理内存页面之间的逻辑映射关系。
93.例如,若目标虚拟内存地址为“a2”,目标物理内存页面为“p2”,则处理器就是调用第一核心上运行的内核态处理线程建立“a2”和“p2”之间的映射关系“lj2”。
94.s505、调用第一核心根据映射关系和内存页表获取所述目标物理内存页面的数据,并向目标应用程序发送目标物理内存页面的数据。
95.在一种可能的实现方式中,当目标虚拟内存地址对应的映射关系被建立后,响应步骤s501获取的目标应用程序的内存访问指令,处理器可以调用第一核心上运行的内核态状态线程根据映射关系和内存页表获取目标物理内存页面的数据,并向目标应用程序发送目标物理内存页面的数据。对应的,也就在终端界面上显示目标物理页面以及接收到的目标物理内存页面的数据。
96.其中,步骤s501~s505可以用图6的例子进行详细的阐述,如图6所示,图6示出的
前提是:虚拟内存地址a1和a3在访问之前已存在指向物理内存页面p1和p3的映射关系l1和l3,目标应用程序访问a1和a3可以不受中断直接访问到对应的物理内存页面,虚拟内存地址a2到物理内存页面的映射关系在访问时不存在,处理器件会触发缺页中断机制,则对应的,具体可以包括以下步骤:
97.s11:目标应用程序访问虚拟内存地址a2;
98.s12:由于虚拟内存地址a2到物理内存页面p2的映射关系不存在,处理器触发缺页中断,进而转为内核态线程处理;
99.s13:内核态线程在内存空间中找到虚拟内存地址a2对应的物理内存页面p2,并建立a2和p2之间映射关系l2,以使得目标应用程序可以继续访问虚拟内存地址a2。
100.其中,图6示出的s14和s15是目标应用程序访问a1和a3的步骤,由于映射关系存在,因此,可以成功访问到物理内存页面p1和p3。
101.在本技术实施例中,处理器可以调用第一核心获取目标应用程序的内存访问指令,内存访问指令包括目标虚拟内存地址,再调用第一核心判断目标应用程序存在缺页中断,且第一核心的工作模式为非截获模式时,调用第一核心上运行的内核态状态线程进行映射关系的建立,从而确定出内存访问指令的物理内存页面的数据。通过这种方法建立缺页中断时,虚拟内存地址和物理内存页面的关系,在逻辑上相对简单,通用性也比较强。
102.基于上述的方法实施例,本技术实施例还提供了一种数据采集装置的结构示意图。参见图7,为本技术实施例提供的一种图像处装置的结构示意图。图7所示的数据采集装置700可运行如下单元:
103.发送单元701,用于当满足数据采集条件时,调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,所述数据采集条件包括所述第一核心上运行的目标应用程序的内存访问出现缺页中断,且所述第一核心的工作模式为截获模式,所述数据采集指示包括所述缺页中断的断点信息;
104.获取单元702,用于调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值;
105.所述获取单元702,还用于调用所述第二核心将所述断点信息和所述计数值作为所述目标应用程序的性能指标数据。
106.在一种可能的实现方式中,所述第一核心上运行有内核态状态线程,所述发送单元701调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,包括:
107.调用所述内核态状态线程获取所述缺页中断的断点信息;
108.调用所述内核态状态线程根据所述断点信息生成数据采集指示;
109.调用所述内核态状态线程向所述第二核心发送所述数据采集指示。
110.在一种可能的实现方式中,所述获取单元702,还用于调用所述第一核心获取所述目标应用程序的内存访问指令,所述内存访问指令包括目标虚拟内存地址;
111.处理单元703,用于调用所述第一核心从内存页表中查询所述目标虚拟内存地址对应的映射关系;
112.确定单元704,用于若所述内存页表中不存在所述目标虚拟内存地址对应的映射关系,则确定内存访问出现缺页中断;
113.所述获取单元702,还用于调用所述第一核心获取所述第一核心的工作模式的指
示标识;
114.确定单元704,还用于若所述指示标识为预设第一数值,则确定所述第一核心的工作模式为截获模式。
115.在一种可能的实现方式中,所述获取单元702,还用于调用所述第一核心获取处理器事件计数器的计数值;
116.所述处理单元703,还用于当所述计数值的增加量达到预设第一阈值时,调用所述第一核心将所述第一核心的工作模式的指示标识调整为预设第一数值,以将所述第一核心的工作模式切换为截获模式。
117.在一种可能的实现方式中,所述处理单元703,还用于调用所述第一核心将所述内存页表中包括的虚拟内存地址与物理内存页面之间的映射关系删除。
118.在一种可能的实现方式中,所述获取单元702,还用于调用所述第一核心获取处理器事件计数器的计数值;
119.所述处理单元703,还用于当所述计数值的增加量达到预设第二阈值时,调用所述第一核心将所述第一核心的工作模式的指示标识调整为预设第二数值,以将所述第一核心的工作模式切换为非截获模式;
120.所述获取单元702,还用于调用所述第一核心从所述处理器的内存空间中获取虚拟内存地址和物理内存页面之间的映射关系,并将所述映射关系添加到所述内存页表中。
121.在一种可能的实现方式中,所述获取单元703,还用于调用所述第二核心建立所述目标虚拟地址和目标物理内存页面之间的映射关系;
122.所述发送单元701,还用于调用所述第二核心将所述映射关系发送给所述第一核心;
123.所述获取单元702,还用于调用所述第一核心根据所述映射关系和内存页表获取所述目标物理内存页面的数据,并向所述目标应用程序发送所述目标物理内存页面的数据。
124.在一种可能的实现方式中,所述第二核心上运行有内核态处理线程和数据采集程序,所述获取单元702调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值,可具体用于:
125.调用所述内核态处理线程获取所述数据采集指示中包括的断点信息;
126.调用所述数据采集程序获取处理器事件计数器的计数值;
127.调用所述内核态处理线程将所述断点信息发送给所述数据采集程序;
128.调用所述数据采集程序存储所述断点信息和所述计数值。
129.根据本技术的一个实施例,图2、图3以及图5所示的数据采集方法所涉及各个步骤可以是由图7所示的数据采集装置700中的各个单元来执行的。例如,图2所示的数据采集方法中步骤s201可由图7所示的数据采集装置700中的发送单元701来执行,步骤s202和步骤s203可由图7所示的数据采集装置700中的获取单元702来执行;再如,图3所示的数据采集方法中步骤s305、步骤s309-s310可由图7所示的数据采集装置700中的发送单元701来执行,步骤s301、步骤s306-s307可由图7所示的数据采集装置700中的获取单元702来执行,步骤s304和步骤s308可由图7所示的数据采集装置700中的处理单元703来执行,步骤s302-s303可由图7所示的数据采集装置700中的确定单元704来执行;再如,图5所示的数据采集
方法中步骤s505可由图7所示的数据采集装置700中的发送单元701来执行,步骤s501可由图7所示的数据采集装置700中的获取单元702来执行,步骤s504可由图7所示的数据采集装置700中的处理单元703来执行,步骤s502-s503可由图7所示的数据采集装置700中的确定单元704来执行。
130.根据本技术的另一个实施例,图7所示的数据采集装置700中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本技术的其它实施例中,基于数据采集装置700也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
131.根据本技术的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2、图3以及图5所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的数据采集装置700,以及来实现本技术实施例数据采集方法。所述计算机程序可以记载于例如计算机可读存储介质上,并通过计算机可读存储介质装载于上述计算设备中,并在其中运行。
132.本技术实施例中,调用处理器的第一核心向处理器的第二核心发送数据采集指示,发送的数据采集指示中包括第一核心获取断点信息,断点信息可以理解成缺页中断所对应的断点信息,再调用第二核心响应数据采集指示,获取断点信息和处理器事件计数器的计数值,并调用第二核心将获取到的断点信息和计数值作为目标应用程序的性能指标数据。该方法通过第二核心来采集第一核心上运行的目标应用程序的处理器事件计数器的计数值,由于未在目标应用程序中引入多余的指令,因此,可以提高数据采集的准确率,保证获取到目标应用程序的性能指标数据更为精确,更利于开发人员对目标应用程序进行优化。同时,由于本技术是通过处理器中未运行目标应用程序的其他核心来采集数据,不存在程序和指令集强绑定的情况,因此,可以提高数据采集的通用性。
133.基于上述方法以及装置实施例,本技术实施例提供了一种计算机设备。参见图8,为本技术实施例提供的一种计算机设备的结构示意图。图8所示的计算机设备800至少包括处理器801、输入接口802、输出接口803、计算机存储介质804以及存储器805。其中,处理器801、输入接口802、输出接口803、计算机存储介质804以及存储器805可通过总线或其他方式连接。
134.计算机存储介质804可以存储在计算机设备800的存储器805中,所述计算机存储介质804用于存储计算机程序,所述计算机程序包括程序指令,所述处理器801用于执行所述计算机存储介质804存储的程序指令。处理器801(或称cpu(central processing unit,中央处理器))是计算机设备800的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
135.本技术实施例还提供了一种计算机存储介质(memory),所述计算机存储介质是计算机设备800中的记忆设备,可以理解的是,此处的计算机存储介质既可以包括计算机设备800中的内置存储介质,当然也可以包括计算机设备800支持的扩展存储介质。计算机存储
介质提供存储空间,该存储空间存储了计算机设备800的操作系统。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
136.在一个实施例中,所述计算机存储介质可由处理器801加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关图2、图3以及图5所示的数据采集方法的相应步骤。具体实现中,计算机存储介质中的一条或多条指令由处理器801加载并执行如下步骤:
137.当满足数据采集条件时,调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,所述数据采集条件包括所述第一核心上运行的目标应用程序的内存访问出现缺页中断,且所述第一核心的工作模式为截获模式,所述数据采集指示包括所述缺页中断的断点信息;
138.调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值;
139.调用所述第二核心将所述断点信息和所述计数值作为所述目标应用程序的性能指标数据。
140.在一种可能的实现方式中,所述第一核心上运行有内核态状态线程,所述处理器801调用处理器的第一核心向所述处理器的第二核心发送数据采集指示,包括:
141.调用所述内核态状态线程获取所述缺页中断的断点信息;
142.调用所述内核态状态线程根据所述断点信息生成数据采集指示;
143.调用所述内核态状态线程向所述第二核心发送所述数据采集指示。
144.在一种可能的实现方式中,所述处理器801还用于:
145.调用所述第一核心获取所述目标应用程序的内存访问指令,所述内存访问指令包括目标虚拟内存地址;
146.调用所述第一核心从内存页表中查询所述目标虚拟内存地址对应的映射关系;
147.若所述内存页表中不存在所述目标虚拟内存地址对应的映射关系,则确定内存访问出现缺页中断;
148.调用所述第一核心获取所述第一核心的工作模式的指示标识;
149.若所述指示标识为预设第一数值,则确定所述第一核心的工作模式为截获模式。
150.在一种可能的实现方式中,所述处理器801,还用于:
151.调用所述第一核心获取处理器事件计数器的计数值;
152.当所述计数值的增加量达到预设第一阈值时,调用所述第一核心将所述第一核心的工作模式的指示标识调整为预设第一数值,以将所述第一核心的工作模式切换为截获模式。
153.在一种可能的实现方式中,所述处理器801,还用于:
154.调用所述第一核心将所述内存页表中包括的虚拟内存地址与物理内存页面之间的映射关系删除。
155.在一种可能的实现方式中,所述处理器801,还用于:
156.调用所述第一核心获取处理器事件计数器的计数值;
157.当所述计数值的增加量达到预设第二阈值时,调用所述第一核心将所述第一核心的工作模式的指示标识调整为预设第二数值,以将所述第一核心的工作模式切换为非截获模式;
158.调用所述第一核心从所述处理器的内存空间中获取虚拟内存地址和物理内存页面之间的映射关系,并将所述映射关系添加到所述内存页表中。
159.在一种可能的实现方式中,所述处理器801,还用于:
160.调用所述第二核心建立所述目标虚拟地址和目标物理内存页面之间的映射关系;
161.调用所述第二核心将所述映射关系发送给所述第一核心;
162.调用所述第一核心根据所述映射关系和内存页表获取所述目标物理内存页面的数据,并向所述目标应用程序发送所述目标物理内存页面的数据。
163.在一种可能的实现方式中,所述第二核心上运行有内核态处理线程和数据采集程序,所述处理器801调用所述第二核心响应所述数据采集指示,获取所述断点信息和处理器事件计数器的计数值,可具体用于:
164.调用所述内核态处理线程获取所述数据采集指示中包括的断点信息;
165.调用所述数据采集程序获取处理器事件计数器的计数值;
166.调用所述内核态处理线程将所述断点信息发送给所述数据采集程序;
167.调用所述数据采集程序存储所述断点信息和所述计数值。
168.根据本技术实施例的一个方面,本技术实施例还提供了一种计算机产品该计算机产品或计算机程序包括计算机程序,该计算机程序存储在计算机可读存储介质中。处理器801从计算机可读存储介质中读取该计算机程序,处理器801执行该计算机程序,使得计算机设备800执行图2、图3以及图5所示的数据采集方法。
169.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
170.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
171.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1