CN114595037A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN114595037A CN114595037A CN202210267806.1A CN202210267806A CN114595037A CN 114595037 A CN114595037 A CN 114595037A CN 202210267806 A CN202210267806 A CN 202210267806A CN 114595037 A CN114595037 A CN 114595037A
- Authority
- CN
- China
- Prior art keywords
- cpu
- state
- vmm
- host
- host machine
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000001514 detection method Methods 0.000 claims abstract description 85
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000006870 function Effects 0.000 claims description 84
- 230000004913 activation Effects 0.000 claims description 30
- 230000004044 response Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 230000005856 abnormality Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 17
- 230000007488 abnormal function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000010365 information processing Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种数据处理方法及装置。在本申请中,若为虚拟机分配的VCPU在之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数大于预设阈值,先关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,再将检测线程的状态从静默状态切换至激活状态;以使检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据,根据轮询到的CPU的运行数据获取实际执行次数。通过本申请,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁的情况下,在检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,可以提高宿主机的整体性能以及提高虚拟机的性能。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法及装置。
背景技术
随着技术的飞速发展,虚拟机化技术应用范围越来越广,虚拟化是云计算的关键技术,虚拟化技术可以将一个物理机(宿主机)虚拟化为一个或多个虚拟机。每一个虚拟机都拥有自己的虚拟硬件,例如,包括VCPU(Virtual Central Processing Unit,虚拟中央处理器)、虚拟内存以及虚拟I/O设备等,从而形成一个独立的虚拟机执行环境。虚拟化技术由于具有高容错性和高资源利用率而广泛应用在云计算和高性能计算等领域。
在虚拟化环境里,VMM(Virtual Machine Management,虚拟机监视器)是位于宿主机的硬件与虚拟机之间的一个软件管理层,其主要负责管理宿主机的硬件,如管理宿主机的CPU(Central Processing Unit,中央处理器)、内存及I/O设备等,并将宿主机的硬件抽象为对应的虚拟设备接口供虚拟机使用。
发明内容
本申请示出了一种数据处理方法及装置。
第一方面,本申请示出了一种数据处理方法,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程;所述方法包括:预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常;以及,将检测线程的状态从静默状态切换至激活状态;以使检测线程轮询宿主机中的CPU对应的性能监视器PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
第二方面,本申请示出了一种数据处理装置,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程;所述装置包括:第一预测模块,用于预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;关闭模块,用于在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常;以及,第一切换模块,用于将检测线程的状态从静默状态切换至激活状态;轮询模块,用于轮询宿主机中的CPU对应的性能监视器PMU中记录的CPU的运行数据,获取模块,用于根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
第三方面,本申请示出了一种电子设备,电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行如前述的任一方面所示的方法。
第四方面,本申请示出了一种非临时性计算机可读存储介质,当存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如前述的任一方面所示的方法。
第五方面,本申请示出了一种计算机程序产品,当计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备能够执行如前述的任一方面所示的方法。
与现有技术相比,本申请包括以下优点:
在本申请中,预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。以及,将检测线程的状态从静默状态切换至激活状态。以使检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。通过本申请,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,可以提高宿主机的整体性能以及提高虚拟机的性能。
附图说明
图1是本申请的一种数据处理方法的步骤流程图。
图2是本申请的一种数据处理方法的步骤流程图。
图3是本申请的一种数据处理方法的步骤流程图。
图4是本申请的一种数据处理装置的结构框图。
图5是本申请的一种装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
有时候,宿主机中的CPU允许不对齐的内存访问,在不对齐的内存访问的场景中,原子操作的操作数(由于地址不对齐)会跨越宿主机的CPU的两个cache line(缓存行),也即,访问CPU的cache的一个操作跨越两个cache line,这样会触发split lock(分裂锁)事件。
例如,在一个例子中,在CPU的cache中,一个cache line包括64个字节,structcounter中的一个成员占8个字节,buf填充了62个字节。因此,一旦访问这个成员,就涉及两个cache line的内容的拼接,如此,执行原子操作会触发split lock事件。
然而,通常情况下,缓存一制性协议只能保证cache line粒度的一致性。同时访问两个cache line无法保证cache line粒度的一致性,为保证split lock的原子性,在访问的操作数跨越两个cache line的情况下,可以使用特殊逻辑(例如冷路径)来处理:例如,锁定宿主机的CPU的访存总线(BUSLOCK)。
在宿主机的CPU的访存总线被锁定的情况下,宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问都会被拦截,导致宿主机中的其他线程/宿主机中的CPU中的其他核的数据处理进程中断。
由于宿主机中的其他线程/宿主机中的CPU中的其他核的数据处理进程中断,则会导致宿主机的CPU的平均访存延时显著上升,且由于执行“拦截宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问”的动作也会耗费宿主机的CPU的一些计算资源,因此,会降低宿主机的整体性能。
如此,提出了提高宿主机的整体性能的需求。
为了提高宿主机的整体性能,在一个可能的方式中,可以尽可能地降低宿主机的CPU的平均访存延时,以及,尽可能地降低执行“拦截宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问”的动作的次数。
为了实现“降低宿主机的CPU的平均访存延时”的目的,在一个方式中,可以降低宿主机中的其他线程/宿主机中的CPU中的其他核的数据处理进程中断的次数。
为了实现“降低宿主机中的其他线程/宿主机中的CPU中的其他核的数据处理进程中断的次数”的目的,在一个方式中,可以降低宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问被拦截的次数。
其中,降低宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问被拦截的次数,可以节省拦截动作所需耗费的计算资源。
为了实现“降低宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问被拦截的次数”的目的,在一个方式中,可以降低宿主机的CPU的访存总线被锁定的次数。
为了实现“降低宿主机的CPU的访存总线被锁定的次数”的目的,在一个方式中,可以检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
在为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数较高的情况下,可以采取一些应对措施降低之后为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数,从而可以降低之后宿主机的CPU的访存总线被锁定的次数。
进而可以降低之后宿主机中的其他线程/宿主机中的CPU中的其他核对访存总线的访问被拦截的次数,进而可以降低之后宿主机中的其他线程/宿主机中的CPU中的其他核的数据处理进程中断的次数,进而可以降低之后宿主机的CPU的平均访存延时,如此可以实现提高宿主机之后的整体性能的目的。
其中,应对措施可以包括:降低宿主机上的虚拟机对宿主机的CPU利用率或者虚拟机对宿主机的CPU的访问频率等。
通过上述分析得知,检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cacheline操作的实际执行次数就比较重要。
如此,又出了“检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数”的需求。
为了实现“检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数”的目的,发明人发现:在为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的情况下,宿主机的CPU的访存总线会被锁定,在宿主机的CPU的访存总线被锁定的情况下,宿主机的CPU会抛出异常,例如Bus Lock Exception或#DBException等。
后续需要宿主机上的内核态的VMM来处理异常,如此,会从虚拟机退出至内核态的VMM(例如,挂起虚拟机,恢复内核态的VMM的运行),在退出至内核态的VMM之后(也即,在恢复运行内核态的VMM之后),内核态的VMM会尝试处理异常。
在一个可能的情况下,内核态的VMM可能会确定出内核态的VMM无法处理该异常或者该异常应当交由用户态的VMM处理,如此,内核态的VMM可以通知用户态的VMM来处理该异常,用户态的VMM接收到通知之后,就会获取该异常或尝试处理该异常。
其中,用户态的VMM得到该异常之后,还可以得到异常的该相关信息等(例如用户态的VMM与内核态的VMM的共享区域内可以记录该异常的原因等,从其中可以解析出该异常的原因是否是由于触发了split lock事件等),并根据该异常的相关信息可以确定出为虚拟机分配的VCPU是否执行了跨宿主机的CPU的cache line操作(为虚拟机分配的VCPU是否触发了split lock事件),并通过计数的方式来统计为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
然而,发明人发现,在上述方式中,在为虚拟机分配的VCPU每执行一次对宿主机的CPU的跨cache line操作,都会导致宿主机的CPU抛出异常(Bus Lock Exception或#DBException等),进而会从虚拟机退出至(例如通过Vmexit函数等)内核态的VMM(例如,挂起虚拟机,恢复内核态的VMM的运行)。
在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,一方面,会导致宿主机中的VMM频繁进入异常处理流程,降低宿主机的整体性能,进一步地还会间接地导致了宿主机进入类似于被DOS(Denial ofService Attack,拒绝服务攻击)攻击的状态。另一方面,会因多次从虚拟机退出至内核态的VMM而降低虚拟机的性能。
鉴于此,发明人认为,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,通过上述方式来检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数不合适。
如此,提出了“在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在需要检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,提高宿主机的整体性能以及提高虚拟机的性能”的需求。
为了实现“在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在需要检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,提高宿主机的整体性能以及提高虚拟机的性能”的目的,发明人对上述方式进行了统计分析,并发现:
在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常的功能是具有功能开关的。功能开关可以打开可以关闭。
结合实际情况,若需要“在宿主机的CPU的访存总线被锁定的情况下,宿主机的CPU抛出异常”,则可以将该功能开关打开,也即通过打开功能开关而启动在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常的功能。
若需要“在宿主机的CPU的访存总线被锁定的情况下,宿主机的CPU不抛出异常”,则可以将该功能开关关闭,也即通过关闭功能开关而关闭在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常的功能。
如此,发明人发现,可以关闭该功能开关,这样,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在宿主机的CPU的访存总线每一次被锁定都不会使得宿主机的CPU抛出异常,从而可以避免降低宿主机的整体性能以及避免降低虚拟机的性能。
但是,虽然实现了“避免降低宿主机的整体性能以及避免降低虚拟机的性能”的目的,但是由于在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常,进而会导致无法检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数,进而无法实现“在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在需要检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,提高宿主机的整体性能以及提高虚拟机的性能”的目的。
鉴于此,进一步地,发明人摒弃了“用户态的VMM得到该异常之后,还可以得到异常的该相关信息等(例如用户态的VMM与内核态的VMM的共享区域内可以记录该异常的原因等,从其中可以解析出该异常的原因是与是由于触发了split lock事件等),并根据该异常的相关信息可以确定出为虚拟机分配的VCPU是否执行了跨宿主机的CPU的cache line操作(为虚拟机分配的VCPU是否触发了split lock事件),并通过计数的方式来统计为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数”的检测方式来检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数,而是想到了在宿主机上创建检测线程,其用于检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
具体地,参见图1,示出了本申请的一种数据处理方法,该方法应用于宿主机,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程。该方法包括:
在步骤S101中,预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
在本申请中,执行对宿主机的CPU的跨cache line操作会触发split lock事件。在触发split lock事件的情况下,宿主机的CPU的访存总线会被锁定这样,会降低宿主机的整体性能。
在本申请中,为了提高宿主机的整体性能,可以检测为虚拟机分配的VCPU(可以是内核态的VMM为虚拟机分配的)实际执行对宿主机的CPU的跨cache line操作的实际执行次数。并在为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数较高的情况下,通过一些应对措施(例如降低宿主机上的虚拟机之后对宿主机的CPU利用率,或者虚拟机之后对宿主机的CPU的访问频率等等)降低为虚拟机分配的VCPU之后执行对宿主机的CPU的跨cache line操作的执行次数,进而降低之后触发split lock事件的次数,进而降低宿主机的CPU的访存总线之后被锁定的次数,从而可以提高宿主机的之后的整体性能。
在本申请一个实施例中,为了检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数,可以将时间划分为依次相邻的多个时间段,各个时间段的持续时长可以相同,相邻的时间段可以是首尾相接的,例如,相邻的时间段中,靠前的时间段的结束时刻与靠后的时间段的起始时刻可以相同等。
可以以时间段为基准时间单元来检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数,例如,检测为虚拟机分配的VCPU在各个时间段内分别执行对宿主机的CPU的跨cache line操作的实际执行次数。
当然,在一个可能的情况下,也可以以小于时间段的基准来检测为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作的实际执行次数,以提高检测为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作的实际执行次数的实时性。
鉴于此,在本申请中,可以通过至少两种方式来检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
为了确定合适的检测方式,在一个实施例中,若需要检测为虚拟机分配的VCPU在一个时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,在该时间段之前,可以先预测为虚拟机分配的虚拟VCPU在该时间段内预计执行对宿主机的CPU的跨cache line操作的预计执行次数。
然后参考预测的为虚拟机分配的虚拟VCPU在该时间段内预计执行对宿主机的CPU的跨cache line操作的预计执行次数,来选择其中一种方式检测为虚拟机分配的VCPU在该时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
例如,可以根据实际情况设置预设阈值。
在预测的为虚拟机分配的虚拟VCPU在该时间段内预计执行对宿主机的CPU的跨cache line操作的预计执行次数大于或等于预设阈值的情况下,可以使用其中一种方式来检测为虚拟机分配的VCPU在该时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。或者,在预测的为虚拟机分配的虚拟VCPU在该时间段内预计执行对宿主机的CPU的跨cache line操作的预计执行次数小于预设阈值的情况下,可以使用另一种方式来检测为虚拟机分配的VCPU在该时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。具体可以参见之后步骤的描述,在此不做详述。
例如,在一个实施例中,在当前时刻之后具有第一时间段,在检测为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数之前,可以先预测为虚拟机分配的虚拟VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数(是预测出来的执行次数,不是实际执行的执行次数),然后执行步骤S102。
其中,可以采用历史数据来预测为虚拟机分配的虚拟VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
历史数据可以包括在当前时刻之前的至少一个历史时间段内为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的历史执行次数,然后根据历史数据获取为虚拟机分配的虚拟VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。例如,可以对历史数据分析,以分析出在历史过程中为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的历史执行次数的规律,并基于规律来获取为虚拟机分配的虚拟VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
其中,在本申请一个实施例中,可以获取为虚拟机分配的VCPU在当前时刻之前的至少一个历史时间段内实际执行对宿主机的CPU的跨cache line操作的历史执行次数;然后根据历史执行次数获取为虚拟机分配的虚拟VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
在步骤S102中,在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。以及,将检测线程的状态从静默状态切换至激活状态。以使检测线程轮询宿主机中的CPU对应的PMU(Performance Monitoring Unit,性能监视器)中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
在本申请一个实施例中,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能以及将检测线程的状态从静默状态切换至激活状态可以并行执行。
或者,在本申请另一实施例中,可以先关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,然后再将检测线程的状态从静默状态切换至激活状态。
或者,在本申请另一实施例中,可以先将检测线程的状态从静默状态切换至激活状态,然后再关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
由于宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能被关闭了,因此,在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常,但是由于不抛出异常,因此,如前述分析,这样也无法检测为虚拟机分配的VCPU实际是否执行了对宿主机的CPU的跨cache line操作,也就无法检测为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
因此,为了在宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能被关闭的情况下不仅能够实现避免降低宿主机的整体性能以及避免降低虚拟机的性能且还能够检测为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,在本申请中,事先在宿主机中可以创建检测线程,可以借助检测线程来检测为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
其中,检测线程具有多个状态,例如,包括静默状态以及激活状态等。
处于静默状态的检测线程是不工作的,可以是低功耗的或低资源消耗的,例如可以不占用宿主机的CPU开销(计算资源)。
处于激活状态的检测线程是可以工作的。
在本申请一个实施例中,若此时检测线程的状态为激活状态,则可以不对检测线程的状态进行切换,检测线程会自动轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
之后,检测线程可以将“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”存储在日志中,以供之后需要使用“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”时,再从日志中调取“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”。
或者,在本申请另一实施例中,若此时检测线程的状态为静默状态,由于处于静默状态的检测线程是不工作的,是无法基于处于静默状态的检测线程检测为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数的,如此,可以将检测线程的状态从静默状态切换至激活状态。这样,检测线程会自动轮询宿主机中的器CPU对应的PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
之后,检测线程可以将“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”存储在日志中,以供之后需要使用“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”时,再从日志中调取“为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数”。
在本申请中,预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。以及,将检测线程的状态从静默状态切换至激活状态。以使检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。通过本申请,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,可以提高宿主机的整体性能以及提高虚拟机的性能。
在本申请一个实施例中,宿主机中还运行有内核态的VMM以及用户态的VMM。
如此,在预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数时,可以是用户态的VMM预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
相应地,在关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能时,可以是用户态的VMM向内核态的VMM发送关闭请求,关闭请求用于关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在第一预计执行次数大于或等于预设阈值的情况下,如前述分析,宿主机中的VMM频繁进入异常处理流程,会降低宿主机的整体性能,以及,会导致虚拟机因多次退出至内核态的VMM而降低虚拟机的性能。
因此,为了避免降低宿主机的整体性能以及虚拟机的整体性能,如前述分析,可以关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
然而,宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能是隶属于内核态的VMM管控的,用户态的VMM可以不管控宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,因此,在用户态的VMM在第一预计执行次数大于或等于预设阈值的情况下若确定出需要关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,则可以请求内核态的VMM关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
例如,用户态的VMM向内核态的VMM发送关闭请求,关闭请求用于关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
其中,在本申请一个实施例中,用户态的VMM可以将关闭请求放入至用户态的VMM与内核态的VMM的共享区域(例如共享内存页等),然后通知内核态的VMM。
然后,内核态的VMM接收关闭请求,根据关闭请求关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在本申请一个实施例中,内核态的VMM在得到通知之后,可以从用户态的VMM与内核态的VMM的共享区域中去读取该关闭请求。
宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能对应有功能开关,若关闭该功能开关,则可以实现关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,若打开该功能开关,则可以启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
如此,内核态的VMM在根据关闭请求关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能时,可以关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能对应的功能开关。
内核态的VMM可以通过该功能开关的对外暴露的API(Application ProgrammingInterface,应用程序编程接口)来关闭该功能开关。
其中,检测线程可以是内核态的检测线程,由于检测线程可以是基于内核态的,如此,用户态VMM可以经由内核态的VMM将检测线程的状态从静默状态切换至激活状态,例如,检测线程对外暴露有API,用户态的VMM可以向内核态的VMM发送携带该API的激活请求,以使内核态的VMM通过该API将检测线程的状态从静默状态切换至激活状态等。
例如,在将检测线程的状态从静默状态切换至激活状态时,可以是用户态VMM向内核态的VMM发送激活请求,激活请求用于请求将检测线程的状态从静默状态切换至激活状态。然后内核态的VMM接收激活请求,根据激活请求将检测线程的状态从静默状态切换至激活状态。
在本申请另一实施例中,内核态的VMM关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能之后,内核态的VMM可以向用户态VMM发送关闭响应,关闭响应用于通知已关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。在本申请一个实施例中,内核态的VMM可以将关闭响应(处理结果)放入至用户态的VMM与内核态的VMM的共享区域(例如共享内存页等),然后通知内核态的VMM。
然后,用户态VMM接收关闭响应,根据关闭响应再向内核态的VMM发送激活请求。在本申请一个实施例中,用户态的VMM在得到通知之后,可以从用户态的VMM与内核态的VMM的共享区域中去读取该关闭响应,并根据该关闭响应获知已关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在本申请一个实施例中,检测线程是轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据的,也即,是定期地获取宿主机中的CPU对应的PMU中记录的CPU的运行数据。
每一次获取到的CPU对应的PMU中记录的CPU的运行数据中均包括:在获取到运行数据的时刻时为虚拟机分配的VCPU已执行对宿主机的CPU的跨cache line操作的已执行次数。
如此,可以根据在第一时间段的起始时刻时获取到的、为虚拟机分配的VCPU已执行对宿主机的CPU的跨cache line操作的已执行次数以及在第一时间段的结束时刻时获取到的、为虚拟机分配的VCPU已执行对宿主机的CPU的跨cache line操作的已执行次数,来获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
例如,在一个例子中,轮询到的CPU的运行数据包括:为虚拟机分配的VCPU在第一时间段的起始时刻时已执行对宿主机的CPU的跨cache line操作的第一已执行次数以及为虚拟机分配的VCPU在第一时间段的结束时刻时已执行对宿主机的CPU的跨cache line操作的第二已执行次数。
如此,在根据轮询到的CPU的运行数据获取实际执行次数时,可以计算第二已执行次数与第一已执行次数之间的差值,然后根据差值获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,例如,可以将该差值确定为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数等。
通过本申请,通过检测线程可以得到为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
之后需要进入第一时间段之后的第二时间段,也就需要检测为虚拟机分配的VCPU在第二时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
参见图2,具体流程可以包括:
在步骤S201中,预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。
在检测为虚拟机分配的VCPU在第二时间段内实际执行对宿主机的CPU的跨cacheline操作的实际执行次数之前,可以先预测为虚拟机分配的虚拟VCPU在第二时间段内预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数(是预测出来的执行次数,不是实际执行的执行次数),然后执行步骤S202。
其中,可以采用历史数据来预测为虚拟机分配的虚拟VCPU在第二时间段内预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。
历史数据可以包括在当前时刻之前的至少一个历史时间段内为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的历史执行次数,然后根据历史数据获取为虚拟机分配的虚拟VCPU在当前时刻之后的第二时间段内预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。例如,可以对历史数据分析,以分析出在历史过程中为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的历史执行次数的规律,并基于规律来获取为虚拟机分配的虚拟VCPU在当前时刻之后的第二时间段内预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。
其中,在本申请中,可以获取在当前时刻之前的至少一个历史时间段内为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的历史执行次数;然后根据历史执行次数获取为虚拟机分配的虚拟VCPU在当前时刻之后的第二时间段内预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。
在步骤S202中,在第二预计执行次数小于预设阈值的情况下,启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常。
在本申请中,启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能的具体方式可以参见之后的描述,在此不做详述。
在步骤S203中,在得到异常的相关信息的情况下,根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的。
在步骤S204中,在异常是宿主机的CPU因CPU的访存总线被锁定而抛出的情况下,确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作。
进一步地,可以通过计数的方式来统计为虚拟机分配的VCPU在第二时间段内实际执行对宿主机的CPU的跨cachline操作的实际执行次数。
在本申请一个实施例中,宿主机中还运行有内核态的VMM以及用户态的VMM。
如此,在预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数时,可以是用户态的VMM预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数。
相应地,在启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能时,可以是用户态的VMM向内核态的VMM发送启动请求,启动请求用于启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在第二预计执行次数小于预设阈值的情况下,如前述分析,宿主机中的VMM虽然会进入异常处理流程,但并不会频繁进入异常处理流程,如此,宿主机的整体性能的降低程度并不大,以及,虚拟机虽然会退出至内核态的VMM,但是不会频繁退出至内核态的VMM,如此,对虚拟机的性能的降低程度并不大。如此,“VMM并不会频繁进入异常处理流程以及虚拟机并不会频繁退出至内核态的VMM”导致的宿主机的整体性能的降低程度以及虚拟机的性能的降低程度往往是能够容忍的。
另一方面,检测线程是轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据的,也即,是定期地获取宿主机中的CPU对应的PMU中记录的CPU的运行数据。受“定期”的周期(相邻两次轮询之间的时间间隔)的影响,往往是间隔“一个周期”才能得到为虚拟机分配的VCPU在一个周期内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,会一定程度影响获取为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作的实际执行次数的时效性(例如,前述描述的时间段的划分就无法自由按照实际情况划分,时间段的划分只能根据“定期”的周期来划分,时间段包括的时长最小只能为“定期”的周期,无法再小了,所以会降低时效性)。
因此,由于在第二预计执行次数小于预设阈值的情况下,“VMM并不会频繁进入异常处理流程以及虚拟机并不会频繁退出至内核态的VMM”导致的宿主机的整体性能的降低程度以及虚拟机的性能的降低程度往往是能够容忍的,如此,为了提高获取的为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的时效性,如此,可以接受使用“用户态的VMM得到该异常之后,还可以得到异常的该相关信息等(例如用户态的VMM与内核态的VMM的共享区域内可以记录该异常的原因等,从其中可以解析出该异常的原因是与是由于触发了split lock事件等),并根据该异常的相关信息可以确定出为虚拟机分配的VCPU是否执行了跨宿主机的CPU的cache line操作(为虚拟机分配的VCPU是否触发了split lock事件),并通过计数的方式来统计为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数”的检测方式来检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
这样,就需要启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
然而,宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能是隶属于内核态的VMM管控的,用户态的VMM可以不管控宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能的,因此,在用户态的VMM在第二预计执行次数小于预设阈值的情况下若确定出需要启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,则可以请求内核态的VMM启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
例如,用户态的VMM向内核态的VMM发送启动请求,启动请求用于启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
其中,在本申请一个实施例中,用户态的VMM可以将启动请求放入至用户态的VMM与内核态的VMM的共享区域(例如共享内存页等),然后通知内核态的VMM。
然后,内核态的VMM接收启动请求,根据启动请求启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在本申请一个实施例中,内核态的VMM在得到通知之后,可以从用户态的VMM与内核态的VMM的共享区域中去读取该启动请求。
宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能对应有功能开关,若关闭该功能开关,则可以实现关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,若打开该功能开关,则可以启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
如此,内核态的VMM在根据启动请求启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能时,可以启动宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能对应的功能开关。
内核态的VMM可以通过该功能开关的对外暴露的API来启动该功能开关。
相应地,在根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的时,可以是用户态VMM根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的。
相应地,在确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作时,可以是用户态VMM确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作。
进一步地,由于在第二预计执行次数小于预设阈值的情况下,可以不使用检测线程来检测为虚拟机分配的VCPU在第二时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,如此,可以将检测线程的状态从激活状态切换至静默状态。
例如,宿主机中还运行有内核态的VMM以及用户态的VMM。
如此,在将检测线程的状态从激活状态切换至静默状态时,在一个实施例中,用户态的VMM可以向内核态的VMM发送静默请求,静默请求用于请求将检测线程的状态从激活状态切换至静默状态。内核态的VMM可以接收静默请求,根据静默请求将检测线程的状态从激活状态切换至静默状态。
或者,在另一个实施例中,检测线程可以直接请求内核态的VMM将检测线程的状态从激活状态切换至静默状态,本申请对具体的切换方式不做限定。
参见图3,以一个实施例对本方案进行举例说明,但不作为对本方案的保护范围的限制。
具体地,该实施例包括如下流程:
在步骤S301中,用户态的VMM预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。
在步骤S302中,在第一预计执行次数大于或等于预设阈值的情况下,用户态的VMM向内核态的VMM发送关闭请求,关闭请求用于关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。
在步骤S303中,内核态的VMM接收关闭请求,根据关闭请求关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在步骤S304中,内核态的VMM向用户态VMM发送关闭响应,关闭响应用于通知已关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。
在步骤S305中,用户态VMM接收关闭响应,根据关闭响应向内核态的VMM发送激活请求,激活请求用于请求将检测线程的状态从静默状态切换至激活状态。
在步骤S306中,内核态的VMM接收激活请求,根据激活请求将检测线程的状态从静默状态切换至激活状态。
在步骤S307中,在检测线程的状态切换至激活状态的情况下,检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据。
在步骤S308中,检测线程根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
在本申请中,用户态的VMM预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cachline操作的第一预计执行次数。在第一预计执行次数大于或等于预设阈值的情况下,用户态的VMM向内核态的VMM发送关闭请求,关闭请求用于关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。内核态的VMM接收关闭请求,根据关闭请求关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。内核态的VMM向用户态VMM发送关闭响应,关闭响应用于通知已关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。用户态VMM接收关闭响应,根据关闭响应向内核态的VMM发送激活请求,激活请求用于请求将检测线程的状态从静默状态切换至激活状态。内核态的VMM接收激活请求,根据激活请求将检测线程的状态从静默状态切换至激活状态。在检测线程的状态切换至激活状态的情况下,检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据。检测线程根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cachline操作的实际执行次数。通过本申请,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,可以提高宿主机的整体性能以及提高虚拟机的性能。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本申请所必须的。
参照图4,示出了本申请的一种数据处理装置的结构框图,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程;所述装置包括:
第一预测模块11,用于预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;关闭模块12,用于在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常;以及,第一切换模块13,用于将检测线程的状态从静默状态切换至激活状态;轮询模块14,用于轮询宿主机中的CPU对应的性能监视器PMU中记录的CPU的运行数据,获取模块15,用于根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
在一个可选的实现方式中,宿主机中还运行有内核态的VMM以及用户态的VMM;第一预测模块包括:用户态的VMM的第一预测单元;第一预测单元,用于预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;相应地,关闭模块包括:用户态的VMM包括的第一发送单元,还包括内核态的VMM包括的第一接收单元以及关闭单元;第一发送单元,用于向第一接收单元发送关闭请求,关闭请求用于关闭所述功能;第一接收单元,用于接收关闭请求,关闭单元,用于根据关闭请求关闭所述功能。
在一个可选的实现方式中,第一切换模块包括:用户态的VMM包括的第二发送单元,还包括内核态的VMM包括的第二接收单元以及第一切换单元;第二发送单元,用于向第二接收单元发送激活请求,激活请求用于请求将检测线程的状态从静默状态切换至激活状态;第二接收单元,用于接收激活请求,第一切换单元,用于根据激活请求将检测线程的状态从静默状态切换至激活状态。
在一个可选的实现方式中,第一切换模块还包括:用户态的VMM包括的第三发送单元,还包括内核态的VMM包括的第三接收单元;第三发送单元,用于向第三接收单元发送关闭响应,关闭响应用于通知已关闭所述功能;第三接收单元,用于接收关闭响应,第二发送单元还用于根据关闭响应向第二接收单元发送激活请求。
在一个可选的实现方式中,所述装置还包括:第二预测模块,用于预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数;启动模块,用于在第二预计执行次数小于预设阈值的情况下,启动所述功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常;第一确定模块,用于在得到异常的相关信息的情况下,根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的;第二确定模块,用于在异常是宿主机的CPU因CPU的访存总线被锁定而抛出的情况下,确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作。
在一个可选的实现方式中,宿主机中还运行有内核态的VMM以及用户态的VMM;第二预测模块包括:用户态的VMM的第二预测单元;第二预测单元,用于预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数;相应地,启动模块包括:用户态的VMM包括的第四发送单元,还包括内核态的VMM包括的第四接收单元以及启动单元;第四发送单元,用于向第四接收单元发送启动请求,启动请求用于启动所述功能;第四接收单元,用于接收启动请求,启动单元,用于根据启动请求启动所述功能。
在一个可选的实现方式中,第一确定模块还包括用户态的VMM包括的第一确定单元;第一确定单元,用于根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的;相应地,第二确定模块包括用户态的VMM包括的第二确定单元;第二确定单元,用于确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作。
在一个可选的实现方式中,所述装置还包括:第二切换模块,用于在第二预计执行次数小于预设阈值的情况下,将检测线程的状态从激活状态切换至静默状态。
在一个可选的实现方式中,宿主机中还运行有内核态的VMM以及用户态的VMM;第二切换模块包括:用户态的VMM包括的第五发送单元,还包括内核态的VMM包括的第五接收单元以及第二切换单元;包括:第五发送单元,用于向第五接收单元发送静默请求,静默请求用于请求将检测线程的状态从激活状态切换至静默状态;第五接收单元,用于接收静默请求,第二切换单元,用于根据静默请求将检测线程的状态从激活状态切换至静默状态。
在一个可选的实现方式中,第一预测模块包括:第一获取单元,用于获取为虚拟机分配的VCPU在当前时刻之前的至少一个历史时间段内实际执行对宿主机的CPU的跨cacheline操作的历史执行次数;第二获取单元,用于根据历史执行次数获取所述第一预计执行次数。
在一个可选的实现方式中,轮询到的CPU的运行数据包括:为虚拟机分配的VCPU在第一时间段的起始时刻时已执行对宿主机的CPU的跨cache line操作的第一已执行次数以及为虚拟机分配的VCPU在第一时间段的结束时刻时已执行对宿主机的CPU的跨cache line操作的第二已执行次数;获取模块包括:计算单元,用于计算第二已执行次数与第一已执行次数之间的差值;第三获取单元,用于根据所述差值获取所述实际执行次数。
在本申请中,预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的CPU的跨cache line操作的第一预计执行次数。在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能。以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常。以及,将检测线程的状态从静默状态切换至激活状态。以使检测线程轮询宿主机中的CPU对应的PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。通过本申请,在为虚拟机分配的VCPU执行对宿主机的CPU的跨cache line操作很频繁(例如每秒数万次或数十万次等)的情况下,在检测为虚拟机分配的VCPU实际执行对宿主机的CPU的跨cache line操作的实际执行次数的场景中,可以提高宿主机的整体性能以及提高虚拟机的性能。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个的方法。本申请实施例中,电子设备包括服务器、网关、子设备等,子设备为物联网设备等设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括服务器(集群)、终端设备如IoT设备等电子设备。
图5示意性地示出了可被用于实现本申请中的各个实施例的示例性装置1300。
对于一个实施例,图5示出了示例性装置1300,该装置具有一个或多个处理器1302、被耦合到(一个或多个)处理器1302中的至少一个的控制模块(芯片组)1304、被耦合到控制模块1304的存储器1306、被耦合到控制模块1304的非易失性存储器(NVM)/存储设备1308、被耦合到控制模块1304的一个或多个输入/输出设备1310,和被耦合到控制模块1304的网络接口1312。
处理器1302可包括一个或多个单核或多核处理器,处理器1302可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1300能够作为本申请实施例中网关等服务器设备。
在一些实施例中,装置1300可包括具有指令1314的一个或多个计算机可读介质(例如,存储器1306或NVM/存储设备1308)和与该一个或多个计算机可读介质相合并被配置为执行指令1314以实现模块从而执行本公开中的动作的一个或多个处理器1302。
对于一个实施例,控制模块1304可包括任意适当的接口控制器,以向(一个或多个)处理器1302中的至少一个和/或与控制模块1304通信的任意适当的设备或组件提供任意适当的接口。
控制模块1304可包括存储器控制器模块,以向存储器1306提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1306可被用于例如为装置1300加载和存储数据和/或指令1314。对于一个实施例,存储器1306可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1306可包括双倍数据速率四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,控制模块1304可包括一个或多个输入/输出控制器,以向NVM/存储设备1308及(一个或多个)输入/输出设备1310提供接口。
例如,NVM/存储设备1308可被用于存储数据和/或指令1314。NVM/存储设备1308可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1308可包括在物理上作为装置1300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如,NVM/存储设备1308可通过网络经由(一个或多个)输入/输出设备1310进行访问。
(一个或多个)输入/输出设备1310可为装置1300提供接口以与任意其他适当的设备通信,输入/输出设备1310可以包括通信组件、拼音组件、传感器组件等。网络接口1312可为装置1300提供接口以通过一个或多个网络通信,装置1300可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1300可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1300可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1300包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
本申请实施例提供了一种电子设备,包括:一个或多个处理器;和,其上存储有指令的一个或多个机器可读介质,当由一个或多个处理器执行时,使得电子设备执行如本申请中一个或多个的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、和流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程信息处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程信息处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程信息处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程信息处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例和落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的数据处理方法及装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种数据处理方法,其特征在于,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程;所述方法包括:
预测为虚拟机分配的虚拟中央处理器VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;
在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常;以及,将检测线程的状态从静默状态切换至激活状态;以使检测线程轮询宿主机中的CPU对应的性能监视器PMU中记录的CPU的运行数据,并根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数。
2.根据权利要求1所述的方法,其特征在于,宿主机中还运行有内核态的虚拟机监视器VMM以及用户态的VMM;
预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数,包括:
用户态的VMM预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;
相应地,所述关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能,包括:
用户态的VMM向内核态的VMM发送关闭请求,关闭请求用于关闭所述功能;
内核态的VMM接收关闭请求,根据关闭请求关闭所述功能。
3.根据权利要求2所述的方法,其特征在于,所述将检测线程的状态从静默状态切换至激活状态,包括:
用户态VMM向内核态的VMM发送激活请求,激活请求用于请求将检测线程的状态从静默状态切换至激活状态;
内核态的VMM接收激活请求,根据激活请求将检测线程的状态从静默状态切换至激活状态。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
内核态的VMM向用户态VMM发送关闭响应,关闭响应用于通知已关闭所述功能;
用户态VMM接收关闭响应,根据关闭响应执行所述向内核态的VMM发送激活请求的步骤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数;
在第二预计执行次数小于预设阈值的情况下,启动所述功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU抛出异常;
在得到异常的相关信息的情况下,根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的;
在异常是宿主机的CPU因CPU的访存总线被锁定而抛出的情况下,确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache l ine操作。
6.根据权利要求5所述的方法,其特征在于,宿主机中还运行有内核态的VMM以及用户态的VMM;
所述预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数,包括:
用户态的VMM预测为虚拟机分配的VCPU在第一时间段之后的第二时间段预计执行对宿主机的CPU的跨cache line操作的第二预计执行次数;
相应地,启动所述功能,包括:
用户态的VMM向内核态的VMM发送启动请求,启动请求用于启动所述功能;
内核态的VMM接收启动请求,根据启动请求启动所述功能。
7.根据权利要求6所述的方法,其特征在于,所述根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的,包括:
用户态VMM根据异常的相关信息确定异常是否是宿主机的CPU因CPU的访存总线被锁定而抛出的;
相应地,确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作,包括:
用户态VMM确定为虚拟机分配的VCPU在第二时间段内实际执行了对宿主机的CPU的跨cache line操作。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在第二预计执行次数小于预设阈值的情况下,将检测线程的状态从激活状态切换至静默状态。
9.根据权利要求8所述的方法,其特征在于,宿主机中还运行有内核态的VMM以及用户态的VMM;
所述将检测线程的状态从激活状态切换至静默状态,包括:
用户态的VMM向内核态的VMM发送静默请求,静默请求用于请求将检测线程的状态从激活状态切换至静默状态;
内核态的VMM接收静默请求,根据静默请求将检测线程的状态从激活状态切换至静默状态。
10.根据权利要求1所述的方法,其特征在于,预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数,包括:
获取为虚拟机分配的VCPU在当前时刻之前的至少一个历史时间段内实际执行对宿主机的CPU的跨cache line操作的历史执行次数;
根据历史执行次数获取所述第一预计执行次数。
11.根据权利要求1所述的方法,其特征在于,轮询到的CPU的运行数据包括:为虚拟机分配的VCPU在第一时间段的起始时刻时已执行对宿主机的CPU的跨cache l ine操作的第一已执行次数以及为虚拟机分配的VCPU在第一时间段的结束时刻时已执行对宿主机的CPU的跨cache line操作的第二已执行次数;
根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache line操作的实际执行次数,包括:
计算第二已执行次数与第一已执行次数之间的差值;
根据所述差值获取所述实际执行次数。
12.一种数据处理装置,其特征在于,应用于宿主机,宿主机中至少运行有虚拟机以及检测线程;所述装置包括:
第一预测模块,用于预测为虚拟机分配的虚拟中央处理器VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;
第一预测模块,用于预测为虚拟机分配的VCPU在当前时刻之后的第一时间段内预计执行对宿主机的中央处理器CPU的跨缓存行cache line操作的第一预计执行次数;关闭模块,用于在第一预计执行次数大于或等于预设阈值的情况下,关闭宿主机的CPU因CPU的访存总线被锁定而抛出异常的功能;以使在宿主机的CPU的访存总线被锁定的情况下宿主机的CPU不抛出异常;以及,第一切换模块,用于将检测线程的状态从静默状态切换至激活状态;轮询模块,用于轮询宿主机中的CPU对应的性能监视器PMU中记录的CPU的运行数据,获取模块,用于根据轮询到的CPU的运行数据获取为虚拟机分配的VCPU在第一时间段内实际执行对宿主机的CPU的跨cache l ine操作的实际执行次数。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行程序时实现如权利要求1至11中任一项的方法的步骤。
14.一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如权利要求1至11中任一项的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210267806.1A CN114595037A (zh) | 2022-03-17 | 2022-03-17 | 一种数据处理方法及装置 |
PCT/CN2023/080336 WO2023174126A1 (zh) | 2022-03-17 | 2023-03-08 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210267806.1A CN114595037A (zh) | 2022-03-17 | 2022-03-17 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595037A true CN114595037A (zh) | 2022-06-07 |
Family
ID=81810315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210267806.1A Pending CN114595037A (zh) | 2022-03-17 | 2022-03-17 | 一种数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114595037A (zh) |
WO (1) | WO2023174126A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023174126A1 (zh) * | 2022-03-17 | 2023-09-21 | 阿里巴巴(中国)有限公司 | 一种数据处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10102000B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Apparatus and method for non-serializing split locks |
CN110955512B (zh) * | 2018-09-27 | 2023-05-30 | 阿里巴巴集团控股有限公司 | 缓存处理方法、装置、存储介质、处理器及计算设备 |
CN111124947B (zh) * | 2018-10-31 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其装置 |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
CN114595037A (zh) * | 2022-03-17 | 2022-06-07 | 阿里巴巴(中国)有限公司 | 一种数据处理方法及装置 |
-
2022
- 2022-03-17 CN CN202210267806.1A patent/CN114595037A/zh active Pending
-
2023
- 2023-03-08 WO PCT/CN2023/080336 patent/WO2023174126A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023174126A1 (zh) * | 2022-03-17 | 2023-09-21 | 阿里巴巴(中国)有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023174126A1 (zh) | 2023-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8935698B2 (en) | Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors | |
US7426657B2 (en) | System and method for predictive processor failure recovery | |
US9021172B2 (en) | Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter | |
US8312195B2 (en) | Managing interrupts using a preferred binding between a device generating interrupts and a CPU | |
US20070006228A1 (en) | System and method to optimize OS context switching by instruction group trapping | |
Machida et al. | Job completion time on a virtualized server with software rejuvenation | |
US9274957B2 (en) | Monitoring a value in storage without repeated storage access | |
KR20170131366A (ko) | 공유 리소스 액세스 제어 방법 및 장치 | |
EP2972826B1 (en) | Multi-core binary translation task processing | |
US9606825B2 (en) | Memory monitor emulation for virtual machines | |
US9566158B2 (en) | Hardware protection of virtual machine monitor runtime integrity watcher | |
WO2023174126A1 (zh) | 一种数据处理方法及装置 | |
JP5014179B2 (ja) | Os優先度変更装置及びos優先度変更プログラム | |
US9766917B2 (en) | Limited virtual device polling based on virtual CPU pre-emption | |
US10180855B1 (en) | System and method for controlling idle state of operating system | |
US10929164B2 (en) | Enhancing ability of a hypervisor to detect an instruction that causes execution to transition from a virtual machine to the hypervisor | |
Barada et al. | A survey report on software aging and rejuvenation studies in virtualized environment | |
US9354929B2 (en) | Shut down real time domain when last real time process terminates on a core | |
Zhao et al. | Software maintenance optimization based on Stackelberg game methods | |
US20230418645A1 (en) | Systems and methods for processing privileged instructions using user space memory | |
Kandalintsev et al. | Freeze'nSense: estimation of performance isolation in cloud environments | |
US20120144171A1 (en) | Mechanism for Detection and Measurement of Hardware-Based Processor Latency | |
JP4878050B2 (ja) | コンピュータ及び制御方法 | |
JP5299681B2 (ja) | プログラム検査方法 | |
CN106033520B (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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Dai Shengdong Inventor after: Guo Kaijie Inventor after: Luo Ben Inventor before: Mo Xi Inventor before: Guo Kaijie Inventor before: Luo Ben |