具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在介绍本申请的示例性实施例前,为了方便本领域技术人员更好的理解本申请,首先对本申请中涉及的术语进行解释。
访存延迟是指诸如中央处理器(CPU)、核(core)等处理器访问内存(例如,DRAM)的时间存在延迟。
高速缓存(Cache)位于CPU与内存之间,通常由SRAM(Static RAM,静态存储器)构成的规模较小但存取速度很快的存储器。Cache中保存内存中部分数据的副本(称为存储器影像),这样当CPU读写数据时,首先访问Cache,当Cache中不存在所需数据时,再访问内存。通常Cache可分为两级甚至三级,例如,L1Cache、L2Cache和L3Cache。
MESI协议是在处理器中保证各级Cache与DRAM之间的数据一致性的协议,编程人员通常按照MESI协议执行数据存储。
原子操作是指不可被中断的一个或一系列操作。具体来说,当一个线程要对同一个变量依次进行“读-计算-写”的操作时,这个“读-计算-写”的操作必须连贯地执行,中间不能插入任何其他操作。
在本申请中,由于原子操作的不可中断性使得当原子操作的访存地址横跨两个Cache line时,无法参照MESI协议保证数据一致性,而必须锁住当前核的各级cache以及整个系统的访存总线,直至该原子操作的操作结束为止。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图2示出了根据本申请的示例性实施例的云计算系统的示意图。如图2所示,云计算系统可包括终端设备110、网络120和服务器集群130,其中,服务器集群可包括服务器101至106。应注意,图2为了示意地目的仅构建了简单的云计算系统,在实际使用中,可根据需要增加设备的数量和种类。
终端设备110是指在云计算系统中由用户使用并用于与服务器进行通信的装置,根据本申请的终端设备可包括但不限于个人计算机(PC)、便携式膝上型PC等。网络120是用于在服务器集群130和终端设备110之间提供通信链接的介质。网络120可以包括各种连接类型,例如有线、无线通信链接或者光纤电缆等等。
服务器集群130中的服务器101至106均为具有高性能计算能力的装置,以下将参照图2具体描述云计算系统的处理流程。
如图2所示,在本申请的示例性实施例中,终端设备110可以通过网络120与服务器集群130进行交互,以接收或发送信息等。例如,终端设备110可以通过网络120向云计算系统请求执行渲染操作,随后,服务器集群130中的服务器101至106协同执行渲染操作。在服务器101至106执行渲染操作的过程中会产生大量的split lock,以下将结合图3具体说明针对split lock的数据处理方法的流程图。
如图3所示,在步骤S310,确定在执行渲染操作的处理器中横跨两个高速缓存数据线的锁定操作(split lock)的数量,具体来说,可通过开启处理器中的特定寄存器(IA32_PERFEVTSEL1)并利用计数器(IA32_PMC0)进行计数来获取split lock的数量。应注意,在云计算中执行渲染操作的处理器可以是一个或多个,如果存在多个处理器,则可针对每个处理器确定split lock的数量。
在步骤S320中,判断所述数量是否大于预定阈值,其中,所述预定阈值是用户(例如,开发人员)根据经验预先设置的数值。
在步骤S330,根据判断结果,调整所述处理器的运行频率。也就是说,所述方法可根据判断结果按照预定比例提高或降低处理器的运行频率,因此,所述方法可预先对splitlock的数量设置等级,并将所述等级与处理器的运行频率对应存储。这样,可根据数量等级与运行频率的对应关系,根据判断结果,调整所述处理器的运行频率。
根据示例性实施例,所述判断结果包括所述数量大于所述预定阈值以及所述数量不大于所述预定阈值,应注意,所述数量不大于所述预定阈值包括所述数量小于等于所述预定阈值。当所述数量大于所述预定阈值时,可按照预定比例降低所述处理器的运行频率,而当所述数量不大于所述预定阈值时,可按照预定比例提高所述处理器的运行频率。
举例来说,当所述数量大于所述预定阈值时,可将处理器的运行频率将至最低频率,而处理器的最低频率为默认处理器运行频率的八分之一。根据现有对处理器的运行频率的划分等级,可将split lock的数量划分为八个等级,每个等级对应于处理器的运行频率。这样,可根据split lock的数量确定处理器的运行频率。
根据示例性实施例,可通过将调整所述处理器的运行频率的汇编指令写入处理器的寄存器中来调整所述处理器的运行频率,所述汇编指令可以是wrmsr指令。如以下表1所示:
编码值 |
运行频率 |
000B |
默认运行频率 |
001B |
默认运行频率*12.5% |
010B |
默认运行频率*25.0% |
011B |
默认运行频率*37.5% |
100B |
默认运行频率*50.0% |
101B |
默认运行频率*63.5% |
110B |
默认运行频率*75.0% |
111B |
默认运行频率*87.6% |
表1
可根据判断结果确定如何调整(提高或降低)处理器的运行频率后,将现行的处理器的运行频率提高或降低到某一等级,随后,利用表1中处理器的运行频率对应的编码值,通过更改wrmsr指令实现对处理器的运行频率的调整。
在执行步骤S320过程中,响应于所述数量大于突发值,将所述处理器的运行频率降低至最低运行频率。也就是说,在处理器执行渲染操作期间,可存在一种情况:产生的split lock的数量短时间内大量增加。这种情况通常比较紧急,因此,当检测到这种情况后,可将处理器的运行频率直接将至最低运行频率。为此,可预先设置突发值,其中,突发值大于所述预定阈值。当split lock的数量大于突发值后,将所述处理器的运行频率降低至最低运行频率。可选地,可使所述处理器按照最低运行频率运行预定时间段,所述预定时间段可以是用户(例如,开发人员)预先设置的。
此外,在所述数量大于所述预定阈值的情况下,按照预定比例降低所述处理器的运行频率可包括将所述处理器的运行频率降低至最低运行频率并按照最低运行频率运行所述处理器。这样可使处理器的访存延迟快速缓解。随后,可使所述处理器按照所述预定比例降低后的运行频率运行预定时间间隔,所述预定时间间隔可以是用户(例如,开发人员)预先设置的。
在运行所述预定时间间隔后,如果确定split lock的数量不大于所述预定阈值,则按照预定比例提高所述处理器的运行频率。
应注意,split lock的数量大于突发值的紧急状况明显高于大于预定阈值,因此,所述预定时间段的时长长于所述预定时间间隔。
根据示例性实施例,对于split lock数量的监测可以是实时的也可以按照预定时间间隔执行。如果按照预定时间间隔执行,则split lock的数量实际上是预定时间间隔内累计产生的数量,也就是说,split lock的数量实际上是生成split lock的速率。因此,判断split lock的数量是否大于预定阈值实际上是判断在所述预定时间间隔内累积产生的split lock的数量是否大于所述预定阈值。
应注意,在判断split lock数量的过程中可能涉及多个处理器(多核),则可通过将获取的split lock数量平均到每个处理器上来确定每个处理器上的split lock的数量。也就是说,以上确定的split lock数量对应于每个处理器。
现在参照图4来说明执行本申请的示例性实施例的数据处理方法的效果。图4是执行和未执行根据本申请的示例性实施例的数据处理方法的对比图,可对执行和未执行所述数据处理方法的处理器均设置2000个split lock。图4中,虚线表示执行根据本申请的示例性实施例的数据处理方法生成的数据线,而实线表示未执行数据处理方法的数据线,横坐标表示访存延迟时间,纵坐标表示落在访问延迟时间上的数量。
如图4所示,当执行根据本申请的示例性实施例的数据处理方法时,大部分的访存延迟时间为110纳秒到140纳秒,而未执行本申请的方法的情况下,访存延迟时间在185纳秒至470纳秒之间。
综上所述,根据本申请的示例性实施例的数据处理方法可通过调整所述处理器的运行频率来降低split lock的数量,从而降低split lock对处理器的影响。更进一步地,可在split lock的数量突然增加或者大于预定阈值的情况下,将处理器的运行频率直接将至最低,从而能够快速缓解处理器的访问延迟。更进一步地,可在split lock的数量低于预定阈值的情况下,将处理器的运行频率提高,从而既保证了处理器的访问延迟在合理范围内又提高了处理器的运行速率。更进一步地,可通过监测split lock的生成速率来实现对split lock数量的调整。
为了更清楚地明白本申请的示例性实施例的发明构思,以下将参照图5描述本申请的示例性实施例的数据处理装置的框图。本领域普通技术人员将理解:图5中的数据处理装置仅示出了与本示例性实施例相关的组件,处理装置中还包括除了图5中示出的组件之外的通用组件。
图5示出本申请的示例性实施例的数据处理装置的框图。参考图5,在硬件层面,该数据处理装置包括处理器、内部总线和计算机可读存储介质,其中,所述计算机可读存储介质包括易失性存储器和非易失性存储器。处理器从非易失性存储器中读取对应的计算机程序然后运行。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
具体来说,所述处理器执行以下操作:确定在执行渲染操作的处理器中横跨两个高速缓存数据线的锁定操作的数量;判断所述数量是否大于预定阈值;根据判断结果,调整所述处理器的运行频率。
可选地,所述处理器在实现步骤根据判断结果调整所述处理器的运行频率包括:若所述数量大于所述预定阈值,则按照预定比例降低所述处理器的运行频率。
可选地,所述处理器在实现步骤根据判断结果调整所述处理器的运行频率包括:若所述数量不大于所述预定阈值,则按照预定比例提高所述处理器的运行频率。
可选地,所述处理器在实现判断所述数量是否大于预定阈值期间还包括步骤:响应于所述数量大于突发值,将所述处理器的运行频率降低至最低运行频率。
可选地,所述处理器在实现步骤在将所述处理器的运行频率降低至最低运行频率后还包括:使所述处理器按照最低运行频率运行预定时间段。
可选地,所述处理器在实现步骤按照所述预定比例降低所述处理器的运行频率包括:将所述处理器的运行频率降低至最低运行频率;按照最低运行频率运行所述处理器。
可选地,所述处理器在实现步骤按照所述预定比例降低所述处理器的运行频率后还包括:使所述处理器按照所述预定比例降低后的运行频率运行预定时间间隔。
可选地,所述处理器在实现步骤判断所述数量是否大于预定阈值包括:判断在所述预定时间间隔内累积产生的所述数量是否大于所述预定阈值。
可选地,所述处理器在实现步骤调整所述处理器的运行频率包括:通过将调整所述处理器的运行频率的汇编指令写入处理器的寄存器中来调整所述处理器的运行频率。
综上所述,根据本申请的示例性实施例的数据处理装置可通过调整所述处理器的运行频率来降低split lock的数量,从而降低split lock对处理器的影响。更进一步地,可在split lock的数量突然增加或者大于预定阈值的情况下,将处理器的运行频率直接将至最低,从而能够快速缓解处理器的访问延迟。更进一步地,可在split lock的数量低于预定阈值的情况下,将处理器的运行频率提高,从而既保证了处理器的访问延迟在合理范围内又提高了处理器的运行速率。更进一步地,可通过监测split lock的生成速率来实现对split lock数量的调整。
需要说明的是,实施例1所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤21和步骤22的执行主体可以为设备1,步骤23的执行主体可以为设备2;又比如,步骤21的执行主体可以为设备1,步骤22和步骤23的执行主体可以为设备2;等等。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。