CN1834904B - 确定处理器在执行一个代码部分中消耗的实际时间量 - Google Patents

确定处理器在执行一个代码部分中消耗的实际时间量 Download PDF

Info

Publication number
CN1834904B
CN1834904B CN2006100045008A CN200610004500A CN1834904B CN 1834904 B CN1834904 B CN 1834904B CN 2006100045008 A CN2006100045008 A CN 2006100045008A CN 200610004500 A CN200610004500 A CN 200610004500A CN 1834904 B CN1834904 B CN 1834904B
Authority
CN
China
Prior art keywords
time
information
processor
code section
interval
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.)
Expired - Fee Related
Application number
CN2006100045008A
Other languages
English (en)
Other versions
CN1834904A (zh
Inventor
B·M·诺尔特
M·D·菲尔兹
R·T·沃戴克
S·M·卡洛尔
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1834904A publication Critical patent/CN1834904A/zh
Application granted granted Critical
Publication of CN1834904B publication Critical patent/CN1834904B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • G06F11/3419Recording 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 by assessing time
    • G06F11/3423Recording 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 by assessing time where the assessed time is active or idle time
    • AHUMAN NECESSITIES
    • A44HABERDASHERY; JEWELLERY
    • A44BBUTTONS, PINS, BUCKLES, SLIDE FASTENERS, OR THE LIKE
    • A44B19/00Slide fasteners
    • A44B19/42Making by processes not fully provided for in one other class, e.g. B21D53/50, B21F45/18, B22D17/16, B29D5/00
    • A44B19/60Applying end stops upon stringer tapes

Abstract

本发明提供确定处理器在执行代码部分中消耗的实际时间量的系统和方法。代码部分的实际执行时间可通过将对应于代码部分的上下文切换和/或额外开销时间纳入考虑范围来准确地确定。确定代码部分的实际执行时间可包括记录在代码部分的执行期间所发生的上下文切换和时间值。此信息以及额外开销测量可被用来生成代码部分的实际执行时间,如将在以下更加详细地讨论。例如,可从经过时间减去上下文切换所导致的换出时间间隔和与时间测量相关联的额外开销时间来得到代码部分的实际执行时间。

Description

确定处理器在执行一个代码部分中消耗的实际时间量
背景技术
通常,在软件应用程序的开发期间,要对应用程序的一个或多个部分执行性能测试。这一测试常常涉及测量处理器执行软件应用程序的代码的一个或多个部分(例如,函数、过程或其它逻辑组件)所花费(即,消耗)的时间量。例如,可通过记录代码部分执行开始的时间和代码部分执行结束的时间来确定这一时间量。这些时间常常是通过在软件应用程序内的位置(例如,代码部分的开始和结束)包括探针来记录的,执行这些探针导致这些时间值被记录。
只基于代码部分执行开始和结束的时间来确定执行时间量不是处理器在执行该代码部分中所消耗的实际时间量的准确表示。记录时间值本身也消耗时间,包括读时间值所需的时间以及将时间值写(即,记录)到诸如易失性存储器或非易失性存储介质等记录介质中所需的时间。获得(包括读和记录)时间值所消耗的时间在本文中称为“额外开销”或“额外开销时间”。
例如,开始和结束时间测量可能指示一代码部分消耗了800个处理器周期。但是,记录开始时间可能花了三个处理器周期。由此,处理器在执行该代码部分中所消耗的实际时间量(假定没有其它诸如以下将讨论的上下文切换等变数)是800-3=797个处理器周期。应当认识到,获得结束时间中所消耗的处理器周期不影响所测量的代码部分执行时间的准确性。这是因为结束时间的获得时间是在被记录的结束时间本身之后才发生的。
另一个问题在多任务操作系统(OS)中出现。多任务OS通过交替或交织不同线程的执行,在处理器(例如,中央处理单元(CPU)或微处理器)上模拟不同处理线程的并发操作。在一个线程执行了相对很短的一段时间(常被称为“时间片”)以后,OS中断处理器并将其上下文调整到一不同的线程。将处理器的上下文从一个线程调整或切换到另一个是在本文中被称为“上下文切换”的事件。为代码部分执行的开始和结束时间记录的时间值并没有将其中在开始时间和结束时间之间是否发生了一次或数次上下文切换纳入考虑范围。如果在此时间间隔期间发生了一次或多次上下文切换,则该时间间隔就不是处理器执行该代码部分花费了多少时间的准确表示。即,该时间间隔所反映的时间段将比处理器在执行该代码部分本身中实际消耗的时间段长。
发明内容
申请人认识到需要一种用于确定处理器在执行代码部分、特别是当在多任务操作系统上执行时所消耗的实际时间量的可靠系统和方法。
由此,本文中描述了确定处理器在执行代码部分中消耗的实际时间量的系统和方法。如在本文中所使用,代码部分的“活动时间”是指处理器在执行该代码部分中所消耗的实际时间量。代码部分的活动时间可通过将对应于该代码部分的上下文切换和/或额外开销时间纳入考虑范围来准确地确定。
如在本文中所使用,代码部分的“经过时间”是指在该代码部分执行的开始和结束时间之间经过的绝对时间(即,由所记录的该代码的执行开始和结束时间所定义的时间间隔)。代码部分的经过时间可包括处理器在换出间隔期间所消耗的时间。如本文中所使用,“换出间隔”是指在经过时间间隔期间发生的时间间隔,在该时间间隔期间,处理器执行不同于对应于正被测量的代码部分的处理线程的另一处理线程。经过时间还可包括获得代码部分的开始和结束时间值所导致的额外开销时间。此外,应当理解,代码部分可包括除导致记录开始和结束时间以外的其它探针。例如,可能有其它探针被放置在正被测量的代码部分内的其它代码部分(例如,函数、过程或其它逻辑组件)的开始和结束处。执行这些其它探针产生经过时间内的其它额外开销时间。
确定代码部分的活动时间可包括记录在该代码部分的执行期间所发生的上下文切换和时间值。此信息以及额外开销测量可被用来生成代码部分的活动时间,如将在以下更加详细地描述。例如,可从经过时间减去上下文切换所导致的换出时间间隔以及与时间测量相关联的额外开销时间来得到代码部分的活动时间。
在本发明的一个实施例中,多任务操作系统的处理器在执行第一处理线程的一个代码部分中所消耗的实际时间量被确定。指示定义该代码部分的执行开始和结束时间的第一时间间隔的第一信息被接收。指示在第一时间间隔内所发生的、期间处理器执行不同于第一处理线程的处理线程的一个或多个第二时间间隔的第二信息被接收。基于第一和第二信息,执行该代码部分中所消耗的实际时间量被确定。
在此实施例的一个方面,从第一时间间隔减去了这一个或多个第二时间间隔的总合时间。
在此实施例的另一个方面,指示在第一时间间隔期间获得第一信息中所消耗的额外开销时间的第三信息被接收。确定实际时间量包括从第一时间间隔减去该额外开销时间以及这一个或多个第二时间间隔的总合时间。
在此实施例的另一个方面,第二信息包括多个信息元素。每个第一信息元素指定一特定时间、在该特定时间处理器从其切换上下文的旧线程、以及在该特定时间处理器将上下文切换到的新线程。确定实际时间量包括基于这些信息元素,为这一个或多个第二时间间隔中的每一个确定该第二时间间隔的开始和结束时间。
在此实施例的又一个方面,第一信息包括多个第一信息元素,每个第一信息元素指定一时间、处理线程及事件类型。确定实际时间量包括基于这多个第一信息元素确定第一时间间隔的开始和结束时间的动作。
在此实施例的另一个方面,第二信息包括多个第二信息元素。每个第二信息元素指定一特定时间、在该特定时间处理器从其切换上下文的旧线程、以及在该特定时间处理器将上下文切换到的新线程。包括一个或多个第三信息元素的第三信息被接收,其中每个第三信息元素指定在执行一种类型的事件中所消耗的时间。确定实际时间量包括基于这些第二信息元素,为这一个或多个第二时间间隔中的每一个确定该第二时间间隔的开始时间和结束时间。确定实际时间量还包括从第一和第二信息元素确定处理器在获得第一信息中所消耗的总的额外开销时间,以及确定执行该代码部分中所消耗的实际时间量。
在另一个方面,在计算机系统上执行上述实施例的一个或多个上述动作和/或方面。
在本发明的另一个实施例中,提供了一种计算机程序产品。该产品包括计算机可读介质以及存储在该计算机可读介质上的计算机可读信号,这些信号定义了在由计算机执行时将指示计算机执行在以上段落中所描述的本发明的实施例的方法和/或在以上段落中所描述的本发明的一个或多个方面的指令。
在本发明的另一个实施例中,提供一种用于确定多任务操作系统的处理器在执行第一处理线程的一个代码部分中所消耗的实际处理器时间量的系统。该系统包括实际时间生成器,用于接收指示定义代码部分执行开始时间和结束时间的第一时间间隔的第一信息,接收指示在第一时间间隔内发生的、期间处理器执行不同于第一处理线程的另一处理线程的一个或多个第二时间间隔的第二信息,以及基于第一和第二信息,生成执行该代码部分中所消耗的实际处理器时间量。
在此实施例的一个方面,实际时间生成器用于从第一时间间隔减去这一个或多个第二时间间隔的总合时间。
在此实施例的另一个方面,实际时间生成器用于接收指示在第一时间间隔期间获得第一信息中所消耗的额外开销时间的第三信息,以及从第一时间间隔减去该额外开销时间以及这一个或多个第二时间间隔的总合时间。
在此实施例的另一个方面,第二信息包括多个信息元素。每个第一信息元素指定一特定时间、在该特定时间处理器从其切换上下文的旧线程、以及在该特定时间处理器将上下文切换到的新线程。实际时间生成器用于基于这些信息元素,为这一个或多个第二时间间隔中的每一个确定该第二时间间隔的开始和结束时间。
在此实施例的又一个方面,第一信息包括多个第一信息元素,每个第一信息元素指定一时间、处理线程及事件类型。实际时间生成器用于基于这多个第一信息元素确定第一时间间隔的开始和结束时间。
在此实施例的另一个方面,第二信息包括多个第二信息元素。每个第二信息元素指定一特定时间、在该特定时间处理器从其切换上下文的旧线程、以及在该特定时间处理器将上下文切换到的新线程。实际时间生成器用于接收包括一个或多个第三信息元素的第三信息,其中每个第三信息元素指定在执行一种类型的事件中所消耗的时间。实际时间生成器用于基于这些第二信息元素,为这一个或多个第二时间间隔中的每一个确定该第二时间间隔的开始时间和结束时间,从第一和第二信息元素确定处理器在获得第一信息中所消耗的总的额外开销时间,以及基于在动作(C)(1)-(C)(3)中所作的确定,来确定执行该代码部分中所消耗的实际时间量。
当结合附图考虑以下对本发明、包括对本发明的各方面和实施例的详细描述,本发明的其它优点、新颖特征和目的将会明确,其中附图是示意性的,而并不旨在按比例绘制。在附图中,不同的图中所示出的每个完全相同或几乎相同的组件由单个附图标记表示。为清楚起见,在不必说明即可允许本领域普通技术人员理解本发明的地方,每个图中的每个组件并不是都被标记,本发明的每个实施例或方面的每个组件也不是都被示出。
附图说明
图1是根据本发明的一些实施例示出一代码部分的执行的经过时间和活动时间的示例的时序图;
图2是根据本发明的一些实施例示出一种用于确定处理器在执行代码部分期间所消耗的实际时间的方法的示例的流程图。
图3是根据本发明的一些实施例表示代码的线程的示例的伪码;
图4是根据本发明的一些实施例示出表示计时器测量的信息元素表的示例的框图;
图5是根据本发明的一些实施例示出表示上下文切换事件的信息元素表的示例的框图;
图6是根据本发明的一些实施例示出包括多个表示额外开销测量的信息元素的表的示例的框图;
图7是根据本发明的一些实施例示出一种基于计时器测量、上下文切换事件和额外开销测量确定处理器在执行代码部分中消耗的实际时间的方法的示例的流程图;
图8是根据本发明的一些实施例示出一种用于确定处理器在执行一代码部分中所消耗的实际时间的系统的示例的框图;
图9是根据本发明的一些实施例示出可在其上实现本发明的一些实施例的计算机系统的示例的框图;以及
图10是根据本发明的一些实施例示出可作为实现本发明的一些实施例的计算机系统的部件使用的存储系统的示例的框图。
具体实施方式
本发明的实施例的功能和优点将从下述示例中更加充分地理解。以下示例旨在便于更好地理解本发明的益处及说明本发明的益处,但并不例示本发明的完整范围。
如本文中所使用,无论是在书面描述还是在所附权利要求书中,术语“包含”、“包括”、“携带”、“具有”、“含有”、“涉及”等都应被理解为是开放式的,即,意味着包括而非限于。只有过渡语“由……组成”和“本质上由……组成”才应当是封闭式或半封闭式的过渡语,如美国专利局专利审查过程手册(第八版,修订2,2004年5月)第2111.03节中就权利要求书所阐述。
示例
图1是示出代码部分的执行的经过时间和活动时间的示例的时序图100。图100纯粹是一代码部分的时序图的示例性实施例,而并不试图限制本发明的范围。例如图100的变体等这样的图的许多其它实现中的任何一种都是可能的,并旨在落入本发明的范围之内。
时间轴112示出时序图100表示从0到12毫秒(ms)的一段时间。应当认识到,可使用例如处理器周期等其它时间单位来示出这一时序图。图形102示出处理器在执行线程1的时间,从1.5-3ms,以及从6-9ms。图形104示出从0.5-1.5ms及从9-10ms获得的指示代码部分的开始和结束执行时间的计时器读。因此,图形104表示为该代码部分获得时间值中的额外开销。
图形106示出期间处理器在执行不同于线程1的一个或多个线程的换出时间间隔。
基于图形102、104和106,经过时间间隔(图形108)在0.5ms开始并在9.0ms结束,这产生了8.5ms的经过时间。时序图100示出,基于图形102-108,代码部分的活动时间(图形110)是(3-1.5)+(9-6)=4.5ms。现在将参考图2-8描述用于确定图100中所示的代码部分的活动时间的本发明的实施例。
图2是示出确定处理器在执行代码部分中消耗的实际时间的方法200的示例的流程图。方法200纯粹是确定代码部分的实际执行时间的方法的一个示例性实施例,而并不试图限制本发明的范围。例如方法200的变体等这一方法的许多其它实现的任何一种都是可能的,并且旨在落入本发明的范围之内。
在动作202,为代码部分记录计时器测量。例如,该代码部分所属的线程可在一个或多个位置包括探针,这些位置包括标记该代码部分的开始和结束的位置,还可能包括该代码部分内的位置(例如,其它逻辑组件的开始和结束)。在该代码部分的执行期间,可在每个探针位置处进行计时器测量。这些测量可被记录在记录介质上,诸如本地(例如,易失性)存储器中的临时缓冲区内或诸如磁盘等非易失性存储介质上。表示计时器测量的信息单位的示例在以下参考图4描述。
暂时离开图2,图3是表示代码的线程300的示例的伪码。代码300纯粹是代码线程的示例,而并不试图限制本发明的范围。例如线程300的变体等代码线程的许多其它的实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。
图3和即将讨论的图4-6在整个说明书中将作为可从其确定代码部分的活动时间的信息的非限制性示例而被参考。应当认识到,提供这些示例是出于说明目的,且它们并不试图限制本发明的范围。其它信息也可被使用。
线程300包括代码部分302,它包括函数F(),其中F()包括函数G()。用于记录函数F()的开始和结束(也是代码部分302的开始和结束)的探针可被放在代码部分302内的位置304和306处。此外,指示函数G()执行开始和结束的探针可被放在位置308和310处。
图4是示出表示计时器测量的信息元素表400的示例的框图。图4纯粹是表示计时器测量的信息元素表的示例性实施例,而并不试图限制本发明的范围。例如表400的变体等这样的表的许多其它实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。例如,表400可包括多于或少于图4中所示的条目和列,并且各条目和列可按不同顺序排列。
每个信息元素可包括时间值字段402、线程ID字段404和事件字段406。字段402(及表500的字段502和表600的字段604)中所使用的时间单位是处理器(例如,CPU)周期。但是,应当认识到,这些字段中所使用的时间单位可以是诸如毫秒等许多其它类型的单位中的任何一种。例如,信息元素408指定在线程1中,在900个处理器周期处进入函数F()。执行在以上参考图3所描述的代码部分302的位置304处的探针可产生信息元素408。应当认识到,尽管在本文中所描述的多个示例中,处理器周期是时间单位,但是也可使用其它时间单位。
又如,信息元素410指定在线程2中,在1010ms进入函数S()。此外,代码部分302的位置308、310和306处的探针分别可产生信息元素516、520和522。
回到图2,在动作204,上下文切换事件可被记录。即,从一个线程到另一个的处理器上下文的切换可被记录。上下文被切换到的线程或者从其切换上下文的线程中的一个可以是包括该代码部分的线程,而上下文切换到其中或从其切换上下文的一个或多个线程可以是不同于包括该代码部分的线程的另一线程。在一些操作系统上(例如,可从Microsoft公司购买的
Figure G2006100045008D00071
),可提供使上下文切换事件能被捕捉的应用程序编程接口(API)。
如本文中所使用,“应用程序编程接口”或“API”是一个或多个计算机可读指令的指令集,它提供对一个或多个其它定义函数的计算机可读指令的指令集的访问,以使这些函数可被配置成结合应用程序在计算机上被执行。API可被视为应用程序和特定计算机环境或平台(例如,以下所讨论的任何一个)之间的“胶合物”,并可使程序员能够编出在一个或多个特定计算机平台上或在一个或多个特定计算机环境中运行的应用程序。
例如,包括Windows事件跟踪(ETW)API,它提供用于记录上下文切换事件的特征。此特征可被启用(即,开启)以使其记录上下文切换事件(例如,记录到本地存储器缓冲中或磁盘上)。因此,在OS上多个线程的并行执行期间,上下文切换事件、包括在代码部分执行期间的上下文切换事件可被记录。现在将参考图5描述表示上下文切换事件的信息元素的示例。
暂时离开方法200,图5是示出表示上下文切换事件的信息元素表500的示例的框图。表500纯粹是表示上下文切换事件的信息元素表的示例性实施例,而并不试图限制本发明的范围。诸如表500的变体等这样的表的许多其它实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。例如,表500可包括其它条目和/或列,并且各条目和列可按不同方式来组织。
每个信息元素可在字段502中指定一特定时间值,在旧线程ID字段504中指定从其切换上下文的线程的线程ID,并在新线程ID字段506中指定上下文被切换到的线程的线程ID。例如,信息元素508指示,在1000个处理器周期(例如,从预定的开始时间起)处,上下文被从线程1切换到线程2,而信息元素610指示在1028个处理器周期处,上下文被从线程2切换到线程3。
在一些实施例中,不是使用字段504和506,而是每个条目可包括单个指定线程ID的字段,以及另一指定指示该线程ID所标识的线程是被切换到其中(即,换入)还是从其切换(即,换出)的值(例如,标志)的字段。条目的其它实施例也可被使用。
回到图2,在动作206,特定类型的事件(例如,函数进入、函数退出及其它类型的事件)的额外开销测量可被获得。这些测量可从较早时在例如受控的测试环境中对不同事件类型所作的先前的测量获得。或者,额外开销测量可在代码部分的执行被测量期间被测量和记录。现在将参考图6描述表示额外开销测量的信息元素的示例。
图6是示出包括多个表示额外开销测量的信息元素的表600的示例的框图。表600纯粹是表示额外开销测量的信息元素表的示例性实施例,而并不试图限制本发明的范围。诸如表600的变体等这样的表的许多其它实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。例如,表600可包括其它条目和/或列,并且各条目和列可按不同方式来组织。
表600可包括信息元素606和608,其中每个信息元素具有指定事件类型的事件类型字段602以及指定与事件类型相关联的额外开销时间的额外开销时间字段604。例如,信息元素606指示函数进入事件类型有3个处理器周期的额外开销时间,而信息元素608指示函数退出事件类型具有2个处理器周期的额外开销。条目606和608假定每次进入或退出函数时分别消耗相同的时间量(分别是3个和2个处理器周期)。但是,在一些实施例中,额外开销可在每次进入或退出函数时被测量和记录,并且此信息可用不同于表600中所示的格式来记录。
回到图2,在动作208,可基于计时器测量、上下文切换事件和额外开销测量,以例如以下参考图7所描述的方式来确定代码部分的实际时间。方法200或其部分可使用以下参考图8所描述的系统800来实现。
方法200可包括其它动作。此外,作为方法200的一部分所执行的动作的顺序并不局限于图2中所示的顺序,因为这些动作可按其它顺序来执行和/或其中一个或多个动作可串行或至少部分地并行执行。例如,可与作为动作202的一部分记录一个或多个计时器测量并行地或在其之前记录一个或多个上下文切换事件作为动作204的一部分。
图7是示出例如作为执行方法200的动作208的一部分,基于计时器测量、上下文切换事件和额外开销测量确定处理器执行代码部分中所消耗的实际时间的方法700的示例的流程图。方法700纯粹是确定处理器在执行代码部分中消耗的实际时间的方法的一个示例性实施例,而并不试图限制本发明的范围。诸如方法700的变体等这样的方法的许多其它实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。方法700及其动作可使用以下参考图8所描述的系统800的一个或多个元件来实现。
在动作702,可从计时器测量确定表示代码部分的经过时间的时间间隔。例如,给定一组计时器测量(例如,在动作202所记录的那些测量)和线程标识符,即可确定表示所标识的线程的代码部分的经过时间的时间间隔。
例如,使用表400中所提供的信息,线程ID为1的线程表示图3中所示的线程300。动作702可包括以下。表400中不对应于线程1的信息元素可被移除(例如,信息元素410、412、414和418),而其余信息元素可按时间值字段402排序。选择已排序的信息元素所表示的最早时间值和最晚时间值来分别定义经过时间间隔的开始时间和结束时间。例如,对表400的信息元素应用动作702可导致(900,1550)的经过时间间隔。动作702可由以下参考图8所描述的经过时间间隔生成器830执行。
在动作704,可从计时器测量和额外开销测量(例如,分别在动作202和206记录与获得的计时器测量和额外开销测量)确定表示计时器测量的额外开销的一组时间间隔。即,与正被讨论的线程对应的每个计时器测量相关联的额外开销时间可被确定和表示为时间间隔。使用图3、4和6的示例,动作704可包括首先移除表500中不对应于线程1的信息元素,然后其余信息元素可按时间值字段502排序。对于每个对应于线程1的信息元素,与事件字段406中所标识的事件相关联的额外开销可从表600确定。例如,信息元素508对应于进入函数F()事件,该事件是函数进入事件类型。表600的信息元素606指示与函数进入事件类型相关联的额外开销是三个处理器周期。额外开销时间间隔随即可被定义如下:(时间值,时间值加上额外开销时间)。因此,对于信息元素408,可得到额外开销时间间隔(900,903)。
又如,信息元素520指定退出函数G()事件,该事件具有函数退出的事件类型。表600的信息元素608指示函数退出事件类型具有两个处理器周期的额外开销。由此,动作702可包括从信息元素420得到额外开销时间间隔(1500,1502)。应当认识到,动作704可不包括为指定由已排序信息元素(即,对应于正被讨论的线程的信息元素)所指定的时间的最后时间的时间测量信息元素指定额外开销时间间隔。此信息元素可被排除在动作704以外是因为与这一测量时间相关联的额外开销时间不会对处理器在执行代码部分中消耗的实际时间添加任何额外开销。即,这一最后时间测量指示经过时间的结束,因此获得这一结束时间测量中的额外开销发生在被记录的结束时间本身以后,因此不会影响活动时间。
因此,对表400和600的信息元素执行动作704可导致一组额外开销时间间隔:{(900,903),(1200,1203),(1500,1502)}。
在动作706,可从诸如在动作204记录的上下文切换事件等上下文切换事件确定一组换出时间间隔。换出时间间隔表示在经过时间期间的时间间隔,期间处理器正在执行不同于该代码部分的线程的另一线程。例如,在图1的时序图100中,图形106指示从3ms到6ms的换出时间间隔。
使用图5的表500的示例来确定线程1的一组换出时间间隔,表500中不在字段604或606中引用线程1的信息元素被移除。其余上下文切换信息元素可按时间字段602排序。对应于从线程1切换到另一线程的每个上下文切换事件(即,“换出事件”)可被标识(例如,由信息元素608和616表示的上下文切换事件)。对于其中每一个换出事件,切换回线程1的对应的上下文切换事件(即,换入事件)可被标识。对于由信息元素608和616所表示的换出事件,对应的换入事件可被标识为由信息元素614和618所表示的事件。每个换出事件/换入事件对可定义一换出时间间隔。因此,对表500中所表示的上下文切换事件执行动作706可导致一组换出时间间隔:{(1000,1190),(1225,1411)}。
在动作708,处理器在执行代码部分中所消耗的实际时间量可从经过时间、额外开销时间间隔集与换出时间间隔集来确定。例如,可从经过时间减去所有额外开销时间间隔和所有换出时间间隔所定义的累计时间来得到代码部分的活动时间。即,活动时间等于经过时间减去(额外开销时间间隔加上换出时间间隔)。
使用来自上述动作702、704和706的示例性结果,线程300的代码部分302的活动时间:
=650-[(900,903)+(1200,1223)+(1500,1502)+(1000,1190)+(1225,1411)]
=650-(3+3+2+190+186)
=650-384
=266。
因此,对图3-6中所提供的信息应用方法700得到266个处理器周期的值作为处理器在执行代码部分302中消耗的实际时间。
方法700可包括其它动作。此外,作为方法700的一部分所执行的动作的顺序并不局限于图7中所示的顺序,因为这些动作可按其它顺序来执行和/或其中一个或多个动作可被串行或至少部分地并行执行。例如,动作702-706中的任何一个可在另一个以前、以后或与之并行执行。
方法200和700及其动作、以及这些方法和这些动作的各种实施例及变体可由在诸如非易失性记录介质、集成电路存储器元件等一个或多个计算机可读介质或其组合上有形地具体化的计算机可读信号个别或结合地定义。计算机可读介质可以是可由计算机访问的任何可用介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD-ROM、数字多功能盘(DVD)或其它光存储,磁带盒、磁带、磁盘存储或其它磁存储设备,其它类型的易失性和非易失性存储器,任何其它可被用来存储所需信息并可由计算机访问的介质,以及前述的任何适当组合。
通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递介质。术语“已调制数据信号”是指以在信号中将信息编码的方式设置或改变其一个或多个特性的信号。作为示例,而非限制,通信介质包括诸如有线网络或直接连线连接等有线介质,诸如声学、RF、红外和其它无线介质等无线介质,其它类型的通信介质,以及前述的任何适当组合。
一个或多个计算机可读介质上所包含的计算机可读信号可定义指令为一个或多个程序的部分,当计算机执行这些指令时,指示计算机执行本文中所描述的一个或多个功能(例如,方法500、方法700或前述的任何动作)和/或其各种实施例、变体和组合。此类指令可用多种编程语言中的任何一种来编写,例如,Java、J#、Graphical Basic、C、C#或C++、Fortran、Pascal、Eiffel、Basic、COBOL、其它编程语言,或上述的各种组合中的任何一种。其上包含此类指令的计算机可读介质可驻留在本文中所描述的任一系统800、900和1000的一个或多个组件上,可被分布在一个或多个此类组件上,并可在其间转移。
计算机可读介质可以是便携式的,从而存储在其上的指令可被加载到任何计算机系统资源上以实现本文中所讨论的本发明的诸方面。此外,应当认识到,上述存储在计算机可读介质上的指令并不局限于被具体化为在主计算机上运行的应用程序的一部分的指令。相反,这些指令可被具体化为可被使用以将处理器编程为实现以上所讨论的本发明的诸方面的任何类型的计算机代码(例如,软件或微码)。
应当认识到,例如参考图9和10所描述的执行本文中所描述的功能的计算机系统等计算机系统的任何单个组件或多个组件的集合一般可被视为控制这些功能的一个或多个控制器。这一个或多个控制器能用许多方式来实现,诸如用专用硬件和/或固件、使用被编程为使用微码或软件来执行上述功能的处理器,或前述的任何适当组合。
图8是示出一种用于确定处理器在执行一个代码部分中消耗的实际时间的系统800的示例的框图。系统800可实现方法200和/或方法700或其部分。系统800纯粹是用于确定处理器在执行代码部分中消耗的实际时间的系统的一个示例性实施例,而并不试图限制本发明的范围。例如系统800的变体等这样的系统的许多其它实现中的任何一种都是可能的,并且旨在落入本发明的范围之内。
系统800可包括以下任何元件:处理器816、记录介质818、活动时间生成器828以及其它组件。处理器816可以是能够进行多线程执行的,并可被配置成并行接收一个或多个线程802、806和810。每个线程802、806和810分别可包括一个或多个探针805、808和812。线程802可包括代码部分804,该代码部分804可包括一个或多个探针805,可用来确定执行的活动时间。
处理器816可被配置成执行探针805、808和812,并且响应于此,如以上参考图2的动作202所描述地记录时间测量820。此外,处理器816可被配置成生成表示包括任何线程802、806和810在内的多个线程之间的上下文切换的上下文切换事件822。处理器816可响应于处理一个或多个API调用814,如以上参考图2中的动作204所描述地记录上下文切换事件822。例如,处理器816可由
Figure G2006100045008D00131
NT操作系统控制,它通过使用如上所述的ETW API来记录上下文切换事件。记录介质818上还可记录额外开销测量824。
活动时间生成器828可基于计时器测量820、上下文切换事件822和额外开销测量824生成给定线程的活动时间844。活动时间生成器828可包括以下任何组件:经过时间间隔生成器830、换出时间间隔生成器834、额外开销时间间隔生成器838、活动时间引擎842以及其它组件。
经过时间间隔生成器830可被配置成接收计时器测量820和线程ID 826,并如以上参考动作702所述地生成经过时间间隔832。
换出时间间隔生成器834可被配置成接收线程ID 826和上下文切换事件822,并如以上参考图7的动作704所述地生成换出时间间隔836。
额外开销时间间隔生成器838可被配置成接收线程ID 826、计时器测量820和额外开销测量824并如以上参考动作706所述地生成额外开销时间间隔840。
活动时间引擎842可被配置成接收经过时间间隔832、换出时间间隔836和额外开销时间间隔840并生成表示处理器816在执行代码部分804中消耗的实际时间的活动时间844。活动时间引擎842可被配置成如以上参考动作708所述地生成活动时间844。
系统800及其组件可使用各种技术中的任何一种来实现,包括软件(例如,C、C#、C++、Java或其组合)、硬件(例如,一个或多个专用集成电路)、固件(例如,电可编程存储器)或其任意组合。系统800的一个或多个组件可驻留在单个设备上(例如,计算机),或者其中一个或多个组件可驻留在若干单独的、离散的设备上。此外,每个组件可被分布在多个设备上,并且其中一个或多个设备可被互相连接。
此外,在包括系统800的一个或多个组件的一个或多个设备中的每一个设备上,每一个组件可驻留在系统的一个或多个位置。例如,这些系统的组件的不同部分可驻留在设备上的存储器(例如,RAM、ROM、磁盘等)的不同区域。这一个或多个设备中的每一个设备可包括诸如一个或多个处理器、存储器系统、磁盘存储系统、一个或多个网络接口、以及将各组件相互连接的一个或多个总线或其它内部通信链路等多个公知组件等等。系统100及其组件可使用诸如以下参考图9和10所描述的计算机系统等来实现。
根据本发明的各实施例可被实现在一个或多个计算机系统上。这些计算机系统可以是诸如基于Intel PENTIUM类型处理器、Motorola PowerPC、SunUltraSPARC、Hewlett-Packard PA-RISC处理器、可从Advanced Micro Device(AMD)购买的各种处理器中的任何一种、或任何其它类型的处理器等的通用计算机。应当认识到,一个或多个任意类型的计算机系统可被用来实现本发明的各实施例。
根据本发明的一个实施例的通用计算机系统被配置成执行上述一个或多个功能。应当认识到,该系统可执行其它功能,并且本发明并不局限于具有任何一个或一组特定功能。
例如,本发明的各个方面可被实现为在诸如图9中所示的通用计算机系统900中执行的专用软件。计算机系统900可包括连接到诸如磁盘驱动器、存储器或其它用于存储数据的设备等一个或多个存储器设备904的处理器903。存储器904通常被用来在计算机系统900的操作期间存储程序和数据。计算机系统900的组件可由互连机制905耦合,该机制可包括一个或多个总线(例如,在被集成在同一机器内的组件之间)和/或网络(例如,在驻留在若干单独的离散机器上的组件之间)。互连机制905使通信(例如,数据、指令)能在系统900的系统组件之间被交换。计算机系统900还包括例如键盘、鼠标、跟踪球、话筒、触摸屏等一个或多个输入设备902,以及例如打印设备、显示屏、扬声器等一个或多个输出设备901。此外,计算机系统900可包含将计算机系统900连接到通信网络的一个或多个接口(未示出)(除互连机制905以外,或作为其替换方案)。
在图10中更加详细地示出的存储系统906通常包括计算机可读并可写的非易失性记录介质1001,其中存储了定义要由处理器执行的程序的信号或存储在介质1001之上或之中要由程序处理的信息。该介质可以是例如磁盘或闪存。通常,在操作中,处理器使数据从非易失性存储介质1001中被读入允许由处理器以比访问介质1001的速度更快的速度访问的另一存储器1002中。此存储器1002通常是诸如动态随机存取存储器(DRAM)或静态存储器(SRAM)等易失性的随机存取存储器。它可位于存储系统906中(如图所示)或可位于系统存储器904中(未示出)。处理器903一般在集成电路存储器904、1002内操纵数据,然后在处理完成以后将数据复制到介质1001中。有各种公知技术用于管理介质1001和集成电路存储器元件904、1002之间的数据移动,并且本发明不限于此。本发明不局限于特定的存储器系统904或存储系统1006。
本发明的诸方面可用软件、硬件或固件、或其任意组合来实现。此外,本发明的这些方法、动作、系统、系统元件和组件可被实现为上述计算机系统的一个部分,或可被实现为独立组件。
尽管是以例示为可在其上实施本发明的各个方面的一类计算机系统的方式示出计算机系统900,但是应当认识到,本发明的诸方面不局限于被实现于如图9中所示的计算机系统上。本发明的各个方面可在具有不同于图9中所示的体系结构或组件的一个或多个计算机上实施。
计算机系统900可以是能使用高级计算机编程语言编程的通用计算机系统。计算机系统900还可使用专门编程的、专用的硬件来实现。在计算机系统900中,处理器903通常是诸如可从Intel公司购买的公知的Pentium类处理器等可购买的处理器。还有许多其它处理器可用。此类处理器通常在可以是例如可从Microsoft公司购买的
Figure G2006100045008D00151
Figure G2006100045008D00152
2000
Figure G2006100045008D00155
Figure G2006100045008D00156
操作系统,可从Apple Computer购买的MACOS系统X,可从Sun Microsystems购买的Solaris操作系统,可从各种来源得到的Linux以及可从各种来源得到的UNIX等操作系统上执行。各种其它操作系统中的任何一种可被使用。
处理器和操作系统一起定义了为其用高级编程语言编写应用程序的计算机平台。应当理解,本发明并不局限于特定计算机系统平台、处理器、操作系统或网络。同样,本领域技术人员应当明确,本发明并不局限于特定编程语言或计算机系统,并且其它适当的编程语言及其它适当的计算机系统也可被使用。
该计算机系统的一个或多个部分可被分布在耦合到一通信网络的一个或多个计算机系统(未示出)上。这些计算机系统也可以是通用计算机系统。例如,本发明的各个方面可被分布在配置成向一个或多个客户计算机提供服务的(例如,服务器)或作为分布式系统的一个部分执行总的任务的一个或多个计算机系统中间。例如,本发明的各个方面可在包括分布在执行根据本发明的各个实施例的各种功能的一个或多个服务器系统中间的组件的客户机-服务器系统上实施。这些组件可以是可执行的、中间的(例如,IL)或解释的(例如,Java)代码,它们使用通信协议(例如,TCP/IP)通过通信网络(例如,因特网)通信。
应当认识到,本发明并不局限于在任何一个或一组特定系统上执行,并且本发明并不局限于任何特定的分布式体系结构、网络、或通信协议。
本发明的各个实施例可使用诸如SmallTalk、Java、J#(J-Sharp)、C ++、Ada或C#(C-Sharp)等面向对象的编程语言来编程。其它面向对象的编程语言也可被使用。或者可使用功能的、脚本的和/或逻辑编程语言。本发明的各个方面可在非编程环境(例如,以HTML、XML或其它格式创建的文档,当在浏览器程序的窗口中查看这些文档时,它们呈现图形用户界面(GUI)的方面或执行其它功能)中实现。本发明的各个方面可被实现为编程的或非编程的元素,或其任何适当的组合。此外,本发明的各个实施例可使用可从Microsoft公司获得的Microsoft.NET技术实现。
在已描述了本发明的一些示例性实施例以后,本领域技术人员应当明确,前述纯粹是示例性而不是限制性的,它们仅是作为示例而给出的。许多修改和其它示例性实施例是在本领域普通技术人员范围之内的,并且构想它们落入本发明的范围之内。特别地,尽管本文中所给出的许多示例涉及方法动作或系统元件的特定组合,但是应当理解,那些动作和那些元件能以其它方式组合来实现相同的目的。仅结合一个实施例讨论的动作、元件和特征并不旨在被排除在其它实施例中的类似角色之外。此外,对于所附权利要求书中所述的一个或多个手段加功能限制,这些手段并不旨在被局限于本文中所解释的用于执行所述功能的手段,而是旨在将任何已知或有待开发的、用于执行所述功能的等效手段覆盖在范围之内。
在所附权利要求书中使用序数项“第一”、“第二”、“第三”等等来修饰权项元素本身并不意味着任何优先级、优先权、或是一个权项元素排在另一个之前、或者执行方法的动作的时间顺序,而是纯粹被用作标记以将具有特定名称的一个权项元素与另一具有相同名称(除了使用了序数项以外)的元素区别开来,以区别各权项元素。

Claims (9)

1.一种确定多任务操作系统的处理器在执行第一处理线程的一个代码部分中消耗的实际时间量的方法,所述方法包括以下动作:
(A)接收指示定义所述代码部分的执行开始时间和结束时间的第一时间间隔的第一信息;
(B)接收指示在所述第一时间间隔内所发生的一个或多个第二时间间隔的第二信息,其中在所述一个或多个第二时间间隔期间所述处理器执行不同于所述第一处理线程的处理线程;
(C)接收指示在所述第一时间间隔期间获得所述第一信息所消耗的额外开销时间的第三信息;以及
(D)基于所述第一和第二信息,确定执行所述代码部分中所消耗的实际时间量,包括从所述第一时间间隔减去所述额外开销时间以及所述一个或多个第二时间间隔的总合时间。
2.如权利要求1所述的方法,其特征在于,所述第二信息包括多个第二信息元素,每个所述第二信息元素指定一特定时间、在所述特定时间所述处理器从其切换上下文的旧线程、以及在所述特定时间所述处理器将上下文切换到的新线程,
其中动作(D)包括以下动作:(1)基于所述第二信息元素,为所述一个或多个第二时间间隔的每一个确定所述第二时间间隔的开始时间和结束时间的动作。
3.如权利要求1所述的方法,其特征在于,所述第一信息包括多个第一信息元素,每个所述第一信息元素指定一时间、一处理线程及一事件类型,
其中动作(D)包括以下动作:(1)基于所述多个第一信息元素确定所述第一时间间隔的开始时间和结束时间的动作。
4.如权利要求3所述的方法,其特征在于,所述第二信息包括多个第二信息元素,每个所述第二信息元素指定一特定时间、在所述特定时间所述处理器从其切换上下文的旧线程、以及在所述特定时间所述处理器将上下文切换到的新线程,
其中所述第三信息包括一个或多个第三信息元素,每个所述第三信息元素指定在执行一类事件中所消耗的时间,
其中动作(D)还包括以下动作:
(2)基于所述第二信息元素,为所述一个或多个第二时间间隔中的每一个确定所述第二时间间隔的开始时间和结束时间,
(3)从所述第一和第二信息元素确定所述处理器在获得所述第一信息中消耗的总的额外开销时间,以及
(4)基于在动作(D)(1)-(D)(3)中所作的确定,确定在执行所述代码部分中所消耗的实际时间量。
5.如权利要求1所述的方法,其特征在于,动作(A)-(D)是在计算机系统上执行的。
6.一种确定多任务操作系统的处理器在执行第一处理线程的一个代码部分中消耗的实际时间量的系统,包括:
用于接收指示定义所述代码部分的执行开始时间和结束时间的第一时间间隔的第一信息的装置;
用于接收指示在所述第一时间间隔内所发生的一个或多个第二时间间隔的第二信息的装置,其中在所述一个或多个第二时间间隔期间所述处理器执行不同于所述第一处理线程的处理线程;
用于接收指示在所述第一时间间隔期间获得所述第一信息所消耗的额外开销时间的第三信息的装置;以及
用于基于所述第一和第二信息,确定执行所述代码部分中所消耗的实际时间量的装置,进一步包括用于从所述第一时间间隔减去所述额外开销时间以及所述一个或多个第二时间间隔的总合时间的装置。
7.如权利要求6所述的系统,其特征在于,所述第二信息包括多个第二信息元素,每个所述第二信息元素指定一特定时间、在所述特定时间所述处理器从其切换上下文的旧线程、以及在所述特定时间所述处理器将上下文切换到的新线程,
其中用于基于所述第一和第二信息,确定执行所述代码部分中所消耗的实际时间量的装置包括用于基于所述第二信息元素,为所述一个或多个第二时间间隔确定所述第二时间间隔的开始时间和结束时间的装置。
8.如权利要求6所述的系统,其特征在于,所述第一信息包括多个第一信息元素,每个所述第一信息元素指定一时间、一处理线程及一事件类型,
其中用于基于所述第一和第二信息,确定执行所述代码部分中所消耗的实际时间量的装置包括用于基于所述多个第一信息元素确定所述第一时间间隔的开始时间和结束时间的装置。
9.如权利要求8所述的系统,其特征在于,所述第二信息包括多个第二信息元索,每个所述第二信息元素指定一特定时间、在所述特定时间所述处理器从其切换上下文的旧线程、以及在所述特定时间所述处理器将上下文切换到的新线程,
其中所述第三信息包括一个或多个第三信息元素,每个所述第三信息元素指定在执行一类事件中所消耗的时间,
其中用于基于所述第一和第二信息,确定执行所述代码部分中所消耗的实际时间量的装置还包括:
用于基于所述第二信息元素,为所述一个或多个第二时间间隔中的每一个确定所述第二时间间隔的开始时间和结束时间的装置,
用于从所述第一和第二信息元素确定所述处理器在获得所述第一信息中消耗的总的额外开销时间的装置,以及
用于基于所确定的所述第一时间间隔的开始时间和结束时间、所确定的所述第二时间间隔的开始时间和结束时间和所确定的所述处理器在获得所述第一信息中消耗的总的额外开销时间,确定在执行所述代码部分中所消耗的实际时间量的装置。
CN2006100045008A 2005-03-17 2006-02-15 确定处理器在执行一个代码部分中消耗的实际时间量 Expired - Fee Related CN1834904B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/082,398 2005-03-17
US11/082,398 US7774784B2 (en) 2005-03-17 2005-03-17 Determining an actual amount of time a processor consumes in executing a portion of code

Publications (2)

Publication Number Publication Date
CN1834904A CN1834904A (zh) 2006-09-20
CN1834904B true CN1834904B (zh) 2010-06-09

Family

ID=36314095

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100045008A Expired - Fee Related CN1834904B (zh) 2005-03-17 2006-02-15 确定处理器在执行一个代码部分中消耗的实际时间量

Country Status (7)

Country Link
US (1) US7774784B2 (zh)
EP (1) EP1703403B1 (zh)
JP (1) JP2006260542A (zh)
KR (1) KR101034409B1 (zh)
CN (1) CN1834904B (zh)
AT (1) ATE415662T1 (zh)
DE (1) DE602006003787D1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US8079031B2 (en) * 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7926040B2 (en) * 2006-09-06 2011-04-12 International Business Machines Corporation Method and system for timing code execution in a korn shell script
US8402463B2 (en) * 2006-10-30 2013-03-19 Hewlett-Packard Development Company, L.P. Hardware threads processor core utilization
US8185906B2 (en) * 2007-05-23 2012-05-22 Sap Ag Method and apparatus for dynamically adjusting thread pool
US20090132792A1 (en) * 2007-11-15 2009-05-21 Dennis Arthur Ruffer Method of generating internode timing diagrams for a multiprocessor array
CN101221528B (zh) * 2008-01-22 2010-06-16 中兴通讯股份有限公司 一种嵌入式操作系统调度性能的测试方法
KR101406693B1 (ko) * 2008-07-02 2014-06-12 고쿠리츠다이가쿠호진 토쿄고교 다이가꾸 실행시간 추정방법, 실행시간 추정 프로그램 및 실행시간 추정장치
KR101065436B1 (ko) 2010-12-07 2011-09-19 경상대학교산학협력단 불확실한 계산량을 가진 실시간 병렬 작업을 위한 멀티코어 프로세서의 확률적 스케줄링 방법
US8639991B2 (en) * 2010-12-17 2014-01-28 Sap Ag Optimizing performance of an application
US8769505B2 (en) * 2011-01-24 2014-07-01 Hewlett-Packard Development Company, L.P. Event information related to server request processing
KR101341562B1 (ko) 2011-12-15 2013-12-16 경상대학교산학협력단 변동하는 계산량을 갖는 실시간 작업을 위한 단일 코어 프로세서의 에너지 효율적 스케줄링 방법
US10268179B2 (en) * 2014-04-15 2019-04-23 Fuji Corporation NC machine tool
US9614724B2 (en) 2014-04-21 2017-04-04 Microsoft Technology Licensing, Llc Session-based device configuration
US9430667B2 (en) 2014-05-12 2016-08-30 Microsoft Technology Licensing, Llc Managed wireless distribution network
US10111099B2 (en) 2014-05-12 2018-10-23 Microsoft Technology Licensing, Llc Distributing content in managed wireless distribution networks
US9384334B2 (en) 2014-05-12 2016-07-05 Microsoft Technology Licensing, Llc Content discovery in managed wireless distribution networks
US9384335B2 (en) 2014-05-12 2016-07-05 Microsoft Technology Licensing, Llc Content delivery prioritization in managed wireless distribution networks
US9874914B2 (en) 2014-05-19 2018-01-23 Microsoft Technology Licensing, Llc Power management contracts for accessory devices
US9703681B2 (en) 2014-05-29 2017-07-11 Microsoft Technology Licensing, Llc Performance optimization tip presentation during debugging
US10037202B2 (en) 2014-06-03 2018-07-31 Microsoft Technology Licensing, Llc Techniques to isolating a portion of an online computing service
US9367490B2 (en) 2014-06-13 2016-06-14 Microsoft Technology Licensing, Llc Reversible connector for accessory devices
US9632915B2 (en) 2014-10-29 2017-04-25 Microsoft Technology Licensing, Llc. Historical control flow visualization in production diagnostics
US10165071B2 (en) * 2016-01-15 2018-12-25 Google Llc Client-side activity monitoring
CN108681486B (zh) * 2018-05-17 2020-08-28 重庆市通信建设有限公司 最优线程数量求取方法及装置
CN111414295B (zh) * 2020-03-09 2023-06-30 浙江大华技术股份有限公司 一种cpu占用率的统计方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1175731A (zh) * 1996-08-19 1998-03-11 三星电子株式会社 多任务计算系统环境中有效现场保存与恢复的装置和方法
EP0762286B1 (en) * 1995-08-24 2000-02-23 Sun Microsystems, Inc. Measuring workload usage of a central processing unit.
EP1174794A1 (de) * 2000-07-21 2002-01-23 Abb Research Ltd. Verwaltung der Prozessorzeit, die einem von mehreren Programm-Tasks für dessen Ausführung auf einem Prozessor zugeteilt wird
EP1391824A3 (de) * 2002-08-22 2004-09-22 Siemens Aktiengesellschaft Verfahren zur Messung der Nettolaufzeit eines Datenverarbeitungsprogramms

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03210643A (ja) * 1990-01-13 1991-09-13 Fuji Electric Co Ltd タスク実行時間測定方法
JP2520544B2 (ja) * 1991-09-26 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置
JP2712142B2 (ja) * 1992-01-30 1998-02-10 日本電気株式会社 実行時間測定方式
KR950011476A (ko) * 1993-10-28 1995-05-15 김중길 디클로페낙나트륨 사이클로덱스트린 포접화합물의 제조방법
JP3588485B2 (ja) * 1994-08-26 2004-11-10 富士通株式会社 プロセススケジューリング方式
DE69738832D1 (de) * 1996-03-28 2008-08-28 Hitachi Ltd Verfahren zum Planen von periodischen Prozessabläufen
JPH1011333A (ja) * 1996-06-24 1998-01-16 Nippon Denki Ido Tsushin Kk タスク別cpu使用率測定装置
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6009452A (en) * 1997-05-02 1999-12-28 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances
JP3199013B2 (ja) * 1998-01-26 2001-08-13 日本電気株式会社 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
US6754690B2 (en) * 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
KR100324962B1 (ko) * 1999-09-20 2002-02-28 이태용 고밀도 극세사 경편지 제조 방법
US6658654B1 (en) * 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
JP2002063049A (ja) * 2000-08-23 2002-02-28 Matsushita Electric Ind Co Ltd システム性能の見積もり方法
US6934936B2 (en) * 2001-02-01 2005-08-23 International Business Machines Corporation Apparatus and method for adaptive address-based historical utilization recording
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
JP4267462B2 (ja) * 2002-04-08 2009-05-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散エンタープライズ・アプリケーションにおける問題判別の方法およびシステム
US7426731B2 (en) * 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US7594234B1 (en) * 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7565659B2 (en) * 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
US7698686B2 (en) * 2005-04-15 2010-04-13 Microsoft Corporation Method and apparatus for performance analysis on a software program

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0762286B1 (en) * 1995-08-24 2000-02-23 Sun Microsystems, Inc. Measuring workload usage of a central processing unit.
CN1175731A (zh) * 1996-08-19 1998-03-11 三星电子株式会社 多任务计算系统环境中有效现场保存与恢复的装置和方法
EP1174794A1 (de) * 2000-07-21 2002-01-23 Abb Research Ltd. Verwaltung der Prozessorzeit, die einem von mehreren Programm-Tasks für dessen Ausführung auf einem Prozessor zugeteilt wird
EP1391824A3 (de) * 2002-08-22 2004-09-22 Siemens Aktiengesellschaft Verfahren zur Messung der Nettolaufzeit eines Datenverarbeitungsprogramms

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
同上.

Also Published As

Publication number Publication date
EP1703403B1 (en) 2008-11-26
US7774784B2 (en) 2010-08-10
ATE415662T1 (de) 2008-12-15
DE602006003787D1 (de) 2009-01-08
KR20060101230A (ko) 2006-09-22
CN1834904A (zh) 2006-09-20
JP2006260542A (ja) 2006-09-28
US20060212867A1 (en) 2006-09-21
EP1703403A1 (en) 2006-09-20
KR101034409B1 (ko) 2011-05-12

Similar Documents

Publication Publication Date Title
CN1834904B (zh) 确定处理器在执行一个代码部分中消耗的实际时间量
Matloff Introduction to discrete-event simulation and the simpy language
EP0042422B1 (en) Diagnostic circuitry in a data processor
CA1175573A (en) Method and apparatus for measurements of channel operation
CN102844744A (zh) 调试多线程代码
US7426684B2 (en) Lost-cycle measurement using cycle counter
CN101278259A (zh) 执行确定性处理的系统和方法
US20140215483A1 (en) Resource-usage totalizing method, and resource-usage totalizing device
US8700380B2 (en) Method for generating performance evaluation model
JP2022089162A (ja) グラフィック処理ユニットロング命令トレースを生成するための方法および装置
US20190138425A1 (en) Exception prediction before an actual exception during debugging
US7779230B2 (en) Data flow execution of methods in sequential programs
US8078590B2 (en) Data processing system
Estrin et al. Modeling, measurement and computer power
US20230109752A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
US7650539B2 (en) Observing debug counter values during system operation
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
US20170192878A1 (en) Separating Test Coverage In Software Processes Using Shared Memory
EP2056202A1 (en) Method for testing of a COM interface
US20150286551A1 (en) Method, device and computer program product for measuring user perception quality of a processing system comprising a user interface
Getz Wasm-R3: creating executable benchmarks of WebAssembly binaries via record-reduce-replay
Cho A Host Program Implementation for Linux File System Tracing Method Using the Kprobes Linux Dynamic Instrumentation System
CN117827564A (zh) 一种gpu测试方法、装置、存储介质及电子设备
CN117130899A (zh) 一种测试方法、装置、终端设备及介质
Du et al. Mixed-tool performance analysis on hybrid multicore architectures

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150504

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150504

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100609

Termination date: 20180215