CN114661428A - 一种原子操作的处理方法、设备、装置及存储介质 - Google Patents
一种原子操作的处理方法、设备、装置及存储介质 Download PDFInfo
- Publication number
- CN114661428A CN114661428A CN202210204427.8A CN202210204427A CN114661428A CN 114661428 A CN114661428 A CN 114661428A CN 202210204427 A CN202210204427 A CN 202210204427A CN 114661428 A CN114661428 A CN 114661428A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory address
- target memory
- cache
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Abstract
本申请实施例提供一种原子操作的处理方法、设备、装置及存储介质。在本申请实施例中,可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种原子操作的处理方法、设备、装置及存储介质。
背景技术
原子操作是多核处理器的基本功能。它使得一组操作,比如CAS操作中的比较,算术加,交换操作以全做或者全不做的事务形式进行。在具体的实现上,原子操作高度依赖缓存一致性协议,如Intel x86的MESI协议可以在缓存行级别保证诸如CAS这类操作的正确性。
然而,当原子操作涉及到的变量横跨多个缓存行时,MESI等协议提供的原子性将无法满足需求,这种情况下,Intel x86的处理方式是锁住内存总线,使得只有当前原子操作所属的CPU核可以访问相应的内存变量,从而防止其他CPU核的指令干扰这个操作。
这种处理方式虽然保证了原子操作的正确性,但却给多核处理器带来了严重的性能问题。
发明内容
本申请的多个方面提供一种原子操作的处理方法、设备、装置及存储介质,用以如何缓解原子操作导致的多核处理器的性能下降问题。
本申请实施例提供一种原子操作的处理方法,包括:
监测计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
定位所述内存独占事件对应的目标内存地址;
若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存地址对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
本申请实施例还提供一种计算设备,包括存储器和处理器;
所述存储器用于存储一条或多条实现虚拟化功能的计算机指令;
所述处理器与所述存储器耦合,用于执行所述一条或多条计算机指令,以用于:
监测所述计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
定位所述内存独占事件对应的目标内存资源;
若所述目标内存资源上发生的内存独占事件满足触发条件,则关闭所述目标内存资源对应的缓存资源,以引导所述目标内存资源所承载的原子操作访问内存资源而不再访问缓存资源。
本申请实施例还提供一种控制装置,包括:
监测模块,用于监测所述计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
定位模块,用于定位所述内存独占事件对应的目标内存地址;
处理模块,用于若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存资源对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
本申请实施例还提供一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行前述的原子操作的处理方法。
在本申请实施例中,可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请一示例性实施例提供的一种包含多核处理器的计算设备的结构示意图;
图1b为本申请一示例性实施例提供的一种原子操作的处理方法的流程示意图;
图2为本申请一示例性实施例提供的原子操作的处理方法的逻辑示意图;
图3为本申请一示例性实施例提供的一种状态标识的动态变化示意图;
图4为本申请另一示例性实施例提供的一种计算设备的结构示意图;
图5为本申请又一示例性实施例提供的一种控制装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,为了保证了原子操作的正确性,给多核处理器带来了严重的性能问题。为此,本申请的一些实施例中:可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
在介绍本申请的技术方案之前,首先对本申请中涉及到的技术概念进行简要说明:
原子操作:指对某个变量进行的一组操作(如读、写、算术操作)满足全部做或全部不做的事务语义。在多线程访问共享资源时,某个线程的原子操作一旦开始,就一直运行到结束,期间不被其他线程所打断。
内存独占事件:在Intel x86等架构下,如果某个原子操作涉及的数据横跨两个或两个以上的缓存行,那么此时会停止整个内存总线的实务,而只允许该原子操作执行,以保证这个操作的原子性,这种事件在本申请中被称为内存独占事件,典型的内存独占事件可包括分隔锁Split Lock事件。
缓存行:缓存Cache是由很多个缓存行Cache line组成的。Cache line是缓存ache和内存RAM交换数据的最小单位,通常为64Byte。当CPU把内存的数据载入cache时,会把临近的共64Byte的数据一同放入同一个Cache line。
内存地址:用于说明数据在内存中的位置。这里提到的内存,可以是常规计算机中的内存,也可以是云计算场景中的内存资源。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1b为本申请一示例性实施例提供的一种原子操作的处理方法的流程示意图,图2为本申请一示例性实施例提供的原子操作的处理方法的逻辑示意图。原子操作是多核处理器的基本功能,它使得一组操作,比如CAS操作中的比较,算术加,交换操作以全做或者全不做的事务形式进行。图1a为本申请一示例性实施例提供的一种包含多核处理器的计算设备的结构示意图,参考图1a可知,计算设备中可包含多个核core,每个核core中可包含多个CPU(可以是虚拟的CPU)。图1a中还示出了计算设备的存储结构,其中,L1、L2、L3分别表示一级缓存、二级缓存、三级缓存。越靠近CPU的缓存,速度越快,容量也越小。L1缓存小但很快,并且紧靠着在使用它的CPU,可分为指令缓存和数据缓存;L2大一些,也慢一些,并仍然只能被一个单独的核core使用;L3更大、更慢,并且被单个插槽上的所有核core共享;最后是内存,由全部插槽上的所有核core共享。当CPU执行运算的时候,它默认先去L1查找所需的数据、再去L2、然后是L3,如果最后这些缓存中都没有,所需的数据就要去内存拿,走得越远,运算耗费的时间将越长。应当理解的是对于常规的计算机场景,图1a中的CPU、缓存、内存等可以是计算机上的硬件;而在云计算场景中,图1a中的CPU可以是云计算场景中提供的CPU资源,同样,缓存和内存也可以是云计算场景中提供的相应存储资源。
无论是哪种场景,通常会在包含多核处理器的计算设备的硬件系统和操作系统之间部署一个中间控制层,该中间控制层可允许多个操作系统和应用共享一套基础物理硬件资源,因此也可以看作是虚拟环境中的“元”操作系统,它可以协调访问计算设备上的所有物理硬件资源和虚拟机。该中间控制层是所有虚拟化技术的核心,可非中断地支持多工作负载迁移,当计算设备启动并执行该中间控制层时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘等物理硬件资源,并加载所有虚拟机的客户操作系统。一种典型的中间控制层可以是Hypervisor,当然,本申请并不限于此,本申请中的中间控制层还可采用除Hypervisor之外的现有或未来可能出现的其它虚拟化技术。另外,本申请中提供原子操作的处理方法可通过该中间控制层来主导实施。
发明人在研究过程中发现,原子操作高度依赖缓存一致性协议,如Intel x86的MESI协议可以在缓存行级别保证诸如CAS这类操作的正确性。然而,当原子操作的变量横跨多个缓存行时,MESI协议提供的原子性无法满足需求。这时,x86的实现是锁住内存总线,使得只有该操作可以访问相应的内存变量,从而防止其它CPU指令干扰这个操作,这种原子操作将导致内存独占事件。尽管内存独占事件可以保证原子操作的正确性,但却给计算设备带来了严重的性能问题,因为当内存独占事件发生时,参考图1a,多核处理器中实际上只有一个核corn可以访问内存,而其它核corn则无法访问内存,这导致其它核core上的工作性能受到严重影响。发明人发现了这种问题,并为此提出了本申请的技术方案。
参考图1a,本申请提供的原子操作的处理方法,可包括:
步骤100、监测计算设备中发生的内存独占事件,内存独占事件由原子操作导致;
步骤101、定位内存独占事件对应的目标内存地址;
步骤102、若目标内存地址上发生的内存独占事件满足触发条件,则关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作访问内存而不再访问缓存。
目前,Intel提供了硬件异常这一功能来让系统软件了解操作系统Guest OS是否触发了Split Lock等内存独占事件。其中,硬件异常这一功能是intel芯片上的已有功能,在此对该功能的具体逻辑不做详述,基于该功能,可及时发现计算设备中发生的内存独占事件。
基于此,参考图1a和图2,在步骤100中,可利用该现有功能来监测计算设备中发生的内存独占事件,这里具体是指由原子操作导致的内存独占事件。其中,计算设备中发生的内存独占事件可以是一个或多个,而不同内存独占事件所涉及到的内存地址可能不同。
参考图1a和图2,在步骤101中,可分别定位各个内存独占事件对应的目标内存地址,相应地,目标内存地址也可以是一个或多个。但为了便于描述,本文中未区分不同的目标内存地址,应当理解的是,本实施例提供的原子操作的处理方法可针对不同的目标内存地址通用。
以Hypervisor为例,Hypervisor可首先又X86提供的硬件异常判断功能发现计算设备中发生的内存独占事件,并可定位到内存独占事件所处的目标内存地址。
本实施例中,目标内存地址用于说明导致内存独占事件的原子操作所需的数据在内存中的位置。可选地,目标内存地址可以是内存页,这种情况下,在步骤101中,可定位内存独占事件对应的内存页,其中,内存页是操作系统管理内存的单位,具体可参考内存分页机制,在此不再对内存页做过多解释。当然,除了内存页,本实施例中的目标内存地址还可采用其它现在或将来出现的数据存储位置表示形式,例如,目标内存地址可以是一段地址范围,本实施例并不限于此。
在此基础上,参考图1a和图2,步骤102中,可在目标内存地址上发生的内存独占事件满足触发条件的情况下,关闭目标内存地址对应的缓存,这可引导目标内存地址所承载的原子操作直接访问内存而不再访问缓存。正如前文提及的,原子操作的常规访问路径是先访问缓存,再访问内存,但是基于步骤102中对目标内存地址对应的缓存执行的关闭处理,从硬件角度来看,某个物理页仅在内存上有一个副本,而在缓存中并无副本,这使得导致内存独占事件的原子操作不再访问缓存而直接去内存中访问数据,从而可避免因原子操作访问缓存而导致的内存独占事件,在缓存关闭的情况下,目标内存地址上将不再发生因原子操作而导致的内存独占事件。
在一可选的实现方案中,在步骤102中可利用计算设备中控制内存策略的寄存器来动态调整目标内存地址对应的缓存的使用状态。以目标内存地址采用内存页为例,可采用内存页级别的缓存策略来控制目标内存地址对应的缓存的关闭和开启。举例来说,X86提供了页面属性表(PAT,Page Attribute Table)来提供细粒度的页级别的缓存策略控制,页面属性表PAT可在页面级的粒度上设置内存属性,其中,内存属性可包括但不限于写回(Write-back),不缓存(Uncached),写联合(Write-combined)以及Uncached Minus等。这样,在目标内存地址采用内存页的情况下,步骤102中可利用页面属性表PAT来修改相关内存页的内存属性至不缓存(Uncached),从而关闭相关内存页对应的缓存。当然,这仅是示例性的,本实施例中,还可采用其它方式来为目标内存地址关闭缓存,本实施例并不限于此。
在步骤102中,还对目标内存地址上发生的内存独占事件进行了条件判断,这里主要考虑到关闭缓存操作对目标内存地址上所承载的原子操作的性能有所损伤,因此,希望在目标内存地址上发生的内存独占事件足够严重的情况下,再触发关闭缓存动作,以避免给相关原子操作对应的应用程序/虚拟机VM带来过多的性能损失。
据此,本实施例中,为了保证了原子操作的正确性,给多核处理器带来了严重的性能问题。为此,本申请的一些实施例中:可在计算设备中发生内存独占事件时,定位出内存独占事件对应的目标内存地址,并在目标内存地址上发生的内存独占事件满足触发条件的情况下,动态地关闭目标内存地址对应的缓存,以引导目标内存地址所承载的原子操作不再经由缓存而直接去访问内存。这样,目标内存地址所承载的原子操作可通过内存而读写所需的数据,这保证了原子操作的正常执行,而由于可能导致内存独占事件的原子操作被引导至内存而不再访问缓存,因此,可有效缓解原子操作因访问缓存而导致的内存独占事件。
在上述或下述实施例中,正如前文提及的,关闭缓存操作对目标内存地址上所承载的原子操作的性能有所损伤,而不关闭缓存的情况则会因内存独占事件会损伤计算设备中其它核core上运行的虚拟机VM/应用程序的性能。为平衡这两方面的性能,在步骤102中提出可通过判断目标内存地址上发生内存独占事件是否满足触发条件来确定是否关闭目标内存地址对应的缓存。本实施例中,可采用多种实现方式来判断目标内存地址上发生内存独占事件是否满足触发条件。
在一种实现方式中,可为计算设备中的内存地址引入状态标识,且状态标识可动态变化。这样,步骤102中的触发条件可设置为:目标内存地址上发生的内存独占事件触发目标内存地址切换至第一状态。从而,可通过检测目标内存地址的状态标识是否为第一状态来判断是否关闭目标内存地址对应的缓存。在该实现方式中,第一状态可用于表征目标内存地址需要进行关闭缓存处理。其中,在该实现方式中,可配置一种或多种预设要求作为触发目标内存地址切换至第一状态的条件,不同预设要求中对内存独占事件的要求可以不完全相同,这样,在目标内存地址上发生的内存独占事件满足任意一种预设要求的情况下,可触发目标内存地址切换至第一状态,而第一状态可触发针对目标内存地址的关闭缓存操作。具体地,可在在目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数满足至少一种预设要求中的任意要求时,触发目标内存地址进入第一状态。其中,几种示例性的预设要求可以是:在最近1分钟的发生次数超过第一指定次数、在最近2小时内的发生次数超过第二指定次数、当前事件与前一次事件的时间间隔小于指定时长等,在此不再穷举。这里不同的预设要求用于从不同的角度发现目标内存地址上发生的内存独占事件已经达到了需要关闭缓存的条件。
在该实现方式中,为计算设备中的内存地址引入了状态标识,且可通过识别状态标识来发现目标内存地址上发生的内存独占事件是否已经达到了需要关闭缓存的条件,从而控制关闭缓存操作的时机。
当然,本实施例中,还可采用其它实现方式来判断目标内存地址上发生内存独占事件是否满足触发条件,本实施例并不限于此。例如,正如上述实现方式中提及的,不同的预设要求用于从不同的角度发现目标内存地址上发生的内存独占事件已经达到了需要关闭缓存的条件,因此,触发条件也可设置为:目标内存地址上发生的内存独占事件满足任意一种预设要求。这样,当目标内存地址上发生的内存独占事件满足任意一种预设要求,即可触发关闭缓存操作。
据此,本实施例中,可通过判断目标内存地址上发生的内存独占事件是否满足触发条件来确定是否关闭目标内存地址对应的缓存,也即是提供了确定关闭缓存操作触发时机的解决方案,从而可实现在合适的时机及时关闭目标内存地址对应的缓存。而通过及时关闭目标内存页对应缓存,可有效缓解内存独占事件给计算设备中其它核core上的VM/应用程序带来的性能损失。
在上述或下述实施例中,还可考量导致内存独占事件的原子操作的恶意性,并针对不同恶意程度的原子操作采用不同级别的缓存限制。
为此,本实施例中,可设定目标内存地址对应的缓存关闭时长,并在目标内存地址对应的缓存已经达到缓存关闭时长后,暂时性地开启目标内存地址对应的缓存,以继续观察目标内存地址上发生的内存独占事件,从而感知导致目标内存地址上的内存独占事件的原子操作的恶意程度。可选地,承接前述实施例中提到的为计算设备中的内存地址引入状态标识的技术构思,本实施例中,状态标识中可包含第二状态,第一状态用于表征目标内存地址不再需要进行关闭缓存处理,基于此,可在目标内存地址对应的缓存已经达到缓存关闭时长后,将目标内存地址从第一状态切换至第二状态;基于第二状态,可重新开启目标内存地址对应的缓存。
本实施例中,在重新开启目标内存地址对应的缓存后,继续监测目标内存地址上新发生的内存独占事件,这可能会出现三种情况:第一种是目标内存地址上继续在产生新的内存独占事件,而且新产生的内存独占事件足够多;第二种是目标内存地址上继续在产生新的内存独占事件,但新产生的内存独占事件足够少;第三种是目标内存地址上未再产生新的内存独占事件。对此,本实施例中,针对第一种情况,可确定目标内存地址上导致内存独占事件的原子操作的恶意程度很高,因此,可再次关闭目标内存地址对应的缓存。而针对第二种和第三种情况,则可继续保持目标内存地址对应的缓存的开启状态,并继续监测目标内存地址上新发生的内存独占事件。
可选地,承接前述实施例中提到的为计算设备中的内存地址引入状态标识的技术构思,本实施例中,可在新发生的内存独占事件触发目标内存地址从第二状态切换至第一状态的情况下,再次关闭目标内存地址对应的缓存。这样,对应上述的三种情况,图3为本申请一示例性实施例提供的一种状态标识的动态变化示意图,参考图3:第一种情况下,目标内存地址将从第二状态切换至第一状态;第二种情况下,目标内存地址将保持第二状态不变;而第三种情况下,目标内存地址可从第一状态切换至第三状态,其中,第三状态用于表征目标内存地址在预设时间范围内未发生内存独占事件。其中,针对第三种情况,可设定从第二状态切换至第三状态对应的一种或多种切换要求,不同的切换要求可从不同角度考察目标内存地址上的原子操作是否不再会导致内存独占事件。另外,针对第三种情况,还可为目标内存地址保留历史内存独占事件记录,以防止发生原子操作采用短暂停止发起内存独占事件而骗取缓存开启的问题。
这样,可基于重新开启目标内存地址对应的缓存后继续监测到的目标内存地址上新发生的内存独占事件,来动态地调整目标内存地址的状态标识,从而准确地考量导致内存独占事件的原子操作的恶意性,并针对不同恶意程度的原子操作采用合适级别的缓存限制。
另外,本实施例中,缓存关闭时长可与目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数成正比,当然,缓存关闭时长的影响因素并不限于内存独占事件的发生时间或发生次数,还可加入其它影响因素,在此不做限定。具体地,最近一次发生的内存独占事件的发生时间越远、已经发生的内存独占事件的发生次数越多,缓存时长将越长。举例来说,目标内存地址的状态表示可能会在前述的第一状态、第二状态和第三状态之间不断切换,每当目标内存地址被再次切换回第一状态,其保持在第一状态的时间将延长,对应地,缓存关闭时长将被延长;这样,目标内存地址被切换回第一状态的次数越多,其保持在第一状态的时间将越来越长,对应地缓存关闭时长也将越来越长,在目标内存地址保持在第一状态的事件超过预设阈值的情况下,可将目标内存地址永久设置为第一状态,对应地,目标内存地址对应的缓存将被永久关闭。
据此,本实施例中,可在确定目标标内存地址上发生的内存独占事件是否足够严重的情况下,再触发关闭目标内存地址对应的缓存,从而合理确定目标内存地址对应缓存的关闭时机,且可通过持续监测目标内存地址上发生的内存独占事件来合理地控制目标内存地址对应的缓存的开启时长和关闭时长,这可有效平衡目标内存地址上所承载的原子操作与计算设备中其它核core上运行的虚拟机VM/应用程序的性能损失,避免对目标内存地址所承载的原子操作进行过度的缓存限制,尽量减少其它核core上运行的虚拟机VM/应用程序的性能损失。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如801、802等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的状态标识等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图4为本申请另一示例性实施例提供的一种计算设备的结构示意图。如图4所示,该计算设备可包括:存储器40和处理器41。
存储器40用于存储一条或多条实现虚拟化功能的计算机指令;
处理器41与存储器40耦合,用于执行一条或多条计算机指令,以用于:
监测计算设备中发生的内存独占事件,内存独占事件由原子操作导致;
确定内存独占事件对应的目标内存地址;
若目标内存地址上发生的内存独占事件满足触发条件,则关闭目标内存资源对应的缓存,以引导目标内存地址所承载的原子操作访问内存而不再访问缓存。
在物理实现形式上,本实施例提供的计算设备可以是个人电脑、平板电脑等小型或微型计算机设备,还可以是企业内部安装的中型或大型服务器设备,还可以是云计算环境中可提供基础物理硬件资源的云服务器等。本实施例对计算设备的物理实现形式不做限定,原则上各种规格的计算机都可适用于本实施例提供的技术方案。另外,存储器中存储的一条或多条实现虚拟化功能的计算机指令可实现为多种类型的计算机程序产品,例如Hypervisor等,本实施例对此也不做限定。另外,应当理解的是,本实施例中提到的处理器41用于运行存储器存储的一条或多条实现虚拟化功能的计算机指令,以实现本实施例中的技术逻辑,该处理器41可独立于运行原子操作的处理器之外,以更好地管理原子操作。
在一可选实施例中,触发条件可包括:目标内存地址上发生的内存独占事件触发目标内存地址切换至第一状态,第一状态用于表征目标内存地址需要进行关闭缓存处理;
其中,目标内存地址对应的状态动态变化。
在一可选实施例中,第一状态对应有至少一种预设要求,处理器41还可用于:
在目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数满足至少一种预设要求中的任意要求时,触发目标内存地址进入第一状态。
在一可选实施例中,处理器41还可用于:
设定目标内存地址对应的缓存关闭时长;
在目标内存地址对应的缓存已经达到缓存关闭时长后,将目标内存地址从第一状态切换至第二状态,第二状态用于表征目标内存地址不再需要进行关闭缓存处理;
基于第二状态,重新开启目标内存地址对应的缓存。
在一可选实施例中,处理器41还可用于:
在重新开启目标内存地址对应的缓存后,继续监测目标内存地址上新发生的内存独占事件;
在新发生的内存独占事件触发目标内存地址从第二状态切换至第一状态的情况下,再次关闭目标内存地址对应的缓存。
在一可选实施例中,缓存关闭时长与已经发生的内存独占事件的发生时间和/或发生次数成正比。
在一可选实施例中,处理器41还用于:若缓存关闭时长超过预设阈值,则将目标内存地址对应的缓存永久关闭。
在一可选实施例中,目标内存地址包括内存页,处理器41在关闭目标内存地址对应的缓存过程中,可用于:
利用页面属性表PAT技术,将内存页的页面属性设置为关闭缓存Uncached。
进一步,如图4所示,该计算设备还包括:通信组件42、显示器43、电源组件44、音频组件45等其它组件。图4中仅示意性给出部分组件,并不意味着计算设备只包括图4所示组件。
值得说明的是,上述关于计算设备各实施例中的技术细节,可参考前述的方法实施例中的相关描述,为节省篇幅,在此不再赘述,但这不应造成本申请保护范围的损失。
图5为本申请又一示例性实施例提供的一种控制装置的结构示意图。参考图5,该控制装置,包括:
监测模块50,用于监测计算设备中发生的内存独占事件,内存独占事件由原子操作导致;
定位模块51,用于确定内存独占事件对应的目标内存地址;
处理模块52,用于若目标内存地址上发生的内存独占事件满足触发条件,则关闭目标内存资源对应的缓存,以引导目标内存地址所承载的原子操作访问内存而不再访问缓存。
在一可选实施例中,触发条件可包括:目标内存地址上发生的内存独占事件触发目标内存地址切换至第一状态,第一状态用于表征目标内存地址需要进行关闭缓存处理;
其中,目标内存地址对应的状态动态变化。
在一可选实施例中,第一状态对应有至少一种预设要求,处理器41还可用于:
在目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数满足至少一种预设要求中的任意要求时,触发目标内存地址进入第一状态。
在一可选实施例中,处理模块52还可用于:
设定目标内存地址对应的缓存关闭时长;
在目标内存地址对应的缓存已经达到缓存关闭时长后,将目标内存地址从第一状态切换至第二状态,第二状态用于表征目标内存地址不再需要进行关闭缓存处理;
基于第二状态,重新开启目标内存地址对应的缓存。
在一可选实施例中,监测模块50还可用于:
在重新开启目标内存地址对应的缓存后,继续监测目标内存地址上新发生的内存独占事件;
处理模块52还可用于:在新发生的内存独占事件触发目标内存地址从第二状态切换至第一状态的情况下,再次关闭目标内存地址对应的缓存。
在一可选实施例中,缓存关闭时长与已经发生的内存独占事件的发生时间和/或发生次数成正比。
在一可选实施例中,处理模块52还用于:若缓存关闭时长超过预设阈值,则将目标内存地址对应的缓存永久关闭。
在一可选实施例中,目标内存地址包括内存页,处理模块52在关闭目标内存地址对应的缓存过程中,可用于:
利用页面属性表PAT技术,将内存页的页面属性设置为关闭缓存Uncached。
值得说明的是,上述关于控制装置各实施例中的技术细节,可参考前述的方法实施例中的相关描述,为节省篇幅,在此不再赘述,但这不应造成本申请保护范围的损失。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中的各步骤。
上述图4中的存储器,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述图4中的通信组件,被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图4中的显示器,包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述图4中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述图4中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种原子操作的处理方法,包括:
监测计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
确定所述内存独占事件对应的目标内存地址;
若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存地址对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
2.根据权利要求1所述的方法,所述触发条件包括:所述目标内存地址上发生的内存独占事件触发所述目标内存地址切换至第一状态,所述第一状态用于表征所述目标内存地址需要进行关闭缓存处理;
其中,所述目标内存地址对应的状态动态变化。
3.根据权利要求2所述的方法,所述第一状态对应有至少一种预设要求,所述方法还包括:
在所述目标内存地址上已经发生的内存独占事件的发生时间和/或发生次数满足所述至少一种预设要求中的任意要求时,触发所述目标内存地址进入所述第一状态。
4.根据权利要求3所述的方法,还包括:
设定所述目标内存地址对应的缓存关闭时长;
在所述目标内存地址对应的缓存已经达到所述缓存关闭时长后,将所述目标内存地址从所述第一状态切换至第二状态,所述第二状态用于表征所述目标内存地址不再需要进行关闭缓存处理;
基于所述第二状态,重新开启所述目标内存地址对应的缓存。
5.根据权利要求4所述的方法,还包括:
在重新开启所述目标内存地址对应的缓存后,继续监测所述目标内存地址上新发生的内存独占事件;
在所述新发生的内存独占事件触发所述目标内存地址从所述第二状态切换至所述第一状态的情况下,再次关闭所述目标内存地址对应的缓存。
6.根据权利要求4所述的方法,所述缓存关闭时长与所述已经发生的内存独占事件的发生时间和/或发生次数成正比。
7.根据权利要求6所述的方法,若所述缓存关闭时长超过预设阈值,则将所述目标内存地址对应的缓存永久关闭。
8.根据权利要求1所述的方法,所述目标内存地址包括内存页,所述关闭所述目标内存地址对应的缓存,包括:
利用页面属性表PAT技术,将所述内存页的页面属性设置为关闭缓存Uncached。
9.根据权利要求1所述的方法,所述内存独占事件包括分隔锁Split Lock事件。
10.一种计算设备,包括存储器和处理器;
所述存储器用于存储一条或多条实现虚拟化功能的计算机指令;
所述处理器与所述存储器耦合,用于执行所述一条或多条计算机指令,以用于:
监测所述计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
确定所述内存独占事件对应的目标内存地址;
若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存资源对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
11.一种控制装置,包括:
监测模块,用于监测计算设备中发生的内存独占事件,所述内存独占事件由原子操作导致;
定位模块,用于确定所述内存独占事件对应的目标内存地址;
处理模块,用于若所述目标内存地址上发生的内存独占事件满足触发条件,则关闭所述目标内存资源对应的缓存,以引导所述目标内存地址所承载的原子操作访问内存而不再访问缓存。
12.一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-9任一项所述的原子操作的处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210204427.8A CN114661428A (zh) | 2022-03-03 | 2022-03-03 | 一种原子操作的处理方法、设备、装置及存储介质 |
PCT/CN2023/077739 WO2023165402A1 (zh) | 2022-03-03 | 2023-02-22 | 一种原子操作的处理方法、设备、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210204427.8A CN114661428A (zh) | 2022-03-03 | 2022-03-03 | 一种原子操作的处理方法、设备、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114661428A true CN114661428A (zh) | 2022-06-24 |
Family
ID=82027341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210204427.8A Pending CN114661428A (zh) | 2022-03-03 | 2022-03-03 | 一种原子操作的处理方法、设备、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114661428A (zh) |
WO (1) | WO2023165402A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115292054A (zh) * | 2022-10-08 | 2022-11-04 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
WO2023165402A1 (zh) * | 2022-03-03 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 一种原子操作的处理方法、设备、装置及存储介质 |
CN116993412A (zh) * | 2023-07-06 | 2023-11-03 | 道有道科技集团股份公司 | 一种基于用户操作数据分析的智能投放系统与方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US8904113B2 (en) * | 2012-05-24 | 2014-12-02 | International Business Machines Corporation | Virtual machine exclusive caching |
CN114661428A (zh) * | 2022-03-03 | 2022-06-24 | 阿里巴巴(中国)有限公司 | 一种原子操作的处理方法、设备、装置及存储介质 |
-
2022
- 2022-03-03 CN CN202210204427.8A patent/CN114661428A/zh active Pending
-
2023
- 2023-02-22 WO PCT/CN2023/077739 patent/WO2023165402A1/zh unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165402A1 (zh) * | 2022-03-03 | 2023-09-07 | 阿里巴巴(中国)有限公司 | 一种原子操作的处理方法、设备、装置及存储介质 |
CN115292054A (zh) * | 2022-10-08 | 2022-11-04 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
CN115292054B (zh) * | 2022-10-08 | 2022-12-06 | 湖北芯擎科技有限公司 | 数据处理方法、装置、系统级芯片及存储介质 |
CN116993412A (zh) * | 2023-07-06 | 2023-11-03 | 道有道科技集团股份公司 | 一种基于用户操作数据分析的智能投放系统与方法 |
CN116993412B (zh) * | 2023-07-06 | 2024-03-01 | 道有道科技集团股份公司 | 一种基于用户操作数据分析的智能投放系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2023165402A1 (zh) | 2023-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531625B2 (en) | Memory management method and apparatus | |
CN114661428A (zh) | 一种原子操作的处理方法、设备、装置及存储介质 | |
US10049056B2 (en) | Deferred RE-MRU operations to reduce lock contention | |
US20170075818A1 (en) | Memory management method and device | |
US9110806B2 (en) | Opportunistic page caching for virtualized servers | |
CN110059477B (zh) | 一种攻击检测方法及装置 | |
US20160026581A1 (en) | Detection of unauthorized memory modification and access using transactional memory | |
US20110145476A1 (en) | Persistent Content in Nonvolatile Memory | |
US11188365B2 (en) | Memory overcommit by speculative fault | |
CN113778662B (zh) | 内存回收方法及装置 | |
US20160110108A1 (en) | Virtual machine manager initiated page-in of kernel pages | |
CN110888769B (zh) | 数据处理方法及计算机设备 | |
EP4369191A1 (en) | Memory scanning method and apparatus | |
US9535713B2 (en) | Manipulating rules for adding new devices | |
CN114595037A (zh) | 一种数据处理方法及装置 | |
TWI712890B (zh) | 電子設備中執行任務級快取記憶體管理的方法和裝置 | |
CN115840635A (zh) | 计算资源管理方法、电子设备和程序产品 | |
US10324752B2 (en) | Response times based on application states | |
US11327889B2 (en) | Multi-access to a data file stored in a data-storage system related to a buffer memory | |
US11360901B2 (en) | Method and apparatus for managing page cache for multiple foreground applications | |
US11853593B2 (en) | Shared memory protection method for securing MMIO commands | |
CN117076407A (zh) | 信息处理方法、装置、终端和存储介质 | |
US20140040589A1 (en) | Non-transactional page in memory | |
CN116414728A (zh) | 数据缓存优化方法及装置、电子设备及介质 | |
CN114064357A (zh) | 数据备份方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |