CN108196945B - 一种核间通信方法、装置和虚拟化设备 - Google Patents
一种核间通信方法、装置和虚拟化设备 Download PDFInfo
- Publication number
- CN108196945B CN108196945B CN201611122215.6A CN201611122215A CN108196945B CN 108196945 B CN108196945 B CN 108196945B CN 201611122215 A CN201611122215 A CN 201611122215A CN 108196945 B CN108196945 B CN 108196945B
- Authority
- CN
- China
- Prior art keywords
- component
- information
- inter
- virtual processors
- virtual
- 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.)
- Active
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请实施例提供了一种核间通信方法、装置和虚拟化设备,该方法应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述方法包括:第二组件将多个虚拟处理器的信息通知第一组件;第一组件获取所述多个虚拟处理器的信息;第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。通过一次性将虚拟处理器的信息通知第一组件,大大减少第二组件与第一组件之间的通信次数,进而大大减少了因第二组件与第一组件之间的通信造成的第二组件的退出的次数,在一次组播的过程中,第二组件退出的次数少至一次,从而减少核间通信的耗时,提升第二组件与第一组件的性能。
Description
技术领域
本申请涉及虚拟化的技术领域,特别是涉及一种核间通信方法、一种核间通信装置和一种虚拟化设备。
背景技术
在云计算的IaaS(Infrastructure as a Service,基础设施即服务)中,云运营商提供托管的物理机、虚拟机及其他设施,供不同的用户根据自己的实际需要进行使用。
虚拟机(Virtual Machine)服务是IaaS的核心服务之一,是指系统虚拟机,即可以进行模拟的、具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。
目前,处理器一般具有多个核,处理器(核)与处理器(核)之间经常通过中断进行通信,一个处理器(核)向另外一个或多个处理器(核)(可以包括自身)发送的中断称为核间中断(Inter-Processor Interrupts,IPI),向多个处理器(核)发送核间中断的方式也称为组播。
例如,每个处理器都有TLB(Translation Lookaside Buffer,传输后备缓冲器),即对页表映射的缓冲,如果某个处理器上的线程对页表内容做了修改,那么其他处理器上的TLB就失效了,此时,就需要通知其他处理器刷新TLB。
在虚拟化中,因为虚拟机发送IPI不是原来物理处理器之间的通知,而是虚拟处理器之间的通知。
但是,虚拟处理器和物理处理器并不是一一对应的固定关系,所以当某个虚拟处理器通知其他虚拟处理器时,引发退出,通知第一组件,让第一组件来帮助该虚拟处理器实现这个通知。
目前一次组播IPI在发送的处理器引发的退出通常等于发送的目的处理器的个数,退出次数较多。
虚拟机退出时需要进行大量的状态保存和切换工作,再次进入虚拟化状态也需要恢复这些状态,所以,虚拟机的退出操作繁琐、耗时较多。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种核间通信方法、一种核间通信装置和一种虚拟化设备。
为了解决上述问题,本申请实施例公开了一种核间通信方法,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述方法包括:
第二组件将多个虚拟处理器的信息通知第一组件;
第一组件获取所述多个虚拟处理器的信息;
第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
本申请实施例还公开了一种核间通信装置,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,其中,
所述第二组件包括:
信息通知模块,用于将多个虚拟处理器的信息通知宿主机;
所述第一组件包括:
信息获取模块,用于获取所述多个虚拟处理器的信息;
核间中断发送模块,用于按照所述信息对所述多个虚拟处理器发送核间中断信号。
本申请实施例还公开了一种虚拟化设备,包括:
多个处理器;
存储器;和
一个或多个模块,所述一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,其中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述多个处理器被配置为:
第二组件将多个虚拟处理器的信息通知第一组件;
第一组件获取所述多个虚拟处理器的信息;
第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
本申请实施例包括以下优点:
本申请实施例中,第二组件将多个虚拟处理器的信息通知第一组件,第一组件按照该信息对多个虚拟处理器发送核间中断信号,通过一次性将虚拟处理器的信息通知第一组件,大大减少第二组件与第一组件之间的通信次数,进而大大减少了因第二组件与第一组件之间的通信造成的第二组件的退出的次数,在一次组播的过程中,第二组件退出的次数少至一次,从而减少核间通信的耗时,提升第二组件与第一组件的性能。
附图说明
图1是本申请的一种核间通信方法实施例的步骤流程图;
图2是本申请的一种虚拟化设备的架构示意图;
图3是本申请的另一种核间通信方法实施例的步骤流程图;
图4A是本申请实施例提供的一种核间通信示例图;
图4B是本申请实施例提供的另一种核间通信示例图;
图5是本申请的一种核间通信装置实施例的结构框图;
图6是本申请的另一种核间通信装置实施例的结构框图;
图7是本申请实施例提供的一种虚拟化设备结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请的一种核间通信方法实施例的步骤流程图。
在具体实现中,如图2所示,本申请实施例可以应用在虚拟化设备200中,该虚拟化设备200为物理设备,在虚拟化设备200中部署有多个处理器(Central Processing Unit,CPU)、内存、网络设备存储设备等硬件资源。
一般而言,虚拟化是值计算机元件在虚拟的基础上运行,用逻辑表示资源,通过在虚拟化设备上200添加虚拟化层,从而实现虚拟化,如虚拟化处理器、虚拟内存管理器(Memory Management Unit,MMU)和虚拟I/O系统等等。虚拟化层将下层资源封装,抽象为另一种形式的资源,提供给上层使用。虚拟化可以将一份资源抽象为多份,也可以将多份资源抽象成一份。
在虚拟化设备上200中运行第一组件210,即虚拟化平台所在的系统,在第一组件210上通过虚拟化构建第二组件220,分别运行多个不同或相同的操作系统。
在本申请实施例的一个示例中,第一组件210可以为宿主机、第二组件220可以为运行在宿主机上的虚拟机,又称之为客户机,如Hyper-V,Xen,KVM(Kernel-based VirtualMachine),Vmware等等。
第二组件220(如客户机)是由虚拟化层提供的独立的计算机系统,拥有自己的虚拟硬件(CPU、内存、网络设备,存储设备等),对于上层,第二组件220(如客户机)就是真实的计算,从应用程序的角度看,程序运行在第二组件220(如客户机)上与运行在第一组件210(如宿主机)上是一样的。
在具体实现中,虚拟化的一种方式为半虚拟化(Paravirtualization,PV),即使用Hypervisor(虚拟机管理程序)分享存取底层的硬件资源,虚拟出来的架构与物理架构一致,通常修改第二组件220(如客户机)的内核,然后实现就请求转发给Hypervisor(虚拟机管理程序),让Hypervisor(虚拟机管理程序)执行之后再返回(hyper call)给第二组件220(如客户机)。
该方法具体可以包括如下步骤:
步骤101,第二组件将多个虚拟处理器的信息通知第一组件。
第二组件在需求核间中断时,可以查询作为通信对象(即发送核间中断的对象)的虚拟处理器的信息,并通知第一组件,让第一组件发送核间中断。
在一个示例中,虚拟处理器的信息可以为bitmap(位图),每一位数据可以表示一个作为通信对象的虚拟处理器,如设置bit为1表示作为通信对象的虚拟处理器,设置bit为0表示不是作为通信对象的虚拟处理器。
当然,虚拟处理器的信息也可以采用其他形式进行表示,本申请实施例对此不加以限制。
在本申请的一个实施例中,步骤101可以包括如下子步骤:
子步骤S11,第二组件生成模拟寄存器;
子步骤S12,第二组件生成第一通知消息,所述第一通知消息中包括多个虚拟处理器的信息;
子步骤S13,第二组件将所述第一通知消息写入所述模拟寄存器,以通知第一组件。
模拟寄存器,是在虚拟化下通过程序的形式实现的寄存器(machine specificregister,MSR),模拟寄存器通常被用来做第二组件和第一组件之间的沟通,当第二组件操作这个模拟寄存器时,会引发退出,使得第一通知消息可以到达第一组件处进行处理。
在本申请实施例中,可以模拟一个或多个MSR,获得一个或多个模拟寄存器,以扩大第一通知消息的数据量、支持更多的处理器(核)。
例如,可以模拟0x830MSR,利用其高32位作为bitmap,可以支持32核。
又例如,单独模拟0x830MSR做bitmap,同事,模拟一个MSR做bitmap,一个MSR有64位加上0x830MSR的高32位,共获得96位,可以支持96核。
需要说明的是,如果虚拟处理器的数量超过了单个模拟寄存器可容纳的数据量,则可以通过两次或两次以上的写操作通知第一组件,但是,每次写模拟寄存器会引发退出。
例如,虚拟处理器的数量为128核,而模拟寄存器单次可以容纳96bit,则可以通过一次96位的bitmap、一次32位的bitmap写模拟寄存器,即通过两次写模拟寄存器的操作通知第一组件,引发第二组件的两次退出。
在本申请的另一个实施例中,步骤101可以包括如下子步骤:
子步骤S21,第二组件申请共享内存,并通知第一组件;
在具体实现中,第二组件可以在虚拟机的内存中申请一页共享内存,第二组件和第一组件可以在该共享内存中进行读写操作。
第二组件与第一组件对共享内存的操作,可以采用原子操作(atomicoperation),即不会被线程调度机制打断的操作,这种操作一旦开始,就运行到结束,中间不会有发生context switch(切换到另一个线程),该原子操作包括但不限于XCHG(寄存器和内存变量之间内容的交换指令)等。
需要说明的是,在同一个第一组件中可以运行多个第二组件,各个第二组件可以在其内存中共享内存。
第二组件申请共享内存成功之后,可以通过写MSR(machine specific register)引发退出等方式,将该共享内存的基地址发送给第一组件,使得第一组件可以按照该基地址访问该共享内存。
此后,第二组件和第一组件将以同样的数据结构来解析这个共享内存,以共享虚拟处理器的信息。
子步骤S22,第二组件将多个虚拟处理器的信息写入所述共享内存;
在发送核间中断之前,第二组件将发送核间中断的虚拟处理器的信息(如bitmap)写入共享内存中,以便第一组件可以读取。
需要说明的是,共享内存的写操作,不会引发第二组件的退出。
子步骤S23,第二组件生成第二通知消息并通知第一组件。
在本申请实施例中,可以通过写物理寄存器(即写MSR)的方式通知第一组件,也可以通过其他方式通知第一组件。
其中,物理寄存器是指物理处理器上有真实的寄存器,对该物理寄存器进行写操作会引发第二组件的退出,以使得该第二通知消息到达第一组件,通知第一组件到共享内存中获取虚拟处理器的信息(如bitmap),进而完成核间中断的发送。
当然,上述通知虚拟处理器的信息的方式只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他通知虚拟处理器的信息的方式,本申请实施例对此不加以限制。另外,除了上述通知虚拟处理器的信息的方式外,本领域技术人员还可以根据实际需要采用其它通知虚拟处理器的信息的方式,本申请实施例对此也不加以限制。
步骤102,第一组件获取所述虚拟处理器的信息。
第二组件将需要发送核间中断的虚拟处理器的信息通知第一组件之后,第一组件可以采用相应的方式获取虚拟处理器的信息,进而发送核间中断。
在本申请的一个实施例中,步骤102可以包括如下子步骤:
子步骤S31,第一组件从所述第一通知消息中识别到半虚拟化核间通信的第一标识;
子步骤S32,第一组件依据所述第一标识从所述第一通知消息读取所述多个虚拟处理器的信息。
在本申请实施例中,如果第二组件通过模拟寄存器将虚拟处理器的信息(如bitmap)通知第一组件,则第一组件通过模拟寄存器接收到第一通知消息。
为了便于通知第一组件进行相应的操作,第二组件在写模拟寄存器的第一通知消息时,可以利用MSR信息格式中的保留位,如ICR(中断控制寄存器)的第31位,写入第一标识,表示半虚拟化核间通信。
第一组件在识别出该表示半虚拟化核间通信的第一标识之后,可以按照半虚拟化核间通信预先约定的规范,从第一通知消息读取虚拟处理器的信息(如bitmap)。
在本申请的另一个实施例中,步骤102可以包括如下子步骤:
子步骤S41,第一组件从所述第二通知消息中识别到半虚拟化核间通信的第二标识;
子步骤S42,第一组件依据所述第二标识从所述共享内存中读取所述多个虚拟处理器的信息。
在本申请实施例中,如果第二组件通过共享内存将虚拟处理器的信息(如bitmap)通知第一组件,则第一组件通过物理寄存器接收到第二通知消息。
为了便于通知第一组件进行相应的操作,第二组件在写物理寄存器的第二通知消息时,可以利用MSR信息格式中的保留位,如ICR(中断控制寄存器)的第31位,写入第二标识,表示半虚拟化核间通信。
第一组件在识别出该表示半虚拟化核间通信的第二标识之后,可以按照半虚拟化核间通信预先约定的规范,从该第二组件的共享内存中读取虚拟处理器的信息(如bitmap)。
当然,上述获取虚拟处理器的信息的方式只是作为示例,在实施本申请实施例时,可以根据实际情况设置其他获取虚拟处理器的信息的方式,本申请实施例对此不加以限制。另外,除了上述获取虚拟处理器的信息的方式外,本领域技术人员还可以根据实际需要采用其它获取虚拟处理器的信息的方式,本申请实施例对此也不加以限制。
步骤103,第一组件按照所述信息对所述虚拟处理器发送核间中断信号。
在具体实现中,第一组件维护虚拟处理器与物理处理器之间的对应关系。
第一组件可以按照该信息(如bitmap)获知作为通信对象的虚拟处理器,按照虚拟处理器与物理处理器之间的对应关系、查询该虚拟处理器所在的物理处理器,通过硬件发送核间中断的信号至该物理处理器,以通知该虚拟处理器。
目前,对于x2apic等架构的处理器,发送核间中断有两种地址模式,一种是physical(物理),另一种是cluster(集群)。
如果使用physical模式发送核间中断,在一次组播的过程中,在发送核间中断的处理器上引发的第二组件的退出次数,与接收核间中断的处理器的数量相等。
如果使用cluster模式发送核间中断,需要有IOMMU(input/output memorymanagement unit,输入/输出内存管理单元)硬件进行中断重映射,在虚拟化的环境中无法模拟IOMMU硬件,因此,在虚拟化的环境中无法通过使用cluster模式发送IPI。
即使实现了IOMMU硬件的模拟,在一次组播的过程中,在发送核间中断的处理器上引发的第二组件的退出次数,与接收核间中断的处理器所属的cluster的数量相等。
本申请实施例中,第二组件将多个虚拟处理器的信息通知第一组件,第一组件按照该信息对多个虚拟处理器发送核间中断信号,通过一次性将虚拟处理器的信息通知第一组件,大大减少第二组件与第一组件之间的通信次数,进而大大减少了因第二组件与第一组件之间的通信造成的第二组件的退出的次数,在一次组播的过程中,第二组件退出的次数少至一次,从而减少核间通信的耗时,提升第二组件与第一组件的性能。
参照图3,示出了本申请的另一种核间通信方法实施例的步骤流程图,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述方法具体可以包括如下步骤:
步骤301,第二组件询问第一组件是否支持半虚拟化核间通信。
步骤302,第二组件在获知第一组件支持半虚拟化核间通信时,通知第一组件、所述第二组件支持半虚拟化核间通信。
步骤303,第二组件将多个虚拟处理器的信息通知第一组件。
步骤304,第一组件获取所述多个虚拟处理器的信息。
步骤305,第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
由于第二组件和第一组件的系统版本不一定恒定,并非都支持半虚拟化核间通信(PV-IPI),因此,第二组件在采用半虚拟化核间通信(PV-IPI)的规范设置定时器之前,可以与第一组件进行特性同步。
在具体实现中,如果第二组件本身支持半虚拟化核间通信(PV-IPI)的特性,则可以采用CPUID指令询问第一组件是否支持半虚拟化核间通信(PV-IPI)的特性。
如果第二组件获知第一组件支持半虚拟化核间通信(PV-IPI)的特性,第二组件可以通过写寄存器MSR的方式通知第一组件,此第二组件支持半虚拟化核间通信(PV-IPI)的特性,后续可以按照半虚拟化核间通信(PV-IPI)进行定时器的设置。
其中,半虚拟化(Paravirtualization,PV)是指需要对第二组件操作系统做修改或者需要第二组件操作系统配合完成的一些虚拟化特性。
需要说明的是,半虚拟化核间通信(PV-IPI)可以指本申请实施例中核间通信的发送方法,如步骤101-步骤103、步骤301-305,等等,相关之处参见核间通信方法实施例的部分说明即可,在此不加以详述。
此外,如果第二组件或第一组件任一不支持半虚拟化核间通信的特征,则可以通过其他方式发送核间通信,本申请实施例对此不加以限制。
为使本领域技术人员更好地理解本申请实施例,以下通过具体的示例来说明本申请实施例中的核间通信方法。
如图4A和图4B所示,虚拟化平台所在的系统为第一组件340,在第一组件中存在多个CPU,包括CPU_0、CPU_1、CPU_2、CPU_3,在第一组件410上运行第二组件420,第二组件420的vcpu_1对应第一组件410的CPU_0、第二组件420的vcpu_2对应第一组件410的CPU_3、第二组件320的vcpu_0对应第一组件410的CPU_2、第二组件420的vcpu_3对应第一组件410的CPU_1。
如图4A和图4B中的虚线箭头所示,在第二组件420中,vcpu_1意图发送核间中断至vcpu_0、vcpu_2。
在一种方式中,如图4A所示,第二组件420模拟0x830MSR,生成MSR421,执行步骤A1,将vcpu_0、vcpu_2的bitmap(00000101)生成一MSR信息,并在ICR的第31位写入PV-IPI的标识,通过写0x830MSR的方式,引发第二组件320的退出,并将该MSR信息发送至第一组件310。
第一组件410从MSR信息中ICR的第31位识别出PV-IPI的标识,按照PV-IPI的规范,从该MSR信息中读取vcpu_0、vcpu_2的bitmap(00000101)。
第一组件410执行步骤A2,根据第一组件410的CPU与第二组件420的vcpu之间的对应关系,从CPU_0发送IPI至CPU_2、CPU_3,从而传达vcpu_0、vcpu_2。
在另一种方式中,如图4B所示,执行步骤S2,第二组件420申请共享内存422,并将其地址通知第一组件410,第二组件420执行步骤B1,将vcpu_0、vcpu_2的bitmap(00000101)写入共享内存422中,执行步骤B2,生成一MSR信息,并在ICR的第31位写入PV-IPI的标识,通过写MSR的方式,引发第二组件420的退出,并将该MSR信息发送至第一组件410。
第一组件410从MSR信息中ICR的第31位识别出PV-IPI的标识,按照PV-IPI的规范,执行步骤B3,从共享内存321中读取vcpu_0、vcpu_2的bitmap(00000101)。
第一组件410执行步骤B4,根据第一组件410的CPU与第二组件420的vcpu之间的对应关系,从CPU_0发送IPI至CPU_2、CPU_3,从而传达vcpu_0、vcpu_2。
在一次组播的过程中,vcpu_1同时发送核间中断至vcpu_0、vcpu_2,仅引发一次第二组件420的退出。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请的一种核间通信装置实施例的结构框图,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件510,在所述第一组件510上通过虚拟化构建第二组件520,其中,
所述第二组件520包括:
信息通知模块521,用于将多个虚拟处理器的信息通知第一组件510;
所述第一组件510包括:
信息获取模块511,用于获取所述多个虚拟处理器的信息;
核间中断发送模块512,用于按照所述信息对所述多个虚拟处理器发送核间中断信号。
在本申请的一个实施例中,所述信息通知模块521包括:
寄存器模拟子模块,用于生成模拟寄存器;
通知消息生成子模块,用于生成第一通知消息,所述第一通知消息中包括多个虚拟处理器的信息;
写模拟寄存器子模块,用于将所述第一通知消息写入所述模拟寄存器,以通知第一组件。
在本申请的另一个实施例中,所述信息通知模块521包括:
共享内存申请子模块,用于申请共享内存,并通知第一组件510;
写共享内存子模块,用于将多个虚拟处理器的信息写入所述共享内存;
通知消息通知子模块,用于将生成第二通知消息并通知第一组件510。
在本申请的一个实施例中,所述信息获取模块511包括:
第一标识识别子模块,用于从所述第一通知消息中识别到半虚拟化核间通信的第一标识;
第一信息读取子模块,用于依据所述第一标识从所述第一通知消息读取所述多个虚拟处理器的信息。
在本申请的另一个实施例中,所述信息获取模块511包括:
第二标识识别子模块,用于从所述第二通知消息中识别到半虚拟化核间通信的第二标识;
第二信息读取子模块,用于依据所述第二标识从所述共享内存中读取所述多个虚拟处理器的信息。
参照图6,示出了本申请的另一种核间通信装置实施例的结构框图,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件610,在所述第一组件610上通过虚拟化构建第二组件620,其中,
所述第二组件620包括:
特性支持询问模块621,用于询问第一组件610是否支持半虚拟化核间通信;
特性支持通知模块622,用于在获知第一组件610支持半虚拟化核间通信时,通知第一组件610、所述第二组件620支持半虚拟化核间通信;
信息通知模块623,用于将多个虚拟处理器的信息通知第一组件610;
所述第一组件610包括:
信息获取模块611,用于获取所述多个虚拟处理器的信息;
核间中断发送模块612,用于按照所述信息对所述多个虚拟处理器发送核间中断信号。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图7是本申请实施例提供的一种虚拟化设备结构示意图。该虚拟化设备700可因配置或性能不同而产生比较大的差异,可以包括多个中央处理器(central processingunits,CPU)722(例如,多个处理器)和存储器732,一个或一个以上存储应用程序742或数据744的存储介质730(例如一个或一个以上海量存储设备)。其中,存储器732和存储介质730可以是短暂存储的或持久存储的。存储在存储介质730的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对虚拟化设备中的一系列指令操作。更进一步地,中央处理器722可以设置为与存储介质730通信,在虚拟化设备700上执行存储介质730中的一系列指令操作。
虚拟化设备700还可以包括一个或一个以上电源726,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口758,一个或一个以上键盘756,和/或,一个或一个以上操作系统741,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。其中,中央处理器722可以在虚拟化设备700上执行以下操作的指令:
第二组件将多个虚拟处理器的信息通知第一组件;
第一组件获取所述多个虚拟处理器的信息;
第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
可选地,中央处理器722还可以在虚拟化设备700上执行以下操作的指令:
第二组件询问第一组件是否支持半虚拟化核间通信;
第二组件在获知第一组件支持半虚拟化核间通信时,通知第一组件、第二组件支持半虚拟化核间通信。
可选地,中央处理器722还可以在虚拟化设备700上执行以下操作的指令:
第二组件生成模拟寄存器;
第二组件生成第一通知消息,所述第一通知消息中包括多个虚拟处理器的信息;
第二组件将所述第一通知消息写入所述模拟寄存器,以通知第一组件。
可选地,中央处理器722还可以在虚拟化设备700上执行以下操作的指令:
第二组件申请共享内存,并通知第一组件;
第二组件将多个虚拟处理器的信息写入所述共享内存;
第第二组件生成第二通知消息并通知第一组件。
可选地,中央处理器722还可以在虚拟化设备700上执行以下操作的指令:
第一组件从所述第一通知消息中识别到半虚拟化核间通信的第一标识;
第一组件依据所述第一标识从所述第一通知消息读取所述多个虚拟处理器的信息。
可选地,中央处理器722还可以在虚拟化设备700上执行以下操作的指令:
第一组件从所述第二通知消息中识别到半虚拟化核间通信的第二标识;
第一组件依据所述第二标识从所述共享内存中读取所述多个虚拟处理器的信息。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种核间通信方法、一种核间通信装置和一种虚拟化设备,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (13)
1.一种核间通信方法,其特征在于,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述方法包括:
第二组件将多个虚拟处理器的信息通知第一组件;
其中,所述虚拟处理器的信息包括采用位图表示,每一位数据表示一个发送核间中断信号的对象的虚拟处理器,所述第二组件将多个虚拟处理器的信息通知第一组件,包括:
所述第二组件在需要进行核间通信时,查询发送核间中断信号的对象的虚拟处理器的信息,并通知所述第一组件;
第一组件获取所述多个虚拟处理器的信息;
第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
2.根据权利要求1所述的方法,其特征在于,在所述第二组件将虚拟处理器的信息通知第一组件的步骤之前,所述方法还包括:
第二组件询问第一组件是否支持半虚拟化核间通信;
第二组件在获知第一组件支持半虚拟化核间通信时,通知第一组件所述第二组件支持半虚拟化核间通信。
3.根据权利要求1或2所述的方法,其特征在于,所述第二组件将多个虚拟处理器的信息通知第一组件的步骤包括:
第二组件生成模拟寄存器;
第二组件多个虚拟处理器生成第一通知消息,所述第一通知消息中包括多个虚拟处理器的信息;
第二组件将所述第一通知消息写入所述模拟寄存器,以通知第一组件。
4.根据权利要求1或2所述的方法,其特征在于,所述第二组件将多个虚拟处理器的信息通知第一组件的步骤包括:
第二组件申请共享内存,并通知第一组件;
第二组件将多个虚拟处理器的信息写入所述共享内存;第二组件生成第二通知消息并通知第一组件。
5.根据权利要求3所述的方法,其特征在于,所述第一组件获取所述多个虚拟处理器的信息的步骤包括:
第一组件从所述第一通知消息中识别到半虚拟化核间通信的第一标识;
第一组件依据所述第一标识从所述第一通知消息读取所述多个虚拟处理器的信息。
6.根据权利要求4所述的方法,其特征在于,所述第一组件获取所述多个虚拟处理器的信息的步骤包括:
第一组件从所述第二通知消息中识别到半虚拟化核间通信的第二标识;
第一组件依据所述第二标识从所述共享内存中读取所述多个虚拟处理器的信息。
7.一种核间通信装置,其特征在于,应用在虚拟化设备中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,其中,
所述第二组件包括:
信息通知模块,用于将多个虚拟处理器的信息通知宿主机;
所述第一组件包括:
信息获取模块,用于获取所述多个虚拟处理器的信息;
核间中断发送模块,用于按照所述信息对所述多个虚拟处理器发送核间中断信号;
其中,所述虚拟处理器的信息包括采用位图表示,每一位数据表示一个发送核间中断信号的对象的虚拟处理器,所述将多个虚拟处理器的信息通知宿主机,包括:
所述第二组件用于在需要进行核间通信时,查询发送核间中断信号的对象的虚拟处理器的信息,并通知所述第一组件。
8.根据权利要求7所述的装置,其特征在于,所述第二组件还包括:
特性支持询问模块,用于询问第一组件是否支持半虚拟化核间通信;
特性支持通知模块,用于在获知第一组件支持半虚拟化核间通信时,通知第一组件、所述第二组件支持半虚拟化核间通信。
9.根据权利要求7或8所述的装置,其特征在于,所述信息通知模块包括:
寄存器模拟子模块,用于生成模拟寄存器;
通知消息生成子模块,用于多个虚拟处理器生成第一通知消息,所述第一通知消息中包括多个虚拟处理器的信息;
写模拟寄存器子模块,用于将所述第一通知消息写入所述模拟寄存器,以通知第一组件。
10.根据权利要求7或8所述的装置,其特征在于,所述信息通知模块包括:
共享内存申请子模块,用于申请共享内存,并通知第一组件;
写共享内存子模块,用于将多个虚拟处理器的信息写入所述共享内存;
通知消息通知子模块,用于生成第二通知消息并通知第一组件。
11.根据权利要求9所述的装置,其特征在于,所述信息获取模块包括:
第一标识识别子模块,用于从所述第一通知消息中识别到半虚拟化核间通信的第一标识;
第一信息读取子模块,用于依据所述第一标识从所述第一通知消息读取所述多个虚拟处理器的信息。
12.根据权利要求10所述的装置,其特征在于,所述信息获取模块包括:
第二标识识别子模块,用于从所述第二通知消息中识别到半虚拟化核间通信的第二标识;
第二信息读取子模块,用于依据所述第二标识从所述共享内存中读取所述多个虚拟处理器的信息。
13.一种虚拟化设备,其特征在于,包括:
多个处理器;
存储器;和
一个或多个模块,所述一个或多个模块存储于所述存储器中并被配置成由所述一个或多个处理器执行,其中,在所述虚拟化设备中运行第一组件,在所述第一组件上通过虚拟化构建第二组件,所述多个处理器被配置为:
第二组件将多个虚拟处理器的信息通知第一组件;
其中,所述虚拟处理器的信息包括采用位图表示,每一位数据表示一个发送核间中断信号的对象的虚拟处理器,所述第二组件将多个虚拟处理器的信息通知第一组件,包括:
所述第二组件在需要进行核间通信时,查询发送核间中断信号的对象的虚拟处理器的信息,并通知所述第一组件;
第一组件获取所述多个虚拟处理器的信息;
第一组件按照所述信息对所述多个虚拟处理器发送核间中断信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611122215.6A CN108196945B (zh) | 2016-12-08 | 2016-12-08 | 一种核间通信方法、装置和虚拟化设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611122215.6A CN108196945B (zh) | 2016-12-08 | 2016-12-08 | 一种核间通信方法、装置和虚拟化设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108196945A CN108196945A (zh) | 2018-06-22 |
CN108196945B true CN108196945B (zh) | 2022-06-07 |
Family
ID=62572605
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611122215.6A Active CN108196945B (zh) | 2016-12-08 | 2016-12-08 | 一种核间通信方法、装置和虚拟化设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108196945B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618962A (zh) * | 2019-08-16 | 2019-12-27 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | Ft-m6678芯片的多核网络并发访问方法、系统及介质 |
CN112395040B (zh) * | 2019-08-19 | 2024-10-01 | 阿里巴巴集团控股有限公司 | 内存数据传输方法、系统及服务器 |
CN113806006A (zh) * | 2020-06-12 | 2021-12-17 | 华为技术有限公司 | 一种异构指令集架构下异常或中断的处理方法、装置 |
CN114003363B (zh) * | 2021-11-01 | 2022-07-22 | 支付宝(杭州)信息技术有限公司 | 线程间中断信号发送方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093449A (zh) * | 2007-06-22 | 2007-12-26 | 浙江大学 | 基于处理器虚拟化技术的虚拟机系统及其实现方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0455946A3 (en) * | 1990-05-07 | 1992-10-28 | International Business Machines Corporation | System for debugging shared memory multiprocessor computers |
US7689747B2 (en) * | 2005-03-28 | 2010-03-30 | Microsoft Corporation | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
CN100428164C (zh) * | 2006-01-23 | 2008-10-22 | 联想(北京)有限公司 | 一种虚拟机系统及其设备访问方法 |
US8443166B2 (en) * | 2009-03-06 | 2013-05-14 | Vmware, Inc. | Method for tracking changes in virtual disks |
JP5590022B2 (ja) * | 2011-12-28 | 2014-09-17 | 富士通株式会社 | 情報処理装置、制御方法および制御プログラム |
CN103559087B (zh) * | 2013-10-31 | 2017-11-28 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和系统 |
-
2016
- 2016-12-08 CN CN201611122215.6A patent/CN108196945B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101093449A (zh) * | 2007-06-22 | 2007-12-26 | 浙江大学 | 基于处理器虚拟化技术的虚拟机系统及其实现方法 |
Non-Patent Citations (2)
Title |
---|
Efficient consolidation-aware VCPU scheduling on multicore virtualization platform;Bei Wang 等;《Future Generation Computer Systems》;20150828;第229-237页 * |
多核环境下虚拟机VCPU调度研究_问题与挑战;金海;《计算机研究与发展》;20110715;第48卷(第7期);第1216-1224页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108196945A (zh) | 2018-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970821B (zh) | 一种kvm虚拟化下处理i/o请求的方法和装置 | |
Sahni et al. | A hybrid approach to live migration of virtual machines | |
US9870248B2 (en) | Page table based dirty page tracking | |
US8966477B2 (en) | Combined virtual graphics device | |
US9384007B2 (en) | Memory virtualization-based snapshot boot apparatus and method | |
US10521256B2 (en) | Virtual machine migration acceleration with page state indicators | |
US11487523B2 (en) | Updating machine emulator | |
US9588793B2 (en) | Creating new virtual machines based on post-boot virtual machine snapshots | |
US9626221B2 (en) | Dynamic guest virtual machine identifier allocation | |
US9727368B1 (en) | Virtual machine migration acceleration with page state indicators | |
CN107807839B (zh) | 一种修改虚拟机内存数据的方法、装置及电子设备 | |
CN110609730B (zh) | 一种实现虚拟处理器间中断透传的方法及设备 | |
WO2016201589A1 (en) | Computing apparatus and method with persistent memory | |
CN108196945B (zh) | 一种核间通信方法、装置和虚拟化设备 | |
WO2022002106A1 (zh) | 中断处理方法、中断管理器、电子设备、计算机可读存储介质 | |
CN105190552A (zh) | 执行多个管理程序的系统和方法 | |
US9898307B2 (en) | Starting application processors of a virtual machine | |
US10503659B2 (en) | Post-copy VM migration speedup using free page hinting | |
US10768959B2 (en) | Virtual machine migration using memory page hints | |
CN117331704B (zh) | 图形处理器gpu调度方法、装置和存储介质 | |
US9436489B2 (en) | Virtual machine data replication with shared resources | |
US9684529B2 (en) | Firmware and metadata migration across hypervisors based on supported capabilities | |
US20150242330A1 (en) | Guest-programmable location of advanced configuration and power interface (acpi) tables in virtualized systems | |
US20230185593A1 (en) | Virtual device translation for nested virtual machines | |
JP2018181378A (ja) | ハードウェア内で変換索引バッファ(tlb)シュートダウンを指示および追跡するための方法およびシステム、並びに非一時的なコンピュータ可読媒体 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230522 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |