首页> 中国专利> 计算机系统及通过计算机系统执行的性能监控方法

计算机系统及通过计算机系统执行的性能监控方法

摘要

本发明实施例公开计算机系统及性能监控方法。所述计算机系统包括:存储单元和处理单元,其中,多个任务在所述处理单元的控制下进行切换;所述处理单元用于在任务切换被执行的位置提供回调函数,且当第一任务切换发生时重置性能监控单元的用于外部访问计数的计数器,当第二任务切换发生时,从所述计数器读取计数值记录到所述存储单元的日志中作为所述第一任务的记录,并在这之后为所述第二任务重置所述计数器;其中,所述日志中在一预定时间段对应所述第一任务的记录被求和来分析所述第一任务的性能,由此确定对一个特定事件所述第一任务的外部访问的性能。本发明实施例可精确地确定在一个给定时间段内所选择的任务的发生及性能。

著录项

  • 公开/公告号CN105843731A

    专利类型发明专利

  • 公开/公告日2016-08-10

    原文格式PDF

  • 申请/专利权人 联发科技股份有限公司;

    申请/专利号CN201610018626.4

  • 发明设计人 乔梦麟;曾柏坤;

    申请日2016-01-12

  • 分类号

  • 代理机构深圳市威世博知识产权代理事务所(普通合伙);

  • 代理人何青瓦

  • 地址 中国台湾新竹市新竹科学工业园区笃行一路一号

  • 入库时间 2023-06-19 00:12:25

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-01

    授权

    授权

  • 2016-09-07

    实质审查的生效 IPC(主分类):G06F11/34 申请日:20160112

    实质审查的生效

  • 2016-08-10

    公开

    公开

说明书

本发明要求申请日为2015年2月2日,专利号为62/110,678的美国临时专利的优先权,该美国专利的全部内容均包含在本发明中。

【技术领域】

本发明涉及计算机技术领域,尤其涉及一种计算机系统及通过计算机系统执行的性能监控方法。

【背景技术】

近些年,性能监控单元(Performance Monitoring Units,PMU)已被广泛地应用在高端处理器中。性能监控单元主要以硬件方式建立在处理器内部以测试所述处理器的性能参数,为获取性能信息,所述性能监控单元中的一个或多个计数器(counter)对计算机系统中的多个事件进行计数。而这些计数器的操作受控制寄存器(control register)所管理。通常情况下,可通过软件对所述控制寄存器和所述计数器进行读写,因此,用户可通过向所述控制寄存器中写入参数来选择计算机系统中将被监控的事件(events)以及指定所述计数器被使能的条件。

有了性能监控单元,可依靠处理器所提供的支持(也即硬件)来测量指令周期(instruction cycle)、高速缓存命中(cache hits)、高速缓存未命中(cachemisses)、分支错误(branch misses)及其他很多的参数。在这类测量中,累积一个给定时间段内所发生的事件的总数量并在该给定时间段结束时一起进行报告。所述性能控制寄存器用于对所期望的事件进行计数,并且在所述监控期结束后这些寄存器的值(values)可被读取。

当前,所读取的值仅有助于确定或提供一个给定时间段内所发生的事件的总数或所选择的事件的发生,没有信息可精确地确定在一个给定时间段内所选择的任务(task)的发生。

【发明内容】

本发明提供计算机系统及通过计算机系统执行的性能监控方法。

本发明提供的一种计算机系统,可包括:存储单元;处理单元,包括用于监控多个任务的性能监控单元;其中,所述多个任务在所述处理单元的控制下进行切换;其中,所述处理单元用于在任务切换被执行的位置提供回调函数,且当用于将任务的执行切换为所述多个任务的第一任务的第一任务切换发生时重置所述性能监控单元的用于外部访问计数的计数器,以及,当用于将任务的执行从所述多个任务的所述第一任务切换为第二任务的第二任务切换发生时,从所述性能监控单元的所述用于外部访问计数的计数器读取计数值并将所读取的值记录到所述存储单元中的日志中作为所述第一任务的记录,以及,在该次所述第一任务的记录产生之后为所述第二任务重置所述性能监控单元的所述用于外部访问计数的计数器;其中,所述日志中在一预定时间段对应所述第一任务的记录被求和来分析所述第一任务在所述预定时间段内的性能,由此确定对一个特定事件所述第一任务的外部访问的性能。

另外,本发明提供的一种通过计算机系统所执行的性能监控方法,所述计算机系统包括处理单元和存储单元,其中所述处理单元包括用于监控多个任务的性能监控单元,所述方法包括:通过所述处理单元在任务切换被执行的位置提供回调函数;当用于将任务的执行切换为所述多个任务的第一任务的第一任务切换发生时,通过所述处理单元重置所述性能监控单元的用于外部访问计数的计数器;当用于将任务的执行从所述多个任务的所述第一任务切换为第二任务的第二任务切换发生时,通过所述处理单元从所述性能监控单元的所述用于外部访问计数的计数器读取计数值并将所读取的值记录到所述存储单元中的日志中作为所述第一任务的记录;以及,在该次所述第一任务的记录产生后为所述第二任务重置所述性能监控单元的所述用于外部访问计数的计数器;其中,所述日志中在一预定时间段对应所述第一任务的所述记录被求和来分析所述第一任务在所述预定时间段内的性能,由此确定对一个特定事件所述第一任务的外部访问的性能。

通过上述所提供的方案,本发明实施例可精确地确定在一个给定时间段内所选择的任务的发生及性能。

【附图说明】

图1为依据本发明的一个实施例的计算机系统的功能单元的结构示意图。

图2为依据本发明的一个实施例的任务的性能监控的方法的流程图。

图3为依据本发明的一个实施例的在一个预定时间段内对一个特定事件的执行流程。

图4为依据本发明的一个实施例的对应于图3的执行流程的日志的结构示意图。

图5为依据本发明的另一个实施例的在一预定时间段内一特定事件的执行流程示意图。

图6为依据本发明的另一个实施例的对应于图5的执行流程的日志的结构示意图。

图7为依据本发明的另一个实施例的在一个预定时间段内的一个日志的示意图。

【具体实施方式】

接下面的描述为本发明预期的最优实施例。这些描述用于阐述本发明的大致原则而不应用于限制本发明。本发明的保护范围应在参考本发明的权利要求的基础上进行认定。

图1为依据本发明的一个实施例的计算机系统100的功能单元的结构示意图。在一些实施例中,计算机系统100可为一个台式电脑或一个移动设备,例如,可为移动电话、智能手机、便携式媒体播放器(Portable Media Player,PMP)、掌上游戏机、平板计算机、或者笔记本电脑等。计算机系统100至少可包括处理单元110、存储单元120以及显示装置130。处理单元110可包括一处理器和其他信号处理电路。所述处理器可为中央处理单元(Central Processing Unit,CPU)、微控制单元(Micro-Control Unit,MCU)、数字信号处理器(Digital SignalProcessor,DSP),诸如此类,它们用于提供数据处理和计算的功能。处理单元110可进一步包括性能监控单元112用于对多个任务(task)进行性能监控。更具体而言,所述处理单元110可装载并执行一系列来自于所述存储单元120的指令和/或程序代码来控制所述处理单元110、所述存储单元120以及所述显示装置130的操作来执行本发明的方法,包括:在执行任务切换(task switch)的位置提供回调函数(callback function);当用于将任务的执行切换为第一任务的第一任务切换发生时,重置(reset)所述性能监控单元的用于外部访问计数的计数器;当用于将任务的执行从所述第一任务切换为第二任务的第二任务切换发生时,从所述性能监控单元(用于执行任务监控)的用于外部访问计数的计数 器读取计数值并将所读取的值记录到存储单元中的日志中作为所述第一任务的记录,并在所述第一任务的记录产生后为所述第二任务重置所述性能监控单元的用于外部访问计数的计数器。所述回调函数的第一个作用为当任务切换或任务之间的内容切换发生时,从所述用于外部访问计数的计数器(例如,从所述性能监控单元的总线读/写寄存器)中读取计数值并将读取的值记录到日志122中作为在被切换的第一任务(也即,任务的执行是从所述第一任务切换为另外的第二任务)期间已经发生的事件的数量。所述回调函数的第二个作用为在任务的切换的过程中(也即,任务自所述第一任务切换为所述下一任务)为下一个将要切换到的任务重置所述计数器(也即,将所述性能监控单元的总线读/写寄存器的值清空为0)。

所述存储单元120可为非易失性存储器(non-volatile storage medium),例如,只读存储器(Read-Only Memory,ROM)、闪存(Flash memory)、磁性录音带(magnetic tape)、硬盘(hard disk);或者,所述存储单元120可为易失性存储器,例如,随机存取存储器(Random Access Memory,RAM);或者,所述存储单元120可为上述存储器的任何组合以用于存储数据,例如指令、程序代码,用户签名信息等。存储单元120可存储操作系统(未图示)的程序代码,例如LINUX、UNIX、OS X、Android、iOS或WINDOWS操作系统,或者嵌入式操作系统,例如嵌入在操作系统中的VxWorks。所述操作系统可执行程序用来处理基本的系统服务和执行硬件相关的任务。显示装置130可为液晶显示器(Liquid-Crystal Display,LCD)、发光二极管(Light-Emitting Diode,LED)显示器、电子纸显示器(Electronic Paper Display,EPD)等用于提供显示功能。在一些实施例中,所述显示装置还可集成有触摸感应装置(未图示)。所述触摸感应装置包括一个触摸感应表面,所述触摸感应表面包括位于至少一个维度上的多个传感器用于检测至少一个物体(输入工具)在所述触摸感应表面或接近所述触摸感应表面的接触和/或移动,所述物体例如为一支笔(钢笔或铁笔)或人手。

尽管未进行图示,所述计算机系统100还可包括其他的功能单元,例如无线通信单元,输入/输出装置,例如,按扭(button)、键盘(keyboard)、或鼠标等,并且本发明不限于此。所述无线通信单元负责提供有线或无线网络接入,因此,所述计算机系统100可连接至互联网或连接至建立在所述互联网上的特定的服务器。所述有线网络接入可包括以太网连接,不对称数字用户线 (Asymmetric Digital Subscriber Line,ADSL),电缆连接(cable connection),诸如此类。所述无线网络接入可包括到无线局域网(Wireless Local Area Network,WLAN)的连接,宽带码分多址移动通信系统(WCDMA),码分多址连接2000网络系统(CDMA-2000),时分-同步码分多址接入系统(TD-SCDMA),微波接入全球互通系统(WiMAX),长期演进系统(LTE),长期演进高级系统(LTE-A),或者时分长期演进系统(TD-LTE)。所述无线通信单元可包括射频单元(RF)和基带单元。具体地,所述基带单元可包括多个硬件装置用于执行基带信号处理,包括模数/数模转换(ADC/DAC),增益调整,调制/解调,编码/解码,等等,所述射频单元可接收射频无线信号,将接收的射频无线信号转换为由基带单元处理的基带信号,或者至所述基带单元接收基带信号并将接收的基带信号转换为射频无线信号用于后续发送。所述射频单元也可包括多个硬件装置用于执行射频信号转换,例如包括一个混频器用于将所述无线通信系统的射频中的振荡的载波与所述基带信号相乘,其中,使用在无线保真技术中的射频可为2.4GHz或5GHz,使用在蓝牙技术中的射频可为2.402~2.480GHz,或者依据其他使用的无线技术,射频可为其他取值。

图2为依据本发明的一个实施例的任务的性能监控(performancemonitoring)的方法的流程图。在此实施例中,所述方法可应用于图1所示的计算机系统100并由所述计算机系统100的处理单元110所执行。

首先,在步骤S202,在处理单元执行任务切换的位置提供一个回调函数。所述执行任务切换的位置表示本发明中的当一个任务切换发生时所述处理单元110将要在任务之间执行一个上下文切换(context switch)来将执行一个任务切换为执行另一个任务的位置。因此,每当任务切换发生时,所述处理单元110可执行所述回调函数。具体地,当用于将任务的执行由第一任务T1切换为第二任务T2的第二任务切换发生时,或者当用于将任务的执行由第二任务T2切换回第一任务T1的第三任务切换发生时,执行所述回调函数。

然后,在步骤S204,当用于将任务的执行切换为第一任务T1的第一任务切换发生时,所述处理单元110根据所述回调函数重置所述性能监控单元的用于外部访问计数的计数器。更详细而言,重置所述性能监控单元112的用于外部访问计数的计数器表示将所述计数器的计数值清空并设置计数值为0。在一个实施例中,所述性能监控单元112的用于外部访问计数的计数器为所述性能监控单元112的一个总线读/写寄存器,每当执行一次总线读/写操作,该总线读/写寄 存器便计数一次。基于所述性能监控单元的所述用于外部访问计数的计数器的计数值,可测量对一个特定任务的外部访问的带宽或性能。更具体而言,由于计数器被重置了,计数器的计数值被设置为0,在第一任务T1的执行过程中,所述计数器开始计数并在每次总线读/写操作发生时将计数器加1。

随后,在步骤S206,当用于将任务的执行由所述第一任务T1切换为所述第二任务T2的第二任务切换发生时,所述处理器110根据所述回调函数将所述性能监控单元112的用于外部访问计数的所述计数器的计数值读取出来并将所述读取的值记录到所述存储单元120的一个日志122中作为所述第一任务的一个记录。

在步骤S208,在所述日志122产生之后,为了所述第二任务,所述处理器110根据所述回调函数将所述性能监控单元112的用于外部访问计数的所述计数器进行重置。在此之后,如果一个软件工程师或调试员想要分析一个预定时间段内(例如,1毫秒,10毫秒或其他时间段)的所有任务的任务性能,在步骤S210,可基于上述所提及的步骤产生一个预定时间段内的日志122,并且所述预定时间段内的所述日志122中的每一个任务的记录被求和来分析在所述预定时间段内每一个任务的性能,以便确定针对一个特定事件每一个任务的外部访问的性能。例如,在所述预定时间段内的所述日志中的所述第一任务T1的所有的记录被求和来分析所述预定时间段内所述第一任务的性能,以便确定针对一个特定事件所述第一任务T1的外部访问的性能。

图3为依据本发明的一个实施例的在一个预定时间段内对一个特定事件的执行流程。在该实施例中,假设有三个任务T1,T2和T3在包括一个处理核心或CPU的处理单元中被切换。如图3所示,所述执行流程示出了所述多个任务按照T1到T2,再到T1,最后到T3的顺序被执行,其中,任务T1被执行了两次,而所述任务T2和T3被执行了一次,其中,TiNj表示对所述任务Ti的第j次外部访问的计数值(在该实施例中,该第TiNj记录的是所述特定事件发生的次数)。例如,T1N1表示对第一任务T1的第一计数值。T2N1表示对第二任务T2的第一计数值,T1N2表示对第一任务T1的第二计数值,T3N1表示对第三任务T3的第一计数值。

图4为依据本发明的一个实施例的对应于图3的执行流程的日志的结构示意图。如图4所示,在日志300中示出了任务T1被执行了两次,其中,TiNj表示对所述任务Ti的第j次外部访问的计数值。例如,T1N1表示对第一任务 T1的第一计数值。T2N1表示对第二任务T2的第一计数值,T1N2表示对第一任务T1的第二计数值,T3N1表示对第三任务T3的第一计数值,以此类推。可通过将日志300中与任务T1相关的计数值求和的方式来计算任务T1期间已经发生的事件的总数TN1,也即,TN1=T1N1+T1N2,因为在日志300中对任务T1有两个记录。可通过将日志300中与任务T2相关的计数值求和的方式来计算任务T2期间已经发生的事件的总数TN2,也即,TN2=T2N1,因为在日志300中对任务T2仅有一个记录。可通过将日志300中与任务T3相关的计数值求和的方式来计算任务T3期间已经发生的事件的总数TN3,也即,TN3=T3N1,因为在日志300中对任务T3仅有一个记录。随后,软件工程师可根据所有任务期间发生的事件的总数从这些任务中选择任务用于优化。例如,当T1N1,T2N1,T1N2以及T3N1的值分别为2,5,1,4,由于任务T2期间发生的事件的总数相比其他任务而言为最大值,因此为了优化,任务T2将被选择来被重写或重设计。

在一些实施例中,处理单元110还可包括两个或更多的处理核心或CPU,并且,当用于在每一个处理核心或CPU中将任务的执行切换为第一任务的第四任务切换发生时,所述处理单元110还用于重置所述性能监控单元112的所述用于外部访问计数的计数器;以及,当用于在每一个处理核心或CPU中将任务的执行由所述第一任务切换为第二任务的第五任务切换发生时,所述处理单元110还用于从所述性能监控单元112的所述用于外部访问计数的计数器中读取计数值并将读取的计数值记录到日志122中作为所述第一任务的记录;以及,在所述日志被产生后,为每一个处理核心或CPU中的所述第二任务重置所述性能监控单元的用于外部访问计数的所述计数器。所有处理核心的所述第一任务在所述预定时间段内在所述日志122中的记录可被求和来分析所述第一任务在所述预定时间段内的性能,以便确定对一个特定事件的所述第一任务的外部访问性能。

图5为依据本发明的另一个实施例的在一预定时间段内一特定事件的执行流程示意图。在此实施例中,假设有四个任务T1,T2,T3以及T4在具有两个处理核心或CPU(CPU0和CPU1)的处理单位中被切换。如图5所示,所述执行流程示出了在CPU0中,所述多个任务按照T1到T2,再到T1,再到T3的顺序被执行,而在CPU2中,所述多个任务按照T4到T1,再到T4,最后到T2的顺序被执行。其中,TiNjCk表示在CPUk中对所述任务Ti的外部访问的第j 计数值。

图6为依据本发明的另一个实施例的对应于图5的执行流程的日志的结构示意图。如图6所示,日志400中示出任务T1在CPU0中被执行了两次而在CPU1中被执行了一次,并且,其中,TiNjCk表示在CPUk中对所述任务Ti的第j次外部访问的计数值。例如,T1N1C0,T2N1C0,T1N2C0以及T3N1C0分别表示在CPU0中对任务T1的第一计数值,在CPU0中对任务T2的第一计数值,在CPU0中对任务T1的第二计数值以及在CPU0中对任务T3的第一计数值。类似的,T4N1C1,T1N1C1,T4N2C1以及T2N1C1分别表示在CPU1中对任务T4的第一计数值,在CPU1中对任务T1的第一计数值,在CPU1中对任务T4的第二计数值以及在CPU1中对任务T2的第一计数值。通过将日志中与任务Ti相关的计数值求和来计算所有CPU中任务Ti期间已发生的事件的总数。例如,可通过将日志400中与任务T1相关的计数值求和来计算所有CPU中(也即,CPU0和CPU1)任务T1期间已发生的事件总数TN1’,也即,TN1’=T1N1C0+T1N2C0+T1N1C1,因为在日志400中,在CPU0中对任务T1有两条记录而在CPU1中对任务T1有一条记录。在一个实施例中,可通过将记录在所述日志中的与每一个CPU中的任务Ti相关的计数值求和来计算每一个CPU中任务Ti期间已发生的事件的总数。例如,可通过将日志400中与CPU0中的任务T1相关的计数值求和来计算CPU0中任务T1期间已发生的事件的总数TN10”,也即,TN10”=T1N1C0+T1N2C0,而可通过将日志400中与CPU1中的任务T1相关的计数值求和来计算CPU1中任务T1期间已发生的事件的总数TN11”,也即,TN11”=T1N1C1,因为在日志400中,有两条对CPU0中的任务T1的记录而有一条对CPU1中的任务T1的记录。随后,软件工程师根据单个CPU中或所有CPU中所有任务期间已发生的事件的总数来从这些任务中选择任务用于优化。

根据本发明的另一个实施例,可确定在预定时间段内函数调用(functioncall)的次数、子程序的数量或者模块的数量来对每一个任务提供基于函数的分析。例如,在一个实施例中,所述第一任务可包括多个函数调用且所述处理单元110可用于为每一个函数调用提供标签(tag)。具体而言,所述处理单元110在第二任务切换发生之前的每次函数调用被执行时为第一函数调用产生所述标签以用于对所述第一函数调用计数,并读取为所述第一函数调用的发生进行计数的计数值,以及当所述第二任务切换发生时将所述读取的值记录到所述存储 单元的日志中作为所述第一函数调用的一个记录。

图7为依据本发明的另一个实施例的在一个预定时间段内的一个日志的示意图。在此实施例中,假设任务T1和任务T2在包括有一个处理核心或CPU的处理单元中被切换,且任务T1包括两个函数调用FC0和FC1。如图7所示,日志500中示出任务T1被执行了1次,其中TiNjFml表示第j次外部访问任务Ti且第l+1次执行或调用函数调用FCm时的计数值。例如,T1N1F00和T1N1F10分别表示第1次外部访问任务T1且第1次调用函数调用FC0时的计数值和第1次外部访问任务T1且第1次调用函数调用FC1时的计数值,而T1N1F01表示第1次外部访问任务T1且第2次执行或调用函数调用FC0时的计数值。类似的,任务T1中的每一个函数调用期间发生的事件的总数可通过将日志中与所述任务T1的所述函数调用相关的计数值进行求和的方式来计算。由此,软件工程师可根据任务T1中的所有函数调用期间已发生的事件总数来从这些所有的函数调用中选择一个函数调用用于任务T1的进一步优化。

因此,根据本发明的非计算机可读存储介质,计算机系统及相关的对任务的性能监控的方法,在任意一个预定时间段内发生在每一个任务中的外部访问事件的数量可精确地确定,因此,可为任务性能优化(performance optimization)提供有用的信息。此外,本发明的方法可被包括一个或多个处理核心的处理单元所执行用于对任意预定时间段内任一个处理核心或所有处理核心中的每一个任务发生的外部访问的次数进行计数,以发现开销瓶颈(overhead bottleneck)的任务,以便调整和增强用于任务执行和调试的整体系统性能。

本发明所描述的任务的性能监控的方法的实施例,或者所述实施例的特定方面或特定部分,可实施于逻辑电路中,或者可以程序代码(也即,指令)的形式内嵌于有形的媒介(例如,软盘、只读光盘、硬盘、或者其他任意的机器可读存储介质)中,其中,当所述程序代码被设备(例如,智能电话、移动电话、或者类似设备)装载并执行,所述设备变为实施本发明的一个装置。本发明所揭露的方法也可表现为程序代码的形式而在传输媒介(例如,电线或电缆,光纤,或其他传输形式)之间被传送,其中,当所述程序代码被一个设备接收、装载并执行,所述设备变为实施本发明的一个装置。当实施于一个通用处理器上,所述程序代码连同所述处理器形成一个运作类似于特定逻辑电路的独立的装置。

虽然本发明已经通过举例的方式以及根据优选实施例作了描述,但应当理 解的是本发明不限于此。本领域技术人员还可以做各种变化和修改而不脱离本发明的范围和精神。

权利要求书中用以修饰元件的“第一”、“第二”等序数词的使用本身未暗示任何优先权、优先次序、各元件之间的先后次序、或所执行方法的时间次序,而仅用作标识来区分具有相同名称(具有不同序数词)的不同元件。

本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号