CN111857943B - 数据处理的方法、装置与设备 - Google Patents
数据处理的方法、装置与设备 Download PDFInfo
- Publication number
- CN111857943B CN111857943B CN201910363976.8A CN201910363976A CN111857943B CN 111857943 B CN111857943 B CN 111857943B CN 201910363976 A CN201910363976 A CN 201910363976A CN 111857943 B CN111857943 B CN 111857943B
- Authority
- CN
- China
- Prior art keywords
- data
- virtual machine
- memory space
- virtual
- type
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 127
- 230000008569 process Effects 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 189
- 230000006870 function Effects 0.000 claims description 85
- 238000013507 mapping Methods 0.000 claims description 28
- 230000009471 action Effects 0.000 claims description 22
- 230000005055 memory storage Effects 0.000 claims description 13
- 238000013500 data storage Methods 0.000 abstract description 12
- 230000000875 corresponding effect Effects 0.000 description 65
- 238000010586 diagram Methods 0.000 description 15
- 230000008859 change Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003863 physical function Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/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/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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
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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种数据处理的方法、装置与设备,该方法包括:在数据存储过程中,虚拟机监控器将虚拟I/O设备的硬件数据中的第一类数据存储在服务器的第一内存空间中。在数据访问过程中,虚拟机接收到I/O访问请求后,识别该I/O访问请求所请求访问的硬件数据类型,识别该I/O访问请求所请求访问的硬件数据类型为第一类数据,则虚拟机从服务器的第一内存空间中访问数据。由此降低对I/O设备硬件资源的占用。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及虚拟化领域中一种数据处理的方法、装置与设备。
背景技术
随着云计算技术的快速发展,各种云平台基础设施,例如存储、网络设备等输入\输出(input\output,I\O)实例得到了越来越广泛的应用。虚拟化场景是云计算的主要部分,其对I\O设备的需求体量极大,现在虚拟机使用的高性能虚拟I\O设备大多基于硬件辅助的虚拟化技术实现,例如通过单根输入\输出虚拟化(single root I/Ovirtualization,SR-IOV)技术可以将一个硬件设备虚拟化成多个虚拟设备呈现给虚拟机使用,且虚拟机访问虚拟设备时可以绕过宿主机的参与从而实现设备I\O的高性能。
SR-IOV是虚拟化I/O硬件解决方案,它属于硬件辅助的I\O虚拟化技术中的一种,包括物理功能(physical functions,PF)和虚拟功能(virtual functions,VF),其中PF是指外设部件互连标准(peripheral component interconnect express,PCIe)设备所支持的一项PCIe功能,一个PF可以扩展出若干个VF。VF是指支持SR-IOV的I/O设备虚拟后获得,一个VF对应一个虚拟I/O设备,虚拟机通过VF实现对虚拟I/O设备使用。每个虚拟I/O设备对应有独立的I/O设备存储空间,I/O设备存储空间设置于I/O设备中,该I/O设备存储空间用于存储指示虚拟I/O设备工作状态的硬件数据,例如虚拟网卡设备对应的I/O设备存储空间中存储了虚拟网卡设备的硬件数据。
由上述描述可知,一个支持SR-IOV的I/O设备,当其包括多个虚拟I/O设备时,需要为每个虚拟I/O设备配置完整的I/O设备存储空间,以存储虚拟I/O设备的硬件数据,这样会增大I/O设备硬件资源的开销。
发明内容
本申请提供一种数据处理的方法、装置与设备,以降低对I/O设备硬件资源的开销。
第一方面,本申请提供了一种数据处理的方法,该方法涉及的是数据访问过程,该方法应用于数据处理系统,该数据处理系统包括虚拟机和输入/输出I/O设备,该方法包括:虚拟机接收I/O访问请求,其中,该I/O访问请求用于访问数据,且该I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,虚拟I/O设备为I/O设备虚拟化后获得的I/O设备;虚拟机识别该I/O访问请求中的硬件数据类型为第一类数据时,虚拟机从第一内存空间中获取待访问数据,其中,第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,第一内存空间为数据处理系统的内存存储空间。
本申请通过将I/O设备的硬件数据中的第一类数据存储在数据处理系统的内存中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,本申请可以大大降低对I/O设备存储空间的占用,进而较少对I/O设备的硬件开销。虚拟机访问数据时,当虚拟机识别I/O访问请求所请求访问的硬件数据类型为第一类数据时,虚拟机从数据处理系统的第一内存空间中访问数据,这于已有的虚拟机均从I/O设备存储空间中访问数据相比,可以较少对I/O设备的访问次数,进而有效提高数据访问速度。
在一种可能的实现方式中,若上述第一类数据包括第一数据,该第一数据为虚拟机访问时引起I/O设备的附加操作的硬件数据,第一内存空间包括第一子内存空间,该第一子内存空间中存储有第一数据和处理函数,该处理函数用于仿真第一数据对应的附加操作。此时,虚拟机从第一内存空间中获取待访问数据,包括:虚拟机从第一子内存空间中获取第一数据,并使得虚拟机监控器调用所述处理函数仿真第一数据对应的附加操作,以控制I/O设备执行所述附加操作对应的动作,其中数据处理系统包括虚拟机监控器。本申请,将第一类数据中虚拟机访问时引起I/O设备的附加操作的第一数据存储在第一内存空间的第一子内存空间中,方便虚拟机从该第一子内存空间中访问该第一数据,同时在该第一子内存空间中存储第一数据对应的处理函数,这样当虚拟监控机检测到虚拟机访问第一子内存空间中的第一数据时,可以调用该处理函数来仿真第一数据对应的附加操作,以控制I/O设备执行该附加操作对应的动作,保证了虚拟机对第一数据访问的真实性和有效性。
在另一种可能的实现方式中,第一类数据还包括第二数据,该第二数据为第一类数据中除上述第一数据之外的硬件数据;第一内存空间还包括第二子内存空间,第二数据存储在第二子内存空间中。此时,虚拟机从第一内存空间中获取待访问数据包括:虚拟机从第二子内存空间中访问第二数据。本申请,虚拟机直接从第二子内存空间中访问第二数据,而不是从I/O设备存储空间中访问第二数据,这样可以减少对I/O设备的操作次数,且降低I/O设备的硬件开销。
可选的,虚拟机的虚拟地址与第一内存空间的地址之间具有映射关系,这样虚拟机根据该映射关系可以直接从第一内存空间中访问到第一类数据,进而提高了对第一类数据的访问速度。
进一步的,本申请的虚拟I/O设备的硬件数据还包括第二类数据,该第二类数据为虚拟I/O设备的硬件数据中除第一类数据之外的硬件数据,第二类数据存储在I/O设备存储空间中,该I/O设备存储空间设置在I/O设备中,为I/O设备的存储空间。
此时,本申请的方法还包括:虚拟机识别该I/O访问请求中的硬件数据类型为第二类数据时,虚拟机从I/O设备存储空间中获取待访问数据。本申请,由于第二数据为虚拟I/O设备在数据处理过程中会发生变化的硬件数据,而这些硬件数据被访问时,I/O设备需要立即获知,因此,本申请将第二类数据存储在I/O设备存储空间中,方便I/O设备及时获知第二类数据被虚拟机访问,并立即采取相应的动作,进而保证数据访问时效性。
可选的,虚拟机基于直通方式,从I/O设备存储空间中访问第二类数据,进一步提高了第二类数据的访问时效性。
第二方面,本申请提供一种数据处理方法,该方法涉及涉及的是数据存储过程,该方法应用于数据处理系统,数据处理系统包括虚拟机监控器、虚拟机和输入/输出I/O设备,该方法包括:虚拟机监控器获取第一类数据,其中第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,虚拟I/O设备为I/O设备虚拟化后获得的I/O设备;虚拟机监控器将第一类数据存储在第一内存空间,该第一内存空间为数据处理系统的内存中存储空间。
本申请,虚拟机监控器将虚拟I/O设备的硬件数据中的第一类数据存储在服务器的第一内存空间中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,当I/O设备包括的虚拟I/O设备较多时,本申请的方法可以大大降低对I/O设备存储空间的占用,较少对I/O设备的硬件开销。
在一种示例中,上述虚拟机监控器将所述第一类数据存储在第一内存空间之前,该方法还包括:虚拟机监控器根据所述第一类数据的大小,从所述数据处理系统的内存存储空间中申请所述第一内存空间。这样可以包括第一内存空间中可以存储下第一类数据。
在一种可能的实现方式中,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据,此时,本申请的方法包括:虚拟机监控器根据所述第一数据的大小,从所述第一内存空间中申请第一子内存空间;虚拟机监控器将所述第一数据和处理函数存储在所述第一子内存空间中,所述处理函数用于仿真所述第一数据对应的附加操作。这样将第一数据存储在第一内存空间的第一子内存空间中,当虚拟机访问第一数据时,虚拟机可以直接从第一子内存空间中访问第一数据,而不是从I/O设备存储空间中访问第一数据,这样可以减少对I/O设备的操作次数,且降低I/O设备的硬件开销。同时在该第一子内存空间中存储第一数据对应的处理函数,这样当虚拟监控机检测到虚拟机访问第一子内存空间中的第一数据时,可以调用该处理函数来仿真第一数据对应的附加操作,以控制I/O设备执行该附加操作对应的动作,保证了虚拟机对第一数据访问的真实性和有效性。
在该实现方式下,本申请还包括:虚拟机监控器检测到所述虚拟机从第一子内存空间中访问所述第一数据时,调用所述处理函数仿真所述第一数据对应的附加操作;虚拟机监控器控制所述I/O设备执行所述附加操作对应的动作,进而保证了虚拟机对第一数据访问的真实性和有效性。
在另一种可能的实现方式中,第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;此时该方法还包括:虚拟机监控器根据所述第二数据的大小,从所述第一内存空间中申请第二子内存空间;虚拟机监控器将所述第二数据存储在所述第二子内存空间中。这样可以实现将第二数据完成地存储在第二子内存中,当虚拟机访问第二数据时,虚拟机可以直接从第二子内存空间中访问第二数据,而不是从I/O设备存储空间中访问第二数据,这样可以减少对I/O设备的操作次数,且降低I/O设备的硬件开销。
在另一种可能的实现方式中,上述方法还包括:虚拟机监控器检测到所述第二数据发生变化时,将变化后的所述第二数据发送给所述I/O设备。这样当虚拟I/O设备的协议更新,增加新的功能域段或增加厂商特定的寄存器时,通过更改或增加第二子内存空间中的第二数据来解决新增数据不便于追加的问题。当虚拟机监控器检测到第二子内存空间中的第二数据发送变化时,将变化后的第二数据发送给I/O设备,以确保虚拟机的驱动和I/O设备正常协同工作。
进一步的,本申请的虚拟I/O设备的硬件数据还包括第二类数据,该第二类数据为虚拟I/O设备的硬件数据中除第一类数据之外的硬件数据,即为虚拟I/O设备在数据处理过程中会发生变化的硬件数据,此时,上述方法还包括:虚拟机监控器将第二类数据存储在所述I/O设备存储空间中。本申请,由于第二数据为虚拟I/O设备在数据处理过程中会发生变化的硬件数据,而这些硬件数据被访问时,I/O设备需要立即获知,因此,本申请将第二类数据存储在I/O设备存储空间中,方便I/O设备及时获知第二类数据被虚拟机访问,并立即采取相应的动作,进而保证数据访问时效性。
在一种示例中,上述方法还包括:虚拟机监控器将所述第二类数据在所述I/O设备存储空间中的地址映射至所述第二内存空间的地址,这样,当虚拟机可以通过访问第二内存空间,实现对I/O设备存储空间中的第二类数据的访问。
在另一种示例中,上述方法还包括:虚拟机监控器将所述第一内存空间的地址和所述第二内存空间的地址均映射至所述虚拟机的虚拟地址空间中,这样,虚拟机可以通过访问自身的虚拟地址空间,实现对I/O设备存储空间中的第二类数据的访问,以及对第一内存空间中第一类数据的访问。
第三方面,本申请提供一种数据处理的装置,该装置能够实现上述虚拟机的功能,该装置应用于数据处理系统,所述数据处理系统包括该装置和输入/输出I/O设备,该装置包括:接收单元、处理单元和获取单元,其中接收单元,用于接收I/O访问请求,所述I/O访问请求用于访问数据,所述I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;处理单元,用于识别所述I/O访问请求中的所述硬件数据类型为第一类数据,该第一类数据为所述虚拟I/O设备在数据处理过程中保持不变的硬件数据;获取单元,用于从第一内存空间中获取待访问数据,所述第一内存空间为所述数据处理系统的内存存储空间。
在一种可能的实现方式中,第一类数据包括第一数据,所述第一数据为所述装置访问时引起所述I/O设备的附加操作的硬件数据,所述第一内存空间包括第一子内存空间,所述第一子内存空间中存储有所述第一数据和处理函数,所述处理函数用于仿真所述第一数据对应的附加操作;此时,所述获取单元,具体用于从第一子内存空间中获取所述第一数据,并使得虚拟机监控器调用所述处理函数仿真所述第一数据对应的附加操作,以控制所述I/O设备执行所述附加操作对应的动作,所述数据处理系统包括虚拟机监控器。
在另一种可能的实现方式中,所述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;所述第一内存空间还包括第二子内存空间,所述第二数据存储在所述第二子内存空间中;此时,所述获取单元,具体用于从所述第二子内存空间中访问所述第二数据。
可选的,所述装置的虚拟地址与所述第一内存空间的地址之间的映射关系。
第四方面,本申请提供一种数据处理的装置,该装置能够实现上述虚拟机监控器的功能,该装置应用于数据处理系统,所述数据处理系统包括该装置、虚拟机和输入/输出I/O设备,所述装置包括:获取单元和处理单元,其中,获取单元,用于获取第一类数据,所述第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;处理单元,用于将所述第一类数据存储在第一内存空间,所述第一内存空间为所述数据处理系统的内存中存储空间。
在一种可能的实现方式中,所述处理单元,还用于根据所述第一类数据的大小,从所述数据处理系统的内存存储空间中申请所述第一内存空间。
在另一种可能的实现方式中,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据;所述处理单元,具体用于根据所述第一数据的大小,从所述第一内存空间中申请第一子内存空间,并将所述第一数据和处理函数存储在所述第一子内存空间中,所述处理函数用于仿真所述第一数据对应的附加操作。
在另一种可能的实现方式中,所述处理单元,还用于检测到所述虚拟机从第一子内存空间中访问所述第一数据时,调用所述处理函数仿真所述第一数据对应的附加操作,并控制所述I/O设备执行所述附加操作对应的动作。
在另一种可能的实现方式中,所述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;所述处理单元,具体具体用于根据所述第二数据的大小,从所述第一内存空间中申请第一子内存空间,并将所述第二数据存储在所述第二子内存空间中。
在另一种可能的实现方式中,所述装置还包括:发送单元;其中处理单元,还用于检测所述第二数据发生变化;所述发送单元,用于在所述处理单元检测到所述第二数据发送变化时,将变化后的所述第二数据发送给所述I/O设备。
在另一种可能的实现方式中,所述处理单元,还用于将第二类数据存储在所述I/O设备存储空间中,所述第二类数据为所述虚拟I/O设备的硬件数据中除所述第一类数据之外的硬件数据。
在另一种可能的实现方式中,所述处理单元,还用于将所述第二类数据在所述I/O设备存储空间中的地址映射至所述服务器的第二内存空间的地址。
在另一种可能的实现方式中,所述处理单元,还用于将所述第一内存空间的地址和所述第二内存空间的地址均映射至所述虚拟机的虚拟地址空间中。
第五方面,本申请提供一种数据处理的设备,包括:处理器,所述处理器用于执行实现第一方面或第二方面所述的方法。
第六方面,本申请提供一种计算机存储介质,所述存储介质包括计算机指令,当所述指令被计算机执行时,使得所述计算机实现如第一方面或第二方面所述的方法。
第七方面,本申请提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,数据处理设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得数据处理设备实施第一方面或第二方面任一所述的方法。
本申请提供的数据处理的方法、装置与设备,在数据存储过程中,虚拟机监控器将虚拟I/O设备的硬件数据中的第一类数据存储在服务器的第一内存空间中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,当I/O设备包括的虚拟I/O设备较多时,本申请的方法可以大大降低对I/O设备存储空间的占用和I/O设备的硬件开销。在数据访问过程中,虚拟机接收到I/O访问请求后,识别该I/O访问请求所请求访问的硬件数据类型,识别该I/O访问请求所请求访问的硬件数据类型为第一类数据,则虚拟机从服务器的第一内存空间中访问数据;识别该I/O访问请求所请求访问的硬件数据类型为第二类数据,则虚拟机从I/O设备存储空间中访问数据。可以较少对I/O设备的访问次数,进而有效提高数据访问速度。
附图说明
图1为本申请实施例提供的一种数据处理系统的架构示意图;
图2为本申请实施例涉及的硬件数据的一种配置示意图;
图3为本申请实施例涉及的硬件数据的另一种配置示意图;
图4为本申请实施例提供的数据处理方法的一种流程示意图图;
图5为本申请实施例提供的一种地址映射示意图;
图6为本申请实施例提供的数据处理方法的另一流程示意图;
图7为本申请实施例提供的一种内存分配示意图;
图8为本申请实施例提供的一种装置的结构示意图;
图9为本申请实施例提供的另一种装置的结构示意图;
图10为本申请实施例提供的一种数据处理设备的结构示意图。
具体实施方式
下面结合本申请实施例的附图,对本申请实施例中的技术方案进行描述。
为了便于理解本申请的实施例,首先对本申请实施例涉及到的相关概念进行如下简单介绍:
虚拟机监视器(virtual machine monitor,VMM):用于管理虚拟机。示例性的,该虚拟机监视器包括但不限于Hypervisor,具体可以利用快速模拟器(quick emulator,QEMU)、VMware(一种虚拟机软件)、VirtualBox(一种虚拟机软件)实现虚拟化检视器的功能。
虚拟功能输入\输出(virtual function I/O,VFIO):是一套用户态驱动框架,它向用户态提供访问硬件设备和配置管理设备的接口,Hypervisor可以借助VFIO框架达到将支持SR-IOV的设备直通给虚拟机使用的目的。
内存映射输入\输出(memory mapped I/O,MMIO):是通过将外围设备的资源映射到主机内存空间,以便于中央处理器(central processing unit,CPU)的访问。
虚拟化输入\输出(Virtio):Virtio是一套针对准虚拟化平台的I/O虚拟化框架,其对Hypervisor中的通用模拟设备进行抽象,并提供一组标准接口供虚拟机访问这些模拟设备。
单根输入\输入虚拟化(single root I/O virtualization,SR-IOV):是一种基于硬件的虚拟化解决方案,可以提高虚机性能和可伸缩性,SR-IOV创建了一系列I/O设备物理端口的虚拟功能(VF),每一个虚拟机配置有一个VF,一个VF对应一个虚拟I/O设备,虚拟机通过加载VF来实现对该VF对应的I/O设备的加载。SR-IOV将I/O功能分配到多个虚拟接口以便在虚拟化环境中共享一个I/O设备的资源,SR-IOV能够让网络传输绕过软件模拟层,直接分配到虚拟机,这样就降低了软件模拟层中的I/O开销。创建VF后,可以直接将其指定给虚拟机,此功能使得虚拟功能可以共享物理设备,并在没有CPU和虚拟机管理程序软件开销的情况下执行I/O。这样通过将SR-IOV功能集成到I/O设备上,将单一的I/O设备虚拟成多个VF接口,每个VF接口都有单独的虚拟I/O通道,这些虚拟的I/O通道共用I/O设备的I/O通道。每个虚拟机可占用一个或多个VF接口,这样虚拟机就可以直接访问自己的VF接口来加载虚拟I/O设备,而不需要hypervisor的协调干预,从而大幅提升网络I\O性能。
图1为本申请实施例提供的一种数据处理系统的架构示意图。如图1所示,数据处理系统包括:处理器和I/O设备。为便于描述下文以该数据处理系统为一个服务器为例进行详细说明。
服务器,用于通过运行虚拟化软件,并将服务器的硬件资源虚拟化后生成一个或多个虚拟机。服务器中包括一个或多个处理器,每个处理器包括一个或多个处理器核。服务器中还包括虚拟机监控器。为便于描述,以服务器的处理器仅运行一个虚拟机监控器和一个虚拟机为例进行说明。
I/O设备包括物理网卡、物理卸载卡、物理存储卡等与处理器连接的设备。作为一种可能的可能的实施例,I/O设备可以通过PCIe插槽形式接入服务器,实现I/O设备和处理器的通信。可选的,上述I/O设备也可以直接和服务器主板集成。该I/O设备支持SR-IOV功能,通过将SR-IOV功能集成到I/O设备上,将单一的I/O设备虚拟成一个或多个虚拟I/O设备,图1作为一种示例只示出了I/O设备包括一个虚拟I/O设备的情况。
虚拟机,是公有云服务环境中最常见的一类资源,它是通过在服务器上运行虚拟机监视器程序,例如Hypervisor程序,从而发挥处理器等硬件提供的虚拟化能力,将硬件资源分享给多套并行运行且逻辑隔离的操作系统实现的。虚拟机可以理解为一个客户端,可占用一个或多个虚拟I/O设备,用于根据用户的访问指示访问虚拟I/O设备。每个虚拟机包括前端驱动,当虚拟机访问虚拟I/O设备时,加载该前端驱动,该前端驱动用于访问该虚拟I/O设备的硬件数据,进而实现对虚拟I/O设备的访问。
虚拟机监控器,运行在处理器上,用于管理虚拟机,并为虚拟机指定虚拟I/O设备。虚拟机监控器可以由软件实现,即在处理器中运行特定程序代码,实现对虚拟机的管理。其中,运行程序的处理器可以与运行虚拟机的处理器相同,例如,如图1中虚拟机和虚拟机监控器运行在同一处理器上;也可以使用不同的处理器分别实现虚拟机监控器和虚拟机的功能,例如,利用一个处理器实现虚拟机监控器的功能,利用其他处理器运行虚拟机。可选地,虚拟机监控器还可以由硬件实现,即利用单独的处理器或逻辑电路实现虚拟机监控器的功能。为便于描述,下文以图1所示的虚拟机和虚拟机监控器部署形式为例进行说明。
上述虚拟I/O设备的硬件数据可以理解为该虚拟I/O设备的属性数据、功能数据等使虚拟I/O设备正常工作的数据。
虚拟I/O设备的硬件数据符合预设规定,例如符合预设的I\O协议,下面,以预设的I\O协议为Virtio协议为例进一步介绍本申请实施例。根据Virtio协议规范,虚拟I/O设备符合4个标准能力(Capability),分别为:公共配置(Common Configuration)、通知(Notification)、中断服务程序(Interrupt Service Routine,ISR)和设备的特殊性(Device-specific)。其中,公共配置能力:用于提供队列信息配置(如队列深度、队列地址、队列使能)、设备特征(即设备所支持的特性,如设备支持处理的描述符格式)配置以及设备状态信息等。通知能力:用于主机访问该段空间时,通知设备有I\O访问产生,这类似于非易失性内存主机控制器接口(non-volatile memory express,NVMe)协议中的门铃寄存器。中断服务程序能力:设备通过上报中断给主机CPU通知主机I\O处理完成或出现异常。设备的特殊性能力:由于Virtio协议支持各种各样的I\O设备,例如网卡,磁盘控制器,图形处理器(graphics processing unit,GPU)等,这个空间存储了对应设备的特定属性。以网卡设备为例,这里存放了网卡队列数目,最大支持的最大传输单元(maximum transmission unit,MTU)值,物理地址(media access control或者medium access control,MAC)等信息。为了符合上述4个标准能力,则虚拟I/O设备的硬件数据包括上述4个标准能力所描述的具体硬件数据。其中,公共配置对应的硬件数据包括设备功能(device_feature)、驱动程序功能(driver_feature)和队列(queue)相关的字段,通知对应的硬件数据包括多个通知寄存器,该通知寄存器与上述队列关联,当虚拟机发起I/O访问请求时,会通过更改通知寄存器中字段通知I/O设备有I/O访问请求产生,由此可知,通知寄存器在I/O流程中起至关重要的作用,对这些通知寄存器的处理速度快慢,会影响I/O访问请求的实效性。
服务器将上述虚拟I/O设备的硬件数据划分为第一类数据和第二类数据。本申请实施例对服务器将上述硬件数据划分为第一类数据和第二类数据的划分方式不做限制。
在一种可能的实施例中,服务器按照虚拟I/O设备在数据处理过程中硬件数据是否会发生变化为准则,将上述硬件数据划分为第一类数据和第二类数据。
第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,例如设备功能(device_feature)用于标识虚拟I/O设备支持的特性,队列数(num_queues)用于标识虚拟I/O设备最大支持的队列数目,这些数据全部仅在虚拟I/O设备初始化阶段作为一个固有的信息记录到虚拟I/O设备的驱动当中。设备功能(device_feature)用于表示虚拟I/O设备状态信息,其仅在虚拟I/O设备驱动初始化或驱动卸载阶段会发生变更,在I\O访问流程中均不起作用。这样可以将这些设备功能(device_feature)、驱动程序功能(driver_feature)和队列(queue)等在虚拟I/O设备初始化阶段生效。
第二类数据为虚拟I/O设备的硬件数据中除第一类数据之外的硬件数据,或者,为虚拟I/O设备在数据处理过程中会发生变化的硬件数据,例如Virtio协议中的通知能力空间定义的通知寄存器,用于虚拟机的前端驱动发起I\O访问请求时通知虚拟I/O设备,以使虚拟I/O设备立即启动直接内存存取(direct memory Access,DMA)引擎进行数据搬运,中断服务程序能力空间定义的相关数据,用于标识中断状态信息,这些数据虚拟机直接从I/O设备存储空间访问,以确保实时性。
图2为本申请实施例涉及的硬件数据的一种配置示意图。
在数据配置过程中,虚拟机监控器,用于根据第一类数据的大小,在服务器的内存上为第一类数据申请第一内存空间,并将第一类数据存储在服务器的第一内存空间中。虚拟机监控器,还用于将第二类数据存储在I/O设备存储空间中,该I/O设备存储空间可以理解为I/O设备上可以被处理器访问的存储空间。
在数据访问过程中,虚拟机发起访问请求,若I/O访问请求访问的数据为第一类数据时,则虚拟机从服务器的第一内存空间中访问数据,若访问请求访问的数据为第二类数据时,则虚拟机从I/O设备存储空间中访问数据。
可选的,I/O设备还包括配置空间,该配置空间包括一个或多个基址寄存器(baseaddress register,BAR),本申请实施例的一个虚拟I/O设备具有一个I/O存储空间,该I/O设备存储空间与BAR空间具有映射关系。在实际数据访问过程中,一旦在PF中启用了SR-IOV,就可以通过PF的总线、设备和功能编号(路由ID)访问各个虚拟I/O设备的BAR空间,进而根据BAR空间与I/O设备存储空间之间的映射关系,访问各个虚拟I/O设备的I/O设备存储空间。
可选的,继续参照图2所示,后续为了方便服务器快速访问I/O设备存储空间中保存的第二类数据,则服务器还用于将第二类数据在I/O设备存储空间中的地址映射至服务器的第二内存空间的地址上,以便该服务器的第二内存空间中映射I/O设备存储空间的空间可以理解为MMIO空间。此时,当虚拟机的I/O访问请求为I/O设备存储空间中第一地址段时,可以根据该MMIO空间的地址与I/O设备存储空间的地址之间映射关系,从I/O设备存储空间中访问到第二类数据。
本申请实施例中,为了便于虚拟机监控器对第一类数据的存储,再将第一类数据划分为第一数据和第二数据,其中,第一数据为被虚拟机访问时引起I/O设备的附加操作的硬件数据,第二数据为被虚拟机访问时不会引起I/O设备的附加操作的硬件数据。例如设备功能(device_feature)、驱动程序功能(driver_feature)和队列(queue)相关的数据对虚拟机中的前端驱动来说是固有属性,前端驱动读取这些数据之后结束,不会发生什么后续的附加动作,因此,将这些数据记为第二数据。而公共配置中的device_status字段表示设备状态信息,前端驱动对该device_status字段可写,例如virtio协议定义当前端驱动对device_status写0时,I/O设备需要发生相应的I/O设备复位动作,具体包括清除历史配置信息,清空队列缓存等附加操作,将这些数据记为第一数据。
在上述图1的基础上,参照图3所示,图3为本申请实施例涉及的硬件数据的另一种配置示意图,服务器的第一内存空间包括第一子内存空间和第二子内存空间。
在数据配置过程中,虚拟机监控器,用于根据第一数据的大小,为第一数据申请第一子内存空间,并将第一数据存储在第一子内存空间中,同时为该第一数据配置处理函数,该处理函数用于仿真该第一数据对应的附加操作。虚拟机监控器,还用于根据第二数据的大小,为第二数据申请第二子内存空间,并将该第二数据存储在第二子内存空间中。其中,处理函数可以理解为虚拟机监控器中程序代码或实现上述配置功能的软件模块或单元。
在数据访问过程中,虚拟机接收到I/O访问请求,若I/O访问请求访问的数据为第一数据时,由于该第一数据会引起I/O设备的附加操作,因此虚拟机监控器截获该I/O访问请求,并调用该第一数据对应的处理函数,通过该处理函数仿真第一数据对应的附加操作。同时,控制I/O设备完成该附加操作对应的动作,例如复位动作。若I/O访问请求访问的数据为第二数据时,则虚拟机直接从服务器的第二子内存中访问数据。
接下来,结合上述图1至图3,介绍本申请实施例提供的数据处理方法。
图4为本申请实施例提供的数据处理方法的一种流程图,本申请实施例的数据处理过程包括数据存储过程和数据访问过程,其中数据存储过程由处理器中的虚拟机监控器执行,数据访问过程由处理器中的虚拟机执行,所述方法可以包括:
S101、虚拟机监控器获取第一类数据。
其中,第一类数据属于用于指示虚拟I/O设备工作状态的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备。
虚拟I/O设备的硬件数据的类型可以按照预设规则确定,例如根据I/O协议确定硬件数据的类型。当虚拟I/O设备使用的I/O协议不同时,对应的硬件数据可以不同,例如NVMe协议与Virtio协议对应的硬件数据不同。虚拟I/O设备遵循预设规则进行设计,以一个控制器的形态呈现给服务器,如NVMe控制器或Virtio控制器。这样,虚拟机监控器可以根据虚拟I/O设备遵循的预设规则,获得虚拟I/O设备的硬件数据,并从预设规则出发,从虚拟I/O设备的硬件数据中区分出第一类数据和第二类数据,其具体区分过程可以参照上述图2的描述,在此不再赘述。
在一种可能的实施例中,将虚拟I/O设备在数据处理过程中保持不变的硬件数据确定为第一类数据,如复位\初始化配置\信息协商等数据。将虚拟I/O设备在数据处理过程中会发生变化的硬件数据确定为第二类数据,例如虚拟I/O设备的状态等数据。
可选的,上述虚拟I/O设备的硬件数据可以为I/O设备的硬件数据,即虚拟I/O设备复用I/O设备的硬件数据。
S102、虚拟机监控器将第一类数据存储在第一内存空间。
其中,该第一内存空间为服务器的内存中存储空间。
虚拟机监控器获取虚拟I/O设备的第一类数据后,从服务器的内存空间中为第一类数据申请第一内存空间,并将该第一类数据存储在服务器的第一内存空间中。
在一种可能的实施中,本步骤可以包括:虚拟机监控器根据第一类数据的大小,从服务器的内存空间中申请第一内存空间;并将该第一类数据保存在第一内存空间中。
可选的,该第一内存空间的大小可以大于或等于该第一类数据的大小。第一存储空间的大小也可以为第一值。该第一值为根据系统已经处理的第一类数据的大小的统计值进行计算后获得的数值。第一存储空间的大小也可以直接设置为第二值,第二值具体可以为默认值,当实际处理I/O访问请求时,再根据当前第一类数据的大小进行动态的扩容,扩容后的第一内存空间大于或等于第一类数据的大小。
虚拟机监控器从服务器的内存空间中申请的第一内存空间为未存储数据的内存空间。虚拟机监控器根据虚拟I/O设备的预设规则规定,将第一类数据存储在第一内存空间中,例如,将第一类数据的某一个数据存储在第一内存空间的字段a至字段b对应的空间中,以此类推,实现将第一类数据存储在该第一内存空间中。
第一内存空间可以是内存中连续的预设大小的存储空间,也可以是间断的多个存储区域功能组成的存储空间。
在一种可能的可能的实施例中,本申请实施例还包括S103和S104的步骤。
S103、虚拟机监控器获取第二类数据。
S104、虚拟机监控器将第二类数据存储至I/O设备存储空间中。
虚拟机监控器获取虚拟I/O设备的第二类数据后,将该第二类数据存储在I/O设备存储空间中,该I/O设备存储空间为I/O设备的存储空间中可以被处理器访问的存储空间。这样当访问第二类数据时,虚拟机直接访问I/O设备存储空间,I/O设备及时获知第二类数据被访问,并立即采取相应的动作,以确保数据访问的实时性。
本申请实施例的方法,通过将虚拟I/O设备的第一类数据存储在服务器的第一内存中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,降低了对I/O设备存储空间的占用。将虚拟I/O设备的第二类数据存储在I/O设备存储空间,由于第二数据为虚拟I/O设备在数据处理过程中会发生变化的硬件数据,这样本申请将第二类数据存储在I/O设备存储空间中,当该第二类数据被访问时,I/O设备可以及时获知,并立即采取相应的动作,进而保证数据访问时效性。
下面以虚拟机监控器为QEMU为例,对上述数据存储过程进行说明。
QEMU新增两个参数分别为:第一参数和第二参数,第一参数用于标识虚拟I/O设备支持将硬件数据配置在服务器的内存空间中,第二参数用于标识仿真附加功能所需要的处理函数。QEMU根据虚拟I/O设备的特性,将上述两个参数分配给支持将第一类数据存储在服务器的第一内存空间的虚拟I/O设备。
在数据配置过程中,首先QEMU启动虚拟机,并为虚拟机指定虚拟I/O设备,QEMU判断虚拟I/O设备是否具有上述第一参数和第二参数。若虚拟I/O设备带有上述两个参数,则QEMU使用上述步骤S101至S103的方式为虚拟I/O设备配置硬件数据,具体是,QEMU获取硬件数据,并将硬件数据划分为第一类数据和第二类数据。QEMU从服务器中申请第一内存空间,并将第一类数据存储在该第一内存空间中。QEMU将第二类数据存储在I/O设备存储空间中,进而实现了虚拟I/O设备的硬件数据的配置。
本申请实施例的方法,通过将虚拟I/O设备的一部分硬件数据,即第一类数据存储在服务器的第一内存中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,降低了对I/O设备存储空间的占用,在数据处理过程中,虚拟机监控器可以通过MMIO方式直接从服务器的内存中读取第一类数据,减少了虚拟机监控器和I/O设备间的消息交互,与此同时,由于虚拟机监控器部署在服务器的处理器中,处理器可直接访问内存中数据,使得虚拟机监控器可以更快速的读取第一类数据,减少了整个I/O访问请求处理时长,提升了I/O访问请求的处理效率。
在一种可能的可能的实施例中,为了方便虚拟机对虚拟I/O设备的硬件数据的访问,本申请实施例在数据存储过程中,还包括:
S1041、虚拟机监控器将第二类数据在I/O设备存储空间中的地址映射至服务器的第二内存空间的地址。
上述S1041可以在上述S104之后执行。
如图5所示,为了方便虚拟机访问第二类数据,则将第二类数据在I/O设备存储空间中的地址映射至服务器的第二内存空间的地址。这样,虚拟机监控器可以通过访问第二内存空间的地址,实现对I/O设备存储空间中的第二类数据的访问。
S1042、虚拟机监控器将第一内存空间的地址和所述第二内存空间的地址均映射至所述虚拟机的虚拟地址空间中。
如图5所示,假设将虚拟机的虚拟地址空间划分成2部分,分别记为第一虚拟地址空间和第二虚拟地址空间。虚拟机监控器将第二内存空间的地址映射至虚拟机的第一虚拟地址空间,将第一内存空间映射至虚拟机的第二虚拟地址空间。
这样,在数据访问阶段,由于上述第一内存空间的地址、第二内存空间的地址与虚拟地址空间的映射关系,虚拟机直接访问其可以访问的虚拟地址空间时,可以直接访问到数据。
例如,虚拟机访问第一类数据时,虚拟机访问第二虚拟地址空间,而该第二虚拟地址空间与第一内存空间的地址的映射关系,这样,虚拟机可以直接从第一内存空间中访问到第一类数据。
再例如,虚拟机访问第二类数据时,虚拟机直接访问第一虚拟地址空间,该第一虚拟地址空间与第二内存空间的地址具有映射关系、该第二内存空间的地址与I/O设备存储空间的地址具有映射关系,这样虚拟机可以直接从I/O设备存储空间中访问到第二类数据。
在上述S1041和S1042的基础上,在一种可能的可能的实施例中,上述S104可以被S1043替换。
S1043、虚拟机监控器基于直通方式,将所述第二类数据存储至所述I/O设备存储空间中。
本步骤中,为了提高虚拟机访问第二类数据的速度,则虚拟机监控器基于直通方式,将第二类数据配置至I/O设备存储空间中,保证虚拟机在访问第二类数据时,基于直通方式从I/O设备存储空间中直接访问到第二类数据,以提高第二类数据的访问速度。
本步骤对虚拟机监控器采用的直通方式不做限制,例如本步骤采用的直通方式可以为VFIO,VFIO是一套用户态设备驱动框架,包括:VFIO接口层(interface)、I\O存储单元(I\O memory unit,IOMMU)驱动,Vfio-IOMMU抽象层、Vfio-pci抽象层、PCI总线驱动(pci-bus driver)。
其中,IOMMU是集成在处理器北桥上的模块,用于为I\O设备建立内存地址映射、控制设备间地址隔离、中断重映射等功能,是实现I\O设备直通的核心硬件单元。IOMMU完成I\O设备的DMA地址映射和中断映射工作。
VFIO框架通过对IOMMU模块和PCIe模块进行封装,向用户态程序提供一套使用IOMMU和I\O设备的标准接口。
VFIO通过封装IOMMU驱动向用户态提供管理IOMMU页表的能力,该IOMMU页表用于记录I/O设备与服务器内存地址的映射关系,每个I/O设备有不同IOMMU页表。VFIO还通过对I\O设备驱动的封装向用户态提供直接访问和配置管理设备的接口。在I\O设备采用VFIO直通方式时,用户态Hypervisor程序只需要通过约定的ioctl接口即可调用VFIO提供的各种能力。
具体配置过程包括:虚拟机监控器查询配置第二类数据的I\O设备存储空间,该存储空间可以包括I/O协议中定义的多个寄存器,用于记录第二类数据。接着,将第二类数据在I/O设备存储空间中的地址映射至服务器的第二内存空间的地址。然后,将服务器的第二内存空间的地址均映射至虚拟机的虚拟地址空间,并通过IOMMU来关联I\O设备的DMA和中断资源,最后将相关数据注册给虚拟机,从而实现I\O设备直通功能。
在数据访问过程中,若访问的硬件数据类型为第二类数据,虚拟机基于直通方式,从I/O设备存储空间中直接访问数据。具体是,基于第一虚拟地址空间与第二内存空间的地址具有映射关系、以及第二内存空间的地址与I/O设备存储空间的地址的映射关系,虚拟机直接访问第一虚拟地址空间时,可以直接从I/O设备存储空间中访问到第二类数据,保证了第二类数据的访问时效性。
基于上述S101至S104介绍的虚拟机监控器对数据的存储过程,下面结合步骤S105至S109进一步介绍虚拟机对数据的访问过程。
S105、虚拟机接收I/O访问请求。
该I/O访问请求用于访问数据,该I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型。
该I/O访问请求中访问的硬件数据类型可以为第一类数据,也可以为第二类数据。
S106、虚拟机识别I/O访问请求中的硬件数据类型为第一类数据。
S107、虚拟机从第一内存空间中获取待访问数据。
虚拟机接收到I/O访问请求后,识别该I/O访问请求,若识别该I/O访问请求中的硬件数据类型为第一类数据时,则虚拟机从服务器的第一内存空间中访问该第一类数据。
例如,上述I/O访问请求为读请求,虚拟机接收到该读请求后,识别该读请求所请求的硬件数据类型为第一类数据还是第二类数据,若为第一类数据,则虚拟机从服务器的第一内存空间中读取第一类数据,若为第二类数据,则虚拟机从I/O设备存储空间中读取第二类数据。
S108、虚拟机识别I/O访问请求中的硬件数据类型为第二类数据。
S109、虚拟机从I/O设备存储空间中获取待访问数据。
若虚拟机识别该I/O访问请求中的硬件数据类型为第二类数据,则虚拟机从所述I/O设备存储空间中访问该第二类数据。
在一种示例中,参照上述S1043,虚拟机监控器基于直通方式,将所述第二类数据存储至I/O设备存储空间中,这样在数据访问过程中,虚拟机识别上述I/O访问请求中的硬件数据类型为第二类数据时,虚拟机可以基于直通方式,从I/O设备存储空间中直接访问数据。具体是,基于第一虚拟地址空间与第二内存空间的地址具有映射关系、以及第二内存空间的地址与I/O设备存储空间的地址的映射关系,虚拟机直接访问第一虚拟地址空间时,可以直接从I/O设备存储空间中访问到第二类数据,保证了第二类数据的访问时效性。
由上述可知,本申请实施例的数据访问过程,若I/O访问请求访问的硬件数据类型为第一类数据,则虚拟机从服务器的第一内存空间中访问数据,若I/O访问请求访问的硬件数据类型为第二类数据,则虚拟机从I/O设备存储空间中访问数据,相比于已有的均从I/O设备存储空间中访问数据,可以较少对I/O设备的访问次数,进而提高数据访问速度。
本申请实施例提供的数据处理方法,在数据存储过程中,虚拟机监控器将虚拟I/O设备的硬件数据中的第一类数据存储在服务器的第一内存空间中,相比于已有的将虚拟I/O设备的所有硬件数据存储在I/O设备存储空间中,当I/O设备包括的虚拟I/O设备较多时,本申请实施例的方法可以大大降低对I/O设备存储空间的占用和I/O设备的硬件开销。在数据访问过程中,虚拟机接收到I/O访问请求后,识别该I/O访问请求所请求访问的硬件数据类型,识别该I/O访问请求所请求访问的硬件数据类型为第一类数据,则虚拟机从服务器的第一内存空间中访问数据;识别该I/O访问请求所请求访问的硬件数据类型为第二类数据,则虚拟机从I/O设备存储空间中访问数据,可以较少对I/O设备的访问次数,进而有效提高数据访问速度。
上述图4详细介绍了虚拟机监控器存储第一类数据和第二数据的过程,以及虚拟机访问第一类数据和第二类数据的过程。参照图6所示,图6为本申请实施例提供的数据处理方法的另一流程图,本申请实施例对第一类数据中的第一数据和第二数据的存储过程和访问过程进行详细介绍如下,参照图1、图5和图6所示,本申请实施例的方法可以包括:
S201、虚拟机监控器根据第一数据的大小,从第一内存空间中申请第一子内存空间。
S202、虚拟机监控器将第一数据存储在第一子内存空间中,并为第一数据配置处理函数,该处理函数用于仿真第一数据对应的附加操作。
本申请将第一类数据划分为第一数据和第二数据,本申请对第一数据和第二数据的划分方式不做限制,具体根据实际需要确定。
在一种可选的方式中,基于虚拟机访问第一类数据时是否引起I/O设备的附加操作,例如复位、队列使能等附加操作,将第一类数据划分为第一数据和第二数据。其中第一数据为虚拟机访问时会引起I/O设备的附加操作的硬件数据,第二数据为第一类数据中除第一数据之外的数据,即第二数据为虚拟机访问时不会引起I/O设备的附加操作的硬件数据。
针对第一数据,在存储时,虚拟机监控器根据第一数据的大小,从服务器的第一内存空间中申请用于存储第一数据的第一子内存空间,并将第一数据存储在第一子空间中,以减轻I\O设备的硬件负担。
例如,Virtio协议中的公共配置能力能力空间定义的部分数据当被虚拟机访问时会产生附加操作,例如,device_status字段用于使前端驱动与I/O设备之间的状态信息同步,当device_status字段被虚拟机清零时意味着I/O设备复位,I/O设备将以往的配置信息清空或是恢复至默认值。再例如,queue_enable字段置位意味着虚拟机已为队列分配了必要的共享内存,I/O设备需要记录队列地址,并做好队列随时会发起数据传输的准备工作。虚拟机监控器为这些字段申请相应的第一子内存空间。
由于上述第一数据当虚拟机访问时,会引起I/O设备的附加操作,例如,上述第一数据为复位数据,虚拟机访问该复位数据,会引起I/O设备的复位操作。
本申请实施例中,由于上述第一数据是虚拟机监控器通过仿真的方式配置在服务器的第一内存空间中,当其访问时,无法使I/O设备直接产生附加操作。因此,本申请实施例为第一数据配置处理函数,该处理函数用于仿真第一数据对应的附加操作。
需要说明的是,上述处理函数为一段软件程序,可以被服务器中的处理器执行。在后续的数据访问过程中,当虚拟机访问第一子内存空间时,虚拟机监控器调用处理函数仿真第一数据对应的附加操作。接着,驱动I/O设备完成该附加操作对应的动作,例如复位。
S203、虚拟机监控器根据第二数据的大小,从第一内存空间中申请第二子内存空间。
S204、虚拟机监控器将第二数据存储在第二子内存空间中。
以Virtio协议为例,Device-specific Capability这个能力空间用于描述设备具体的属性,如Virtio_Net网卡设备、MAC地址、最大支持队列数目、队列数目等设备相关的属性数据,这些数据一般通过静态随机存取存储器(staticrandom-accessmemory,SRAM)\寄存器等方式实现,这些数据不涉及I\O流程。且这些属性数据仅在虚拟机的前端驱动初始化阶段进行前后端同步一次,后续便固化为前端驱动的基本属性供业务使用,在设备I\O流程中均不会再访问,将这类数据记为第二数据。针对第二数据,虚拟机监控器从服务器的第一内存空间中为其申请第二子内存空间,并将该第二数据存储在该第二子内存空间中,进而减轻I\O设备的硬件负担。
需要说明的是,图7作为一种示例示出的第二内存空间、第一子内存空间和第二子内存空间的地址相连,但是本申请实施例不局限于图7,即第二内存空间、第一子内存空间与第二子内存空间的地址可以相连,也可以不相连,本申请实施例对此不做限制。
在一种可能的可能的实施例下,为了方便虚拟机对虚拟I/O设备的硬件数据的访问,本申请实施例的数据存储过程还包括:
S2041、虚拟机监控器将第二类数据在所述I/O设备存储空间中的地址映射至所述服务器的第二内存空间的地址。
S2042、虚拟机监控器将第二内存空间、第一子内存空间的地址和第二子内存空间的地址均映射至虚拟机的虚拟地址空间中。
如图7所示,假设将虚拟机的虚拟地址空间划分成3部分,分别记为第一虚拟地址空间、第二子虚拟地址空间和第三子虚拟地址空间,其中第二子虚拟地址空间和第三虚拟地址空间属于第二虚拟地址空间。虚拟机监控器将第二内存空间的地址映射至虚拟机的第一虚拟地址空间,将第一子内存空间映射至虚拟机的第二子虚拟地址空间,将第二子内存空间映射至虚拟机的第三子虚拟地址空间。
这样,在数据访问阶段,由于上述第一子内存空间的地址、第二子内存空间的地址、第二内存空间的地址与虚拟地址空间的映射关系,虚拟机直接访问其可以访问的虚拟地址空间时,可以直接访问到数据。
例如,虚拟机访问第二数据时,虚拟机访问第三子虚拟地址空间,而该第三子虚拟地址空间与第二子内存空间的地址的映射关系,这样,虚拟机可以直接从第二子内存空间中访问到第二数据。
再例如,虚拟机访问第一数据时,虚拟机直接访问第二子虚拟地址空间,该第二虚拟地址空间与服务器的第一子内存空间的地址具有映射关系,虚拟机可以直接从第一子内存空间中访问到第一数据。同时,虚拟机监控器检测到虚拟机访问第一子内存空间的第一数据时,虚拟机监控器截获该I/O访问请求。虚拟机监控器该第一数据对应的处理函数来仿真该第一数据对应的附加操作,并控制I/O设备完成该附加操作对应的动作。
本申请实施例,根据虚拟机访问时是否会引起I/O设备的附加操作,将第一类数据划分为第一数据和第二数据,且将第一数据和第二数据保存在第一内存空间的两个内存子空间中,即将第一数据存储在第一子内存空间,将第二数据存储在第二子内存空间,且在第一子内存空间中存储第一数据对应的附加操作,这样,方便后续虚拟机对第一数据和第二数据的访问,且保证了虚拟机访问第一数据的真实性。
基于上述S201至S204的步骤,实现第一数据和第二数据的存储,后续S205至S211为虚拟机访问第一数据的访问过程,S210至S211为虚拟机访问第二数据的访问过程。
S205、虚拟机接收I/O访问请求。
上述S205的具体执行过程可以参照上述S105的描述,在此不再赘述。
S206、虚拟机识别I/O访问请求中的硬件数据类型为第一数据。
S207、虚拟机从第一子内存空间中访问第一数据。
虚拟机接收到I/O访问请求后,识别该I/O访问请求包括的硬件数据类型,例如可以识别该I/O访问请求包括的硬件数据类型为第一类数据中的第一数据,则虚拟机从第一子内存空间中访问第一数据。
S208、虚拟机监控器检测到虚拟机从第一子内存空间中访问第一数据时,调用处理函数仿真第一数据对应的附加操作。
S209、虚拟机监控器控制I/O设备执行附加操作对应的动作。
具体是,当虚拟机监控器监测到虚拟机访问的数据从第一子内存空间中访问第一数据时,虚拟机监控器截获该I/O访问请求,并调用该第一数据对应的处理函数来仿真第一数据对应的附加操作。接着,虚拟机监控器根据该仿真的附加操作控制I/O设备执行该附加操作对应的动作,例如复位。其中,处理函数本质为一组程序代码的组合,用于实现对数据处理过程的仿真,以使得I/O设备实现真实的动作。
例如,上述第一数据为复位数据,当虚拟机接收到该I/O访问请求时,虚拟机的前端驱动发生一个信号,例如为VM exit信号。该I/O访问请求被虚拟机监控器截获并回调处理函数仿真复位操作,并控制I/O设备的实际复位操作。
S210、虚拟机识别I/O访问请求中的硬件数据类型为第二数据。
S211、虚拟机从第二子内存空间中访问第二数据。
虚拟机接收到I/O访问请求后,识别该I/O访问请求包括的硬件数据类型为第一类数据中的第二数据,则虚拟机从第二子内存空间中访问第二数据。
本申请实施例的方法,虚拟机监控器通过将第一类数据划分为第一数据和第二数据,且从第一内存空间中为第一数据申请第一子内存空间,并将第一数据存储在第一子内存空间中,同时,为第一数据配置处理函数;虚拟机监控器从第一内存空间中为第二数据申请第二子内存空间,并将第二数据存储在第二子内存空间中。当虚拟机访问第一数据时,虚拟机监控器截获该I/O访问操作,并使调用处理函数来仿真该第一数据对应的附加操作,并控制I/O设备完成该附加操作对应的动作,进而实现对第一数据的有效访问,同时,本申请实施例,虚拟机直接从服务器的内存空间中访问第一数据和第二数据,而不是从I/O设备存储空间中访问第一数据和第二数据,这样可以减少对I/O设备的操作次数,且降低I/O设备的硬件开销。
传统技术中,为虚拟I/O设备配置一个I/O设备存储空间,该I/O设备存储对应一个I/O存储空间,I/O存储空间中的数据固化,无法更改,当虚拟I/O设备的协议更新,增加新的功能域段或增加厂商特定的寄存器时,传统方法无法满足技术要求。
为了解决该技术问题,在上述S201至S205的基础上,本申请实施例的方法包括:
S200、虚拟机监控器检测到第二数据发生变化时,将变化后的第二数据发送给I/O设备。
本申请实施例的第二数据存储在服务器的第二子内存空间中,该第二子内存空间中的第二数据可以更改或增加,这样,当虚拟I/O设备的协议更新,增加新的功能域段或增加厂商特定的寄存器时,可以通过更改或增加第二子内存空间中的第二数据来实现。
当虚拟机监控器检测到第二子内存空间中的第二数据发生变化时,需要将发生变化的第二数据及时发送给I/O设备,以确保虚拟机的驱动和I/O设备正常协同工作。
在S200的一种可能的可能的实施例中,虚拟机监控器定义多个触发事件,该触发事件可以理解为引起第二数据发生变化的事件,例如,更改I/O设备的MAC地址,为I/O设备赋予新的功能的字段、队列使能等。当上述触发事件发生时,虚拟机监控器将该发生变化的第二数据存储在第二子内存空间中,且截获该触发事件,根据该触发事件,从第二子内存空间中获得该发生变化的第二数据,并将发生变化的第二数据发送I/O设备,I/O设备将发生变化的第二数据写入I/O设备的存储空间中,例如将发生变化的第二数据写入I/O设备的管理缓冲区中。
示例性的,在Virtio协议中,虚拟机的前向驱动会为队列分配必要的共享内存,并将内存地址填入公共配置能力能力空间定义的queue_desc,queue_avail和queue_used字段,这些信息需要及时被I/O设备获取并记录,以确保当I\O发起时,I/O设备可以借助这些信息以及DMA引擎去服务器的对应地址上搬运数据。
例如,本申请实施例在虚拟机监控器定义队列使能(queue_enable)为触发事件,当虚拟机的前向驱动填写完队列信息。虚拟机的前向驱动使能queue_enable字段,虚拟机监控器截获此次触发事件,并仿真该触发事件,将队列信息queue_desc,queue_avail,queue_used配置在服务器的第二子内存空间中。同时,虚拟机监控器从第二子内存空间中获取上述队列信息queue_desc,queue_avail和queue_used,将这些信息通过ioctl的形式传递给I/O设备,以使I/O设备将这些信息写入I\O设备的存储空间,同时,I/O设备结合I\O设备内部逻辑完成队列信息的同步。
本步骤,当后续出现由于协议更新引入新功能域段或是需要增加厂商特定寄存器,使得第二数据发生变化时,虚拟机监控器可以获得变化后的第二数据,并将变化后的第二数据同步给I/O设备,保证I/O设备的软硬件信息同步,进而解决了新增数据不便于追加的问题。
本申请实施例提供的数据处理方法,虚拟机监控器从服务器的第一内存空间中为第二数据申请第二子内存空间,并将该第二数据存储在第二子内存空间中,该第二子内存空间中的第二数据可以更改或追加,这样当虚拟I/O设备的协议更新,增加新的功能域段或增加厂商特定的寄存器时,通过更改或增加第二子内存空间中的第二数据来解决新增数据不便于追加的问题。当虚拟机监控器检测到第二子内存空间中的第二数据发送变化时,将变化后的第二数据发送给I/O设备,以确保虚拟机的驱动和I/O设备正常协同工作。
上文中结合图1至图7,详细描述了根据本申请实施例所提供的数据处理的方法,下面将结合图8至图10,描述根据本申请实施例所提供的数据处理的装置和设备。
图8为本申请实施例提供的数据处理的装置的一种结构示意图,该装置100用于执行上述方法实施例中虚拟机侧的方法。该装置100应用于数据处理系统,该数据处理系统包括装置100和输入/输出I/O设备,如图8所示,装置100包括:接收单元110、处理单元120和获取单元130。
接收单元110,用于接收I/O访问请求,所述I/O访问请求用于访问数据,所述I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备。
处理单元120,用于识别所述I/O访问请求中的所述硬件数据类型为第一类数据,该第一类数据为所述虚拟I/O设备在数据处理过程中保持不变的硬件数据。
获取单元130,用于从第一内存空间中获取待访问数据,所述第一内存空间为所述数据处理系统的内存存储空间。
本申请实施例的装置100,可以用于执行上述各方法实施例中虚拟机所执行的操作步骤,其实现原理和技术效果类似,此处不再赘述。
可选的,所述第一类数据包括第一数据,所述第一数据为所述装置100访问时引起所述I/O设备的附加操作的硬件数据,所述第一内存空间包括第一子内存空间,所述第一子内存空间中存储有所述第一数据和处理函数,所述处理函数用于仿真所述第一数据对应的附加操作;
所述获取单元130,具体用于从第一子内存空间中获取所述第一数据,并使得虚拟机监控器调用所述处理函数仿真所述第一数据对应的附加操作,以控制所述I/O设备执行所述附加操作对应的动作,所述数据处理系统包括虚拟机监控器。
可选的,上述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;所述第一内存空间还包括第二子内存空间,所述第二数据存储在所述第二子内存空间中;
所述获取单元130,具体用于从所述第二子内存空间中访问所述第二数据。
可选的,所述装置100的虚拟地址与所述第一内存空间的地址之间的映射关系。
应理解的是,本申请实施例的装置100可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图4和图6所示的数据处理方法时,装置100及其各个模块也可以为软件模块。
根据本申请实施例的装置100可对应于执行本申请实施例中描述的方法,并且装置100中的各个单元的上述和其它操作和/或功能分别为了实现图4和图6中虚拟机所执行的各个方法的相应流程,为了简洁,在此不再赘述。
图9为本申请实施例提供的数据处理的装置200的一种结构示意图,该装置200可以理解为数据处理系统的处理器中的一段软件代码,该装置200用于执行上述方法实施例中虚拟机监控器侧的方法。该装置200应用于数据处理系统,该数据处理系统包括装置200、虚拟机和输入/输出I/O设备,如图9所示,装置200包括:获取单元210和处理单元220。
获取单元210,用于获取第一类数据,所述第一类数据为所述虚拟I/O设备在数据处理过程中保持不变的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;
处理单元220,用于将所述第一类数据存储在第一内存空间,所述第一内存空间为所述数据处理系统的内存中存储空间。
本申请实施例的装置200,可以用于执行上述各方法实施例中虚拟机监控器的技术方案,其实现原理和技术效果类似,此处不再赘述。
可选的,上述处理单元220,还用于根据所述第一类数据的大小,从所述数据处理系统的内存存储空间中申请所述第一内存空间。
可选的,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据;
所述处理单元220,具体用于根据所述第一数据的大小,从所述第一内存空间中申请第一子内存空间,并将所述第一数据和处理函数存储在所述第一子内存空间中,所述处理函数用于仿真所述第一数据对应的附加操作。
可选的,所述处理单元220,还用于检测到所述虚拟机从第一子内存空间中访问所述第一数据时,调用所述处理函数仿真所述第一数据对应的附加操作,并控制所述I/O设备执行所述附加操作对应的动作。
可选的,所述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;
所述处理单元220,具体具体用于根据所述第二数据的大小,从所述第一内存空间中申请第二子内存空间,并将所述第二数据存储在所述第二子内存空间中。
可选的,装置200还包括:发送单元230,
所述处理单元220,还用于检测所述第二数据发生变化;
所述发送单元230,用于在所述处理单元220检测到所述第二数据发送变化时,将变化后的所述第二数据发送给所述I/O设备。
可选的,所述处理单元220,还用于将第二类数据存储在所述I/O设备存储空间中,所述第二类数据为所述虚拟I/O设备的硬件数据中除所述第一类数据之外的硬件数据。
可选的,所述处理单元220,还用于将所述第二类数据在所述I/O设备存储空间中的地址映射至所述第二内存空间的地址。
可选的,所述处理单元220,还用于将所述第一内存空间的地址和所述第二内存空间的地址均映射至所述虚拟机的虚拟地址空间中。
应理解的是,本申请实施例的装置200可以通过专用集成电路(ASIC)实现,或可编程逻辑器件(PLD)实现,上述PLD可以是复杂程序逻辑器件(CPLD),现场可编程门阵列(FPGA),通用阵列逻辑(GAL)或其任意组合。也可以通过软件实现图4和图6所示的数据处理方法时,装置200及其各个模块也可以为软件模块。
根据本申请实施例的装置200可对应于执行本申请实施例中描述的方法,并且装置200中的各个单元的上述和其它操作和/或功能分别为了实现图4和图6中虚拟机监控器所执行的各个方法的相应流程,为了简洁,在此不再赘述。
图10为本申请实施例提供的一种数据处理的设备的结构示意图。如图所示设备300包括处理器301,处理器301连接一个或多个数据存储设备。该数据存储设备可以包括存储介质306和内存单元304。存储介质306可以是只读的,如只读存储器(ROM),或可读/可写,如硬盘或闪存存储器。内存单元304可以是随机存取存储器(RAM)。内存单元304可以物理上集成在处理器301中,也可以在独立单元或单元中构建。
处理器301是设备300的控制中心,提供执行指令、执行中断动作、提供定时功能和其他功能的排序和处理设施。可选的,处理器301包括一个或多个中央处理器(CPU)。如图10所示的CPU 0和CPU 1。可选的,设备300包括多个处理器。处理器301可以是单核(单CPU)处理器,也可以是多核(多CPU)处理器,除非另有说明,否则用于执行任务的处理器或存储器等部件可以实现为临时配置的用于在给定时间执行任务的通用组件或制造用于执行任务的特定组件,如本文所使用的术语“处理器”是指一个或多个设备或电路。该处理器301还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
处理器301的CPU执行的程序代码可以存储在内存单元304或存储介质302中。可选的,程序代码(例如,内核、待调试程序)存储在存储介质302中,被复制到内存单元304中供处理器301执行。处理器301可执行至少一个内核(例如,内核来自销售在LINUXTM、UNIXTM、windowsTM、ANDROIDTM、IOSTM等操作系统中的内核)。处理器301通过控制其他程序或进程的执行,控制与周边设备的通信,控制数据处理的设备资源的使用,从而控制设备300的运行。
数据处理的设备300还包括用于直接或通过外部网络与其他设备或系统通信的通信接口303。可选的,设备300还包括输出设备和输入设备(图10未示出)。输出设备与处理器301连接,能够以一种或多种方式显示信息。输出设备的一个示例是液晶显示器(LCD)、发光二极管(LED)显示器、阴极射线管(CRT)或投射器等视觉显示设备。输入设备还与处理器301连接。能够接收来自设备300或更多方式的用户的输入。输入设备的示例包括鼠标、键盘、触摸屏设备或感应设备等。
数据处理的设备300的上述元素可以通过总线连接在一起,例如数据总线、地址总线、控制总线、扩展总线和本地总线中的任何一个或任意组合。
可选的,所述数据处理的设备300还可以包括上述实施例涉及的I/O设备306,所述I/O设备中包括一个或多个虚拟I/O设备,该I/O设备与处理器通信连接,虚拟I/O设备与虚拟机一一对应,用于实现虚拟机对I/O设备的访问。
可选的,若数据处理的设备300用于实现对应于上述各实施例中虚拟机的操作时,例如,可以由处理器301接收I/O访问请求,所述I/O访问请求用于访问数据,所述I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;并识别所述I/O访问请求中的所述硬件数据类型为第一类数据;从第一内存空间中获取待访问数据,所述第一内存空间为所述数据处理系统的内存存储空间。
其中,上述处理器301的具体实现过程可以参见上述各实施例中虚拟机的相关描述,此处不再赘述。
可选的,若数据处理的设备300用于实现对应于上述各实施例中虚拟机的操作时,例如可以由处理器301获取第一类数据,所述第一类数据为虚拟I/O在数据处理过程中保持不变的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;并将所述第一类数据存储在第一内存空间,所述第一内存空间为所述数据处理系统的内存中存储空间。
其中,上述处理器301的具体实现过程可以参见上述各实施例中虚拟机监控器的相关描述,此处不再赘述。
本实施例所述的数据处理的设备300可以是前述方法实施例中提到的数据处理系统(或者可用于数据处理系统的部件)。数据处理的设备300可用于实现上述方法实施例中描述的对应于虚拟机或者虚拟机监控器的方法,具体参见上述方法实施例中的说明。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。另外,各个方法实施例之间、各个装置实施例之间也可以互相参考,在不同实施例中的相同或对应内容可以互相引用,不做赘述。
Claims (17)
1.一种数据处理的方法,其特征在于,所述方法应用于数据处理系统,所述数据处理系统包括虚拟机和输入/输出I/O设备,所述方法包括:
所述虚拟机接收I/O访问请求,所述I/O访问请求用于访问数据,所述I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;
所述虚拟机识别所述I/O访问请求中的所述硬件数据类型为第一类数据;所述第一类数据为所述虚拟I/O设备在数据处理过程中保持不变的硬件数据;
所述虚拟机从第一内存空间中获取待访问数据,所述第一内存空间为所述数据处理系统的内存存储空间。
2.根据权利要求1所述的方法,其特征在于,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据,所述第一内存空间包括第一子内存空间,所述第一子内存空间中存储有所述第一数据和处理函数,所述处理函数用于仿真所述第一数据对应的附加操作;
所述虚拟机从第一内存空间中获取待访问数据,包括:所述虚拟机从第一子内存空间中获取所述第一数据,并使得虚拟机监控器调用所述处理函数仿真所述第一数据对应的附加操作,以控制所述I/O设备执行所述附加操作对应的动作,所述数据处理系统包括虚拟机监控器。
3.根据权利要求2所述的方法,其特征在于,所述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;所述第一内存空间还包括第二子内存空间,所述第二数据存储在所述第二子内存空间中;
所述虚拟机从第一内存空间中获取待访问数据包括:所述虚拟机从所述第二子内存空间中访问所述第二数据。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述虚拟机的虚拟地址与所述第一内存空间的地址之间具有映射关系。
5.一种数据处理方法,其特征在于,应用于数据处理系统,所述数据处理系统包括虚拟机监控器、虚拟机和输入/输出I/O设备,所述方法包括:
所述虚拟机监控器获取第一类数据,所述第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;所述第一类数据属于用于指示虚拟I/O设备工作状态的硬件数据;
所述虚拟机监控器将所述第一类数据存储在第一内存空间,所述第一内存空间为所述数据处理系统的内存存储空间。
6.根据权利要求5所述的方法,其特征在于,所述虚拟机监控器将所述第一类数据存储在第一内存空间之前,所述方法还包括:
所述虚拟机监控器根据所述第一类数据的大小,从所述数据处理系统的内存存储空间中申请所述第一内存空间。
7.根据权利要求6所述的方法,其特征在于,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据,所述方法还包括:
所述虚拟机监控器根据所述第一数据的大小,从所述第一内存空间中申请第一子内存空间;
所述虚拟机监控器将所述第一数据和处理函数存储在所述第一子内存空间中,所述处理函数用于仿真所述第一数据对应的附加操作。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述虚拟机监控器检测到所述虚拟机从第一子内存空间中访问所述第一数据时,调用所述处理函数仿真所述第一数据对应的附加操作;
所述虚拟机监控器控制所述I/O设备执行所述附加操作对应的动作。
9.一种数据处理的装置,其特征在于,所述装置应用于数据处理系统,所述数据处理系统包括所述装置和输入/输出I/O设备,所述装置包括:
接收单元,用于接收I/O访问请求,所述I/O访问请求用于访问数据,所述I/O访问请求包括用于指示虚拟I/O设备工作状态的硬件数据的类型,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;
处理单元,用于识别所述I/O访问请求中的所述硬件数据类型为第一类数据;所述第一类数据为所述虚拟I/O设备在数据处理过程中保持不变的硬件数据;
获取单元,用于从第一内存空间中获取待访问数据,所述第一内存空间为所述数据处理系统的内存存储空间。
10.根据权利要求9所述的装置,其特征在于,所述第一类数据包括第一数据,所述第一数据为所述装置访问时引起所述I/O设备的附加操作的硬件数据,所述第一内存空间包括第一子内存空间,所述第一子内存空间中存储有所述第一数据和处理函数,所述处理函数用于仿真所述第一数据对应的附加操作;
所述获取单元,具体用于从第一子内存空间中获取所述第一数据,并使得虚拟机监控器调用所述处理函数仿真所述第一数据对应的附加操作,以控制所述I/O设备执行所述附加操作对应的动作,所述数据处理系统包括虚拟机监控器。
11.根据权利要求10所述的装置,其特征在于,所述第一类数据还包括第二数据,所述第二数据为所述第一类数据中除所述第一数据之外的硬件数据;所述第一内存空间还包括第二子内存空间,所述第二数据存储在所述第二子内存空间中;
所述获取单元,具体用于从所述第二子内存空间中访问所述第二数据。
12.根据权利要求9-11任一项所述的装置,其特征在于,所述装置的虚拟地址与所述第一内存空间的地址之间的映射关系。
13.一种数据处理的装置,其特征在于,所述装置应用于数据处理系统,所述数据处理系统包括所述装置、虚拟机和输入/输出I/O设备,所述装置包括:
获取单元,用于获取第一类数据,所述第一类数据为虚拟I/O设备在数据处理过程中保持不变的硬件数据,所述虚拟I/O设备为所述I/O设备虚拟化后获得的I/O设备;所述第一类数据属于用于指示虚拟I/O设备工作状态的硬件数据;
处理单元,用于将所述第一类数据存储在第一内存空间,所述第一内存空间为所述数据处理系统的内存存储空间。
14.根据权利要求13所述的装置,其特征在于,
所述处理单元,还用于根据所述第一类数据的大小,从所述数据处理系统的内存存储空间中申请所述第一内存空间。
15.根据权利要求14所述的装置,其特征在于,所述第一类数据包括第一数据,所述第一数据为所述虚拟机访问时引起所述I/O设备的附加操作的硬件数据;
所述处理单元,具体用于根据所述第一数据的大小,从所述第一内存空间中申请第一子内存空间,并将所述第一数据和处理函数存储在所述第一子内存空间中,所述处理函数用于仿真所述第一数据对应的附加操作。
16.根据权利要求15所述的装置,其特征在于,
所述处理单元,还用于检测到所述虚拟机从第一子内存空间中访问所述第一数据时,调用所述处理函数仿真所述第一数据对应的附加操作,并控制所述I/O设备执行所述附加操作对应的动作。
17.一种数据处理设备,其特征在于,包括:处理器,所述处理器用于执行实现如权利要求1至4或如权利要求5至8中任一项权利要求所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363976.8A CN111857943B (zh) | 2019-04-30 | 2019-04-30 | 数据处理的方法、装置与设备 |
EP20798422.0A EP3951591A4 (en) | 2019-04-30 | 2020-02-13 | DATA PROCESSING METHOD, APPARATUS AND DEVICE |
PCT/CN2020/075084 WO2020220790A1 (zh) | 2019-04-30 | 2020-02-13 | 数据处理的方法、装置与设备 |
US17/513,043 US12105648B2 (en) | 2019-04-30 | 2021-10-28 | Data processing method, apparatus, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363976.8A CN111857943B (zh) | 2019-04-30 | 2019-04-30 | 数据处理的方法、装置与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111857943A CN111857943A (zh) | 2020-10-30 |
CN111857943B true CN111857943B (zh) | 2024-05-17 |
Family
ID=72965061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910363976.8A Active CN111857943B (zh) | 2019-04-30 | 2019-04-30 | 数据处理的方法、装置与设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12105648B2 (zh) |
EP (1) | EP3951591A4 (zh) |
CN (1) | CN111857943B (zh) |
WO (1) | WO2020220790A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210028892A (ko) * | 2019-09-05 | 2021-03-15 | 삼성전자주식회사 | 서버 및 이의 제어 방법 |
CN116257471A (zh) * | 2021-12-10 | 2023-06-13 | 华为技术有限公司 | 一种业务处理方法及装置 |
CN114756332A (zh) * | 2022-05-19 | 2022-07-15 | 阿里巴巴(中国)有限公司 | 基于虚拟机设备直通的数据访问方法、设备以及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278263A (zh) * | 2005-10-08 | 2008-10-01 | 国际商业机器公司 | 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 |
CN103389884A (zh) * | 2013-07-29 | 2013-11-13 | 华为技术有限公司 | 处理输入/输出请求的方法、宿主机、服务器和虚拟机 |
CN104753992A (zh) * | 2013-12-29 | 2015-07-01 | 中国移动通信集团公司 | 一种数据存储、虚拟平台故障恢复的方法、设备和系统 |
CN106406981A (zh) * | 2016-09-18 | 2017-02-15 | 深圳市深信服电子科技有限公司 | 一种读、写磁盘数据的方法及虚拟机监视器 |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN107728936A (zh) * | 2017-09-05 | 2018-02-23 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657694B2 (en) * | 2006-12-20 | 2010-02-02 | Arm Limited | Handling access requests in a data processing apparatus |
US8239655B2 (en) * | 2010-01-18 | 2012-08-07 | Vmware, Inc. | Virtual target addressing during direct data access via VF of IO storage adapter |
CN102591702B (zh) * | 2011-12-31 | 2015-04-15 | 华为技术有限公司 | 虚拟化处理方法及相关装置和计算机系统 |
CN104104705B (zh) * | 2013-04-11 | 2018-02-02 | 阿里巴巴集团控股有限公司 | 分布式存储系统的接入方法和设备 |
CN104809124B (zh) * | 2014-01-24 | 2018-06-26 | 中国移动通信集团河北有限公司 | 云虚拟文件系统及其输入/输出请求处理方法 |
US10228981B2 (en) * | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10733112B2 (en) * | 2017-06-16 | 2020-08-04 | Alibaba Group Holding Limited | Method and apparatus for hardware virtualization |
KR101984714B1 (ko) * | 2018-08-23 | 2019-05-31 | (주) 글루시스 | 가상화 자원 모니터링 시스템 |
-
2019
- 2019-04-30 CN CN201910363976.8A patent/CN111857943B/zh active Active
-
2020
- 2020-02-13 EP EP20798422.0A patent/EP3951591A4/en active Pending
- 2020-02-13 WO PCT/CN2020/075084 patent/WO2020220790A1/zh unknown
-
2021
- 2021-10-28 US US17/513,043 patent/US12105648B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278263A (zh) * | 2005-10-08 | 2008-10-01 | 国际商业机器公司 | 虚拟机环境中的输入/输出设备与物理存储器之间的直接存储器访问 |
CN103389884A (zh) * | 2013-07-29 | 2013-11-13 | 华为技术有限公司 | 处理输入/输出请求的方法、宿主机、服务器和虚拟机 |
CN104753992A (zh) * | 2013-12-29 | 2015-07-01 | 中国移动通信集团公司 | 一种数据存储、虚拟平台故障恢复的方法、设备和系统 |
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN106406981A (zh) * | 2016-09-18 | 2017-02-15 | 深圳市深信服电子科技有限公司 | 一种读、写磁盘数据的方法及虚拟机监视器 |
CN107728936A (zh) * | 2017-09-05 | 2018-02-23 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
Non-Patent Citations (2)
Title |
---|
virtCache: virtual machine cache using user I/O access pattern anaylsis;Taehoon Kim等;《2017 Sixth International Conference on Future Generation Communication Technologies (FGCT)》;全文 * |
XEN网络I/O完全虚拟化机制的可扩展性研究;付赛平等;《计算机工程》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3951591A1 (en) | 2022-02-09 |
US20220050795A1 (en) | 2022-02-17 |
CN111857943A (zh) | 2020-10-30 |
US12105648B2 (en) | 2024-10-01 |
EP3951591A4 (en) | 2022-06-01 |
WO2020220790A1 (zh) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US12061566B2 (en) | IO processing method and apparatus | |
WO2017024783A1 (zh) | 一种虚拟化方法、装置和系统 | |
US9135080B2 (en) | Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions | |
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
CN115344521A (zh) | 可扩展输入/输出(i/o)虚拟化(s-iov)架构中的虚拟设备构成 | |
WO2018119952A1 (zh) | 一种设备虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
US9798565B2 (en) | Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor | |
US12105648B2 (en) | Data processing method, apparatus, and device | |
EP3992790B1 (en) | Information processing method, physical machine and pcie device | |
EP3086228A1 (en) | Resource processing method, operating system, and device | |
WO2018119951A1 (zh) | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 | |
US9697024B2 (en) | Interrupt management method, and computer implementing the interrupt management method | |
US7814496B2 (en) | Method and system for replicating schedules with regard to a host controller for virtualization | |
JP2015503784A (ja) | グラフィックス処理部における仮想マシン間の移行 | |
US11586567B2 (en) | Techniques for virtualizing PF-VF mailbox communication in SR-IOV devices | |
WO2022001808A1 (zh) | 一种系统以及中断处理方法 | |
CN113312141A (zh) | 用于虚拟机的虚拟串行端口 | |
CN114691286A (zh) | 服务器系统、虚拟机创建方法及装置 | |
US20230229497A1 (en) | Transparent and remote kernel execution in a heterogeneous computing system | |
US9851992B2 (en) | Paravirtulized capability for device assignment | |
US20160026567A1 (en) | Direct memory access method, system and host module for virtual machine | |
CN111158849A (zh) | 支持虚拟机共享io设备的多机计算装置及其io设备共享方法 | |
CN118467453B (zh) | 一种数据传输方法、装置、设备、介质及计算机程序产品 | |
WO2023207829A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |