多处理器/多核心计算系统的动态调优的制作方法

文档序号:14033643阅读:185来源:国知局
多处理器/多核心计算系统的动态调优的制作方法

本公开涉及多处理器和多核心计算系统,并且更具体地,涉及多处理器和多核心计算系统的动态调优以改进应用性能和可扩展性。



背景技术:

包括移动平台的计算机和通信系统被提供有越来越多数量的处理器(例如,中央处理单元或者cpu)和越来越多数量的集成在这些cpu上的处理器核心(例如,硬件核心)。通常这样做以用于通过增加的并行性来提供较大的计算功率。每个硬件核心还可以包括多个硬件线程(也被称为逻辑核心或者超线程)以进一步增加并行操作的数量。遗憾的是,软件应用经常不是被设计用于利用该并行性的,并且事实上,可能实际上因为硬件升级以提供更多并行处理能力而性能受损。这可以例如由软件的被分区出来以用于并行执行的各种组件(例如,进程和/或软件线程)之间的相对低效的同步引起。这还可以由对在这些组件之中共享有限资源的需求而引起。这些困难因此可以限制软件应用的可扩展性以仅基于增加的计算功率来处理增加的工作负载或吞吐量。

附图说明

随着下文的具体实施方式进行,并且根据对附图的引用,要求保护的主题的实施例的特征和优点将变得显而易见,在附图中,相似的附图标记描述相似的部分,并且其中:

图1示出了与本公开一致的示例实施例的顶级系统图;

图2示出了与本公开一致的一个示例实施例的框图;

图3示出了与本公开一致的另一示例实施例的框图;

图4示出了与本公开一致的一个示例实施例的操作的流程图;

图5示出了与本公开一致的另一示例实施例的操作的流程图;以及

图6示出了与本公开一致的另一示例实施例的平台的系统图。

虽然下文的具体实施方式将参照说明性实施例来进行,但是许多其替代、修改以及变型对于本领域技术人员而言将是显而易见的。

具体实施方式

总体地,本公开提供了用于多处理器和多核心计算系统(包括超线程系统)的动态调优的系统、设备、方法以及计算机可读介质,以改进应用性能和可扩展性并且减少系统功耗。如本文中使用的术语“可扩展性”是指软件应用的性能或吞吐量与所测量的处理器的利用率之间的关系(例如,某种程度的比例或线性)的存在。性能或吞吐量表示对由软件应用完成的工作的某种测量。

可以使软件应用分布用于在多个cpu、处理器核心以及硬件线程(或者逻辑核心)上执行,以便至少在某种程度上以并行的方式来执行。这些并行执行的组件可以包括例如进程和软件线程。可以对应用的执行进行剖析或者监测以评估性能并且检测可扩展性问题。如果处理器利用率以比应用吞吐量快的速率增加,则可以确定存在可扩展性问题,如以下更详细地解释的。例如,如果应用软件未被写入为以相对高效的方式来处理同步问题,并且因此消耗处理循环来等待同步而不是完成其预期的功能,则可扩展性问题可能发生。

可以执行分析来确定这些可扩展性问题的原因是与访问争用有关还是与对受约束的资源的共享有关。访问争用可以包括例如应用的并行组件之间的锁定争用或数据访问冲突,其中采用锁定(例如,自旋锁定或者其它这样的适合机制)来提供组件之间的同步。受约束的资源可以包括例如存储器高速缓存、执行管线缓冲器以及cpu和/或核心的其它硬件资源。可以基于该分析来执行动态调优(也被称为平衡或者再平衡)以包括将应用重新绑定至更少的cpu、禁用超线程、和/或禁用cpu的一些核心,如本文中将讨论的。

图1示出了与本公开一致的一个示例实施例的顶级系统图100。用户102可以与本地客户端系统104进行交互以通过网络110获取对远程服务器系统106的访问权。服务器系统106可以被配置为托管并执行一个或多个软件应用108。软件应用108可以是商业/企业软件应用,包括但不限于例如客户关系管理软件、企业资源规划软件、人力资本管理软件以及商业智能软件。服务器106可以被配置为向许多用户102和客户端系统104提供对该企业应用软件108的访问权。在一些实施例中,用户可以向部署在服务器106上的企业应用软件108提交请求,并且企业应用执行请求并将结果传送回用户。企业应用软件108还可以与其它服务器112进行通信,举例来说,例如数据库服务器。其它服务器112可以在服务器106的远处,并且因此它们之间的通信也可以通过网络110来进行。

服务器106可以包括多个cpu和处理核心,该多个cpu和处理核心中的任意一个可以进一步被配置用于超线程操作。服务器106还示出为包括动态调优电路114,其被配置为监测应用性能/吞吐量,确定可扩展性问题是否存在(由于争用还是约束问题),以及跨cpu和核心来平衡或者再平衡软件应用的分布,如以下描述的。因为调优可以在应用正在执行时执行(例如,实时地),所以调优被称为动态的。

虽然本文中对各种实施例的讨论可以指代执行商业/企业应用软件的服务器系统,但是将认识到,服务器106可以是任意类型的多处理器/多核心计算或通信平台,并且软件可以是涉及某种程度的网络通信的任意类型的软件。

图2示出了与本公开一致的一个示例实施例的框图200。服务器106示出为包括内核或者操作系统(os)206、网络接口208、一个或多个软件应用108以及动态调优电路114。动态调优电路114可以进一步包括剖析(或监测)电路202和调度电路204,其操作将在下面更详细地描述。服务器106还示出为包括一定数量(n)的cpu210,其中的每个可以包括一定数量(m)的处理核心212。每个核心继而可以被配置为执行多个硬件线程(例如,逻辑核心或超线程)。因此可以使软件应用108分布到在每个cpu、核心和/或逻辑核心上至少在某种程度上并行执行的组件部分(例如,进程、软件线程等)中。

内核206可以被配置为管理软件应用108的执行,并且使这些应用的组件进程分布在各种cpu210和核心212之中。内核206可以维持各种数据结构,举例来说,例如针对每个cpu的运行队列,该运行队列列出可以在该cpu上运行的进程。另外,内核可以维持与每个进程相关联的寄存器或位掩码,以指示进程可以在哪些核心上执行。

网络接口208可以被配置为通过网络110发送和接收分组(例如,数据分组和/或控制分组),该网络110允许在服务器106上的软件应用108与其它远程服务器或系统之间进行通信。网络接口208还可以被配置为测量网络业务(例如,在给定的时间段内发送和/或接收的分组的数量)。

现在参考图3,cpu210示出为包括多个核心212,每个核心进一步包括多个(k个)硬件线程或逻辑核心302。cpu210可以被配置为提供要由例如该cpu的核心212共享的公共资源310。核心212可以被配置为提供要由例如该核心的硬件(hw)线程302共享的公共资源304。

共享核心资源304的示例可以包括微架构指令管线资源,例如但不限于重新排序缓冲器、加载缓冲器、保留站以及1级和2级高速缓存。共享cpu资源310的示例可以包括最后一级高速缓存(llc)。

还可以针对每个cpu210提供性能计数器320(也被称为硬件计数器),并且该性能计数器被配置为提供与给定时间段中的各种类型的硬件利用事件或条件有关的事件计数或者其它统计值。在一些实施例中,性能计数器可以实现为与cpu集成在一起的硬件性能监测单元(pmu)的一部分,并且计数器可以体现在由pmu更新并且可由剖析电路202读取的寄存器和/或存储器位置中。例如,可以提供计数器以指示可以与指令管线暂停相关联的指令管线资源(缓冲器、高速缓存等)中的任意一个的利用率(或者可用容量)。可以提供其它计数器来对指示高速缓存处于修改的状态的高速缓存侦听响应进行计数,该修改的状态可以与存储器冲突和可能的锁定争用相关联。可以提供其它计数器来对进行高速缓存未命中率进行计数,该高速缓存未命中率可以指示高速缓存容量约束或者高速缓存冲突,这取决于其它性能计数器的值。还可以提供另外的其它计数器来追踪映射至存储器控制器的地址空间中的冲突,该存储器控制器促进llc在核心之间的共享。

可以采用许多类型的性能计数器,并且以上列表不旨在是穷尽性的。一些类型的计数器可以指示资源是受约束的(例如,指令重新排序缓冲器已满),而其它类型的计数器可以指示争用(例如,高速缓存侦听修改的状态)。在一些情况中,不同计数器的组合可以用于确定可扩展性问题是与争用有关还是与约束有关。例如,如果高速缓存未命中率增加,但是高速缓存侦听修改的状态计数器保持处于相对低的水平,则与访问冲突相比,高速缓存未命中更有可能是由于容量约束。

另外,网络接口208可以被配置为提供计数器以指示接收和/或发送的分组的数量,以用于测量网络业务。可以基于与应用相关联的网络业务的测量来估计该应用的吞吐量或性能,该测量一般与由应用完成的工作的量(例如,每秒的页面下载、每秒的事务、每秒的作业、每秒处理的用户请求等)相关。这对于商业/企业软件应用而言尤其真实。使用所测量的与应用相关联的网络业务作为应用吞吐量的指示符,避免了对应用的特定行为、内部运作或目的的任意先验知识的需求,该先验知识作为一般情况可能难以获得。因此,估计应用吞吐量的该方法可以应用于来自任意软件供应商的任意应用(其采用网络通信)而不需要与该供应商或者应用软件设计的分析进行协作。

剖析电路202可以被配置为:测量cpu利用率(例如,cpu不是处于空闲的时间的百分比);估计应用吞吐量(例如,基于网络吞吐量)以便于识别可扩展性问题的存在;以及读取并分析性能计数器320中的一个或多个以确定可扩展性问题的原因。在一些实施例中,剖析电路202可以实现为内核206的软件驱动器组件,或者实现为内核调度器的组件。剖析电路202可以通过直接对性能计数器(或者pmu)进行采样或者使用现有的剖析工具(例如,由intel提供的“emon”或者由linuxos提供的“pref”)来获得信息。以下结合图4并且特别地结合操作404、406、408、410以及414来更详细地描述剖析电路202的操作。

调度电路204可以被配置为基于由剖析电路202提供的分析跨cpu、核心以及逻辑核心来动态地平衡或者再平衡软件应用组件(例如,进程、软件线程等)的分布。例如,这可以通过将应用重新绑定至更少的cpu、禁用超线程、和/或禁用cpu的一些核心来完成。以下结合图4并且特别地结合操作412、416以及418来更详细地描述调度电路204的操作。

图4示出了与本公开一致的一个示例实施例的操作400的流程图。在操作402处,软件应用正在执行。在操作404处,测量cpu利用率,并且将该cpu利用率与阈值利用率值进行比较。在一些实施例中,阈值利用率值可以在百分之45至百分之55利用率的范围中。如果利用率小于阈值值,则系统上的负载可以小到足以使动态调优可以不提供足够的性能改进来证实其使用,并且如此允许应用继续执行而不进行修改。

然而,如果cpu利用率超过阈值,则在操作406处可以发起系统剖析和分析。这可以包括对应用的吞吐量的估计,该估计可以例如基于如之前描述的所测量的网络业务来进行。

在操作408处,关于应用是否在可接受的水平扩展或者应用是否展示出可扩展性问题做出确定。从操作406,在所选定的时间段内追踪所估计的应用吞吐量,并且将其与cpu利用率进行比较。如果发现cpu利用率或者系统上的负载以比应用吞吐量快的速率增加,则可以存在可扩展性问题。例如,如果所测量的利用率从52%增加至89%(大约百分之70的增加),但是所估计的应用吞吐量仅增加了百分之40,则可以确定存在可扩展性问题。换言之,当应用良好地扩展时,可以期望在利用率与吞吐量之间有某种程度的比例或线性关系,并且与该程度的比例的偏差可以指示可扩展性问题。可以基于启发法、实验、或者其它适合的方法来确定触发对可扩展性问题的检测所需要的cpu利用率的增加速率与应用吞吐量的增加速率之间的差值。可以将增加速率之间的这种差值表达为扩展因数,并且可以选择阈值扩展因数以用于如果超过阈值则触发对可扩展性问题的检测。在一些实施例中,可以将阈值扩展因数设置为1.2至1.3的范围中的值,以考虑如下事实:虽然可能期望理论值为1.0(指示cpu利用率的增加速率与应用吞吐量的增加速率之间的完美比例),但是在实践中,可能存在测量变化和噪声。

如果检测到扩展问题,则在操作410处,关于扩展问题是由争用引起还是由受约束资源共享引起的做出确定。在一些实施例中,可以访问并读取硬件性能计数器来获得关于冲突对比约束的统计值以及它们如何与应用执行有关,如之前结合图3描述的。如果确定可扩展性是受争用问题影响的,则在操作412处,可以将应用重新绑定至更少数量的cpu。这减少了执行相同应用的组件的cpu之间的争用的机会(例如,减少了针对锁定的cpu间通信等)。这还可以释放这些cpu中的一些cpu用于执行与其它应用相关联的其它进程(这可以改进整体系统效率)或者允许这些cpu中的一些cpu为空闲的(这可以改进功耗)。例如,可以在一些内核下通过修改与应用的进程相关联的位掩码来完成该重新绑定。

然而,如果确定可扩展性是受资源约束影响的,则在操作414处,关于所识别的资源是由相同核心上的多个线程共享的还是由相同cpu上的多个核心共享的做出进一步的确定。在由相同核心上的多个线程共享的情况下(例如,共享资源限于处理核心),则在操作416处,超线程被禁用。否则,在操作418处,cpu上的核心中的一些被禁用。

在对应用执行进行调优之后,例如,在操作412、416或418中的任意一个处,允许应用在操作402处继续执行。继续监测应用,并且如有必要可以执行附加的调优或者再平衡,例如,如果条件在争用与资源约束之间变化。此外,在一些实施例中,如果确定调优改变对性能具有相反的(或者相对可忽略的)作用,则可以回退或者反转这些改变。

图5示出了与本公开一致的另一示例实施例的操作500的流程图。操作提供了用于多处理器和多核心计算系统的动态调优的方法。在操作510处,检测到与应用在多处理器计算系统上的执行相关联的可扩展性问题的存在。在操作520处,关于可扩展性问题是与访问争用相关联还是与资源约束相关联做出确定。在操作530处,如果可扩展性问题与访问争用相关联,则将应用重新绑定至多处理器计算系统中的更少数量的处理器。

图6示出了与本公开一致的一个示例实施例的系统图600。系统600可以是计算平台610,例如,服务器、工作站或台式计算机。然而,将认识到,本文中描述的系统的实施例不限于计算平台,并且在一些实施例中,系统600可以是通信、娱乐或者任意其它适合类型的设备,例如,智能电话、智能平板、个人数字助理(pda)、移动互联网设备(mid)、可转换平板、笔记本或者膝上型计算机。设备一般可以经由举例来说诸如触摸屏、液晶显示器(lcd)或者任意其它适合的显示器类型的显示元件660来向用户呈现各种接口。

系统600示出为包括处理器系统602,该处理器系统602可以进一步包括任意数量的处理器620和存储器630。在一些实施例中,处理器620可以实现为任意数量的处理器核心(例如,hw核心)。处理器(或者处理器核心)可以是任意类型的处理器,例如,通用处理器、微处理器、嵌入式处理器、数字信号处理器(dsp)、图形处理器(gpu)、网络处理器、现场可编程门阵列或者被配置为执行代码的其它设备。处理器可以是多线程核心,因为hw核心可以包括每个hw核心多于一个硬件线程上下文(或者“逻辑核心”)。存储器630可以耦合至处理器。存储器630可以是如本领域技术人员已知或者以其它方式可用的各种各样的存储器(包括存储器层级的各种层和/或存储器高速缓存)中的任意一个。将认识到的是,处理器和存储器可以被配置为存储、托管和/或执行一个或多个用户应用或者其它软件。这些应用可以包括但不限于例如任意类型的商业/企业、计算、通信、数据管理、数据存储和/或用户接口任务。在一些实施例中,这些应用可以采用平台610的任意其它组件或者与平台610的任意其它组件进行交互。

系统600还示出为包括网络接口电路208,该网络接口电路208可以包括有线或无线的通信能力,举例来说,例如以太网、蜂窝通信、无线保真(wifi)、和/或近场通信(nfc)。网络通信可以遵循或者以其它方式兼容任意现有的或者要被开发的通信标准,包括过去、当前以及未来版本的以太网、wi-fi以及移动电话通信标准。

系统600还示出为包括输入/输出(io)系统或控制器650,其可以被配置为使能或者管理处理器620与系统600的其它元件或系统600外部的其它元件(未示出)之间的数据通信。系统600还示出为包括存储系统640,其可以被配置为例如作为一个或多个硬盘驱动器(hdd)或者固态驱动器(ssd)。

系统600还示出为包括动态调优电路114,其耦合至处理器系统602并且被配置为执行对软件应用的剖析/监测以及调度/再平衡,如之前描述的。

将认识到的是,在一些实施例中,可以在片上系统(soc)架构中对系统600的各种组件进行组合。在一些实施例中,组件可以是硬件组件、固件组件、软件组件,或者硬件、固件或软件的任意适合的组合。

如本文中的任意实施例中使用的“电路”可以包括例如单个或者以任意组合形式的硬件电路、诸如包括一个或多个单独的指令处理核心的计算机处理器之类的可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件。电路可以包括被配置为执行一个或多个指令以执行本文中描述的一个或多个操作的处理器和/或控制器。指令可以体现为例如被配置为使电路执行前述操作中的任意一个的应用、软件、固件等。软件可以体现为软件包、代码、指令、指令集和/或记录在计算机可读存储设备上的数据。以分层的方式,可以将软件体现或实现为包括任意数量的进程,并且继而可以将进程体现或实现为包括任意数量的线程,等等。固件可以体现为代码、指令或者指令集和/或存储器设备中的硬编码(例如,非易失性)的数据。电路可以共同或单独地体现为形成以下较大系统的部分的电路:例如,集成电路(ic)、专用集成电路(asic)、片上系统(soc)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话等。可以将其它实施例实现为由可编程控制设备执行的软件。如本文中描述的,可以使用硬件元件、软件元件、或者其任意组合来实现各种实施例。硬件元件的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等。

本文中描述的操作中的任意一个可以在一个或多个存储设备中实现,该存储设备具有单独或组合地存储在其上的指令,该指令在由一个或多个处理器执行时执行一个或多个操作。另外,旨在可以单独地或者以任意子组合形式来执行本文中描述的操作。因此,不一定需要执行(例如,流程图中的任意一个的)操作中的全部,并且本公开明确地旨在这样的操作的所有子组合如本领域技术人员所理解地实现。另外,旨在本文中描述的操作可以跨多个物理设备分布,例如,处于多于一个不同物理位置的处理结构。存储设备可以包括任意类型的有形设备,例如,任意类型的磁盘,包括硬盘、软盘、光盘、压缩盘只读存储器(cd-rom)、压缩盘可重写(cd-rw)以及磁光盘;半导体设备,例如,只读存储器(rom)、诸如动态和静态随机存取存储器(ram)之类的ram、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪速存储器存、固态磁盘(ssd)、磁卡或光卡;或者适于存储电子指令的任意类型的介质。

因此,本公开提供了用于多处理器和多核心计算系统的动态调优的系统、设备、方法以及计算机可读介质,以提高应用性能和可扩展性,并且降低系统功耗。以下示例涉及另外的实施例。

根据示例1,提供了一种用于多处理器调优的系统。该系统可以包括:多个处理单元(cpu);剖析电路,其用于检测可扩展性问题的存在,可扩展性问题与应用在多个cpu上的执行相关联,并且用于确定可扩展性问题是与访问争用相关联还是与资源约束相关联;以及调度电路,其用于如果可扩展性问题与访问争用相关联,则将应用绑定至多个cpu的子集。

示例2可以包括示例1的主题,并且剖析电路还用于如果可扩展性问题与资源约束相关联,则确定资源是否由cpu中的一个cpu的多个处理核心共享;并且调度电路还用于如果资源共享确定为真,则禁用多个处理核心的子集。

示例3可以包括示例1和2的主题,并且剖析电路还用于如果可扩展性问题与资源约束相关联,则确定资源是否限于cpu中的一个cpu的处理核心;并且调度电路还用于如果资源限制确定为真,则禁用处理器核心上的超线程。

示例4可以包括示例1-3的主题,并且剖析电路还用于基于以下来检测可扩展性问题的存在:对cpu中的至少一个cpu的利用率的增加速率的测量;对应用的吞吐量的增加速率的测量;以及确定利用率的增加速率超过吞吐量的增加速率达阈值扩展因数。

示例5可以包括示例1-4的主题,并且剖析电路还用于基于确定cpu中的至少一个cpu的利用率超过阈值利用率值来检测可扩展性问题的存在。

示例6可以包括示例1-5的主题,并且应用的吞吐量是基于所测量的与应用相关联的网络业务来估计的。

示例7可以包括示例1-6的主题,并且访问争用是数据访问冲突或者针对同步锁定的争用。

示例8可以包括示例1-7的主题,并且资源约束与指令管线缓冲器的容量或者高速缓存存储器的容量相关联。

示例9可以包括示例1-8的主题,还包括一个或多个性能计数器,其用于追踪与硬件性能相关联的事件,并且剖析电路还用于基于对性能计数器中的一个或多个的读取来确定可扩展性问题是与访问争用相关联还是与资源约束相关联。

根据示例10,提供了一种用于对多处理器计算系统进行调优的方法。该方法可以包括:检测可扩展性问题的存在,可扩展性问题与应用在多处理器计算系统中的一定数量的处理器上的执行相关联;确定可扩展性问题是与访问争用相关联还是与资源约束相关联;以及如果可扩展性问题与访问争用相关联,则将应用绑定至多处理器计算系统中的更少数量的处理器。

示例11可以包括示例10的主题,还包括,如果可扩展性问题与资源约束相关联,则:确定资源是否由处理器中的一个处理器的多个处理核心共享;以及如果确定为真,则禁用多个处理核心的子集。

示例12可以包括示例10和11的主题,还包括,如果可扩展性问题与资源约束相关联,则:确定资源是否限于处理器中的一个处理器的处理核心;以及如果确定为真,则禁用处理核心上的超线程。

示例13可以包括示例10-12的主题,并且检测可扩展性问题的存在还包括:测量处理器中的至少一个处理器的利用率的增加速率;测量应用的吞吐量的增加速率;以及确定利用率的增加速率超过吞吐量的增加速率达阈值扩展因数。

示例14可以包括示例10-13的主题,并且检测可扩展性问题的存在还包括确定处理器中的至少一个处理器的利用率超过阈值利用率值。

示例15可以包括示例10-14的主题,并且应用的吞吐量是基于所测量的与应用相关联的网络业务来估计的。

示例16可以包括示例10-15的主题,并且访问争用是数据访问冲突或者针对同步锁定的争用。

示例17可以包括示例10-16的主题,并且资源约束与指令管线缓冲器的容量或者高速缓存存储器的容量相关联。

示例18可以包括示例10-17的主题,并且确定可扩展性问题是与访问争用相关联还是与资源约束相关联还包括读取用于追踪与硬件性能相关联的事件的一个或多个计数器。

根据示例19,提供了至少一种计算机可读存储介质,其上存储有指令,该指令在由处理器执行时产生用于对多处理器计算系统进行调优的以下操作。该操作可以包括:检测可扩展性问题的存在,可扩展性问题与应用在多处理器计算系统中的一定数量的处理器上的执行相关联;确定可扩展性问题是与访问争用相关联还是与资源约束相关联;以及如果可扩展性问题与访问争用相关联,则将应用绑定至多处理器计算系统中的更少数量的处理器。

示例20可以包括示例19的主题,还包括,如果可扩展性问题与资源约束相关联,则:确定资源是否由处理器中的一个处理器的多个处理核心共享;以及如果确定为真,则禁用多个处理核心的子集。

示例21可以包括示例19和20的主题,还包括,如果可扩展性问题与资源约束相关联,则:确定资源是否限于处理器中的一个处理器的处理核心;以及如果确定为真,则禁用处理核心上的超线程。

示例22可以包括示例19-21的主题,并且检测可扩展性问题的存在还包括:测量处理器中的至少一个处理器的利用率的增加速率;测量应用的吞吐量的增加速率;以及确定利用率的增加速率超过吞吐量的增加速率达阈值扩展因数。

示例23可以包括示例19-22的主题,并且检测可扩展性问题的存在还包括确定处理器中的至少一个处理器的利用率超过阈值利用率值。

示例24可以包括示例19-23的主题,并且应用的吞吐量是基于所测量的与应用相关联的网络业务来估计的。

示例25可以包括示例19-24的主题,并且访问争用是数据访问冲突或者针对同步锁定的争用。

示例26可以包括示例19-25的主题,并且资源约束与指令管线缓冲器的容量或者高速缓存存储器的容量相关联。

示例27可以包括示例19-26的主题,并且确定可扩展性问题是与访问争用相关联还是与资源约束相关联还包括读取用于追踪与硬件性能相关联的事件的一个或多个计数器。

根据示例28,提供了一种用于对多处理器计算系统进行调优的系统。该系统可以包括:用于检测可扩展性问题的存在的单元,可扩展性问题与应用在多处理器计算系统中的一定数量的处理器上的执行相关联;用于确定可扩展性问题是与访问争用相关联还是与资源约束相关联的单元;以及用于如果可扩展性问题与访问争用相关联则将应用绑定至多处理器计算系统中的更少数量的处理器的单元。

示例29可以包括示例28的主题,还包括,如果可扩展性问题与资源约束相关联,则:用于确定资源是否由处理器中的一个处理器的多个处理核心共享的单元;以及如果确定为真,则用于禁用多个处理核心的子集的单元。

示例30可以包括示例28和29的主题,还包括,如果可扩展性问题与资源约束相关联,则:用于确定资源是否限于处理器中的一个处理器的处理核心的单元;以及如果确定为真,则用于禁用处理核心上的超线程的单元。

示例31可以包括示例28-30的主题,并且检测可扩展性问题的存在还包括:用于测量处理器中的至少一个处理器的利用率的增加速率的单元;用于测量应用的吞吐量的增加速率的单元;以及用于确定利用率的增加速率超过吞吐量的增加速率达阈值扩展因数的单元。

示例32可以包括示例28-31的主题,并且检测可扩展性问题的存在还包括用于确定处理器中的至少一个处理器的利用率超过阈值利用率值的单元。

示例33可以包括示例28-32的主题,并且应用的吞吐量是基于所测量的与应用相关联的网络业务来估计的。

示例34可以包括示例28-33的主题,并且访问争用是数据访问冲突或者针对同步锁定的争用。

示例35可以包括示例28-34的主题,并且资源约束与指令管线缓冲器的容量或者高速缓存存储器的容量相关联。

示例36可以包括示例28-35的主题,并且确定可扩展性问题是与访问争用相关联还是与资源约束相关联还包括用于读取用于追踪与硬件性能相关联的事件的一个或多个计数器的单元。

本文中采用的术语和表达方式用作描述而非限制的术语,并且在对这样的术语和表达方式的使用中,不旨在排除示出和描述的特征(或者其部分)的任何等同内容,并且应该意识到,在权利要求的范围内可能有各种修改。因此,权利要求旨在涵盖所有这样的等同内容。已在本文中描述了各种特征、方面以及实施例。特征、方面以及实施例易受彼此组合以及变型和修改的影响,如本领域技术人员将理解的。因此,本公开应该被认为包含这样的组合、变型以及修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1