CN107430522B - 虚拟机系统 - Google Patents

虚拟机系统 Download PDF

Info

Publication number
CN107430522B
CN107430522B CN201680019788.8A CN201680019788A CN107430522B CN 107430522 B CN107430522 B CN 107430522B CN 201680019788 A CN201680019788 A CN 201680019788A CN 107430522 B CN107430522 B CN 107430522B
Authority
CN
China
Prior art keywords
virtual machine
page
doorbell
request
doorbell page
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
Application number
CN201680019788.8A
Other languages
English (en)
Other versions
CN107430522A (zh
Inventor
本杰明·C·谢布里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US14/688,258 external-priority patent/US9747122B2/en
Application filed by Google LLC filed Critical Google LLC
Priority to CN201810159787.4A priority Critical patent/CN108268331B/zh
Publication of CN107430522A publication Critical patent/CN107430522A/zh
Application granted granted Critical
Publication of CN107430522B publication Critical patent/CN107430522B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4868Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with creation or replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

多种方法、系统和设备,包括在计算机存储媒介上编码的计算机程序,用于虚拟机的存储器请求。所述方法中的一个方法包括针对在装置上执行的多个虚拟机生成多个门铃页,向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问,从所述多个门铃页中的一个特定门铃页接收相应的队列具有来自所述相应的虚拟机的请求的通知,并且响应于接收到所述相应的队列具有来自所述相应的虚拟机的请求的所述通知,使处理器处理针对所述相应的虚拟机的所述相应的队列。

Description

虚拟机系统
背景技术
本说明书涉及虚拟机系统的存储器访问。
虚拟机(例如,云虚拟机)有时需要通往其虚拟装置的约束双向通信路径。例如,虚拟机可使用具有头指针和尾指针的循环缓冲器。管理程序、管理程序代理或可信物理装置可轮询头指针,以确定虚拟机何时有新请求入队,并且可读取队列的内容。一些系统可使用若干处理器核心来轮询队列。
发明内容
在一些具体实施中,管理程序(例如,管理程序助手)可监测针对多个虚拟机的多个队列,并且可能监测针对每个虚拟机的多个队列,其中针对每个队列使用门铃页。管理程序使用门铃页来确定是否以及何时在队列中存在包括用于处理器的工作的条目。管理程序可在门铃页被按响时更新位向量,并且将位向量提供给处理器,以指示哪些队列需要服务。当门铃页被按响时,管理程序可将门铃页或来自门铃页的值复制到存储器,例如,以供管理程序或处理器使用。当处理器可能正在执行其它工作时,管理程序可向处理器发送中断,以向处理器通知所述工作。管理程序助手可为被配置为执行上文所述的步骤的应用程序或硬件。
在一些具体实施中,助手应用程序或装置(例如,管理程序或管理程序助手应用程序或装置)可在将应用程序(例如,虚拟机)从第一装置迁移到第二装置期间控制存储器访问。助手可监测应用程序所使用的存储器的页并且在迁移进程期间仅使来自所述页的脏字节转移到第二装置。
一般来说,本说明书中所描述的主题的一个创新性方面可在包括以下动作的方法中体现:针对在装置上执行的多个虚拟机,生成多个门铃页;向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问;从所述多个门铃页中的一个特定门铃页接收相应的队列具有来自相应的虚拟机的请求的通知;以及响应于接收到相应的队列具有来自相应的虚拟机的请求的通知,使处理器处理针对相应的虚拟机的相应的队列。这个方面的其它实施例包括对应的计算机系统、设备和记录在一个或多个计算机存储装置上的计算机程序,其均被配置为执行所述方法的动作。
一般来说,本说明书中所描述的主题的一个创新性方面可在包括以下动作的方法中体现:启动迁移进程,以在继续在第一装置上执行应用程序的同时,通过将存储在第一装置的存储器中并且用于在第一装置上执行应用程序的数据页从第一装置复制到第二装置来将在第一装置上执行的应用程序从第一装置移动到第二装置;在迁移进程期间,响应于在第一装置上执行应用程序,通过第一装置而更新所述数据页中的至少一个数据页中的一个或多个字节;停止在第一装置上执行应用程序;以及将更新的字节从第一装置复制到第二装置,以使第二装置继续执行所述应用程序。这个方面的其它实施例包括对应的计算机系统、设备和记录在一个或多个计算机存储装置上的计算机程序,其均被配置为执行所述方法的动作。
具有一个或多个计算机的系统可被配置为借助于安装在所述系统上的、在操作中使所述系统执行特定动作的软件、固件、硬件或其组合来执行所述特定操作或动作。一个或多个计算机程序可被配置为借助于包括在由数据处理设备执行时使所述设备执行特定动作的指令来执行所述特定操作或动作。
前述实施例和其它实施例均可任选地单独或组合地包括以下特征中的一个或多个特征。所述方法可包括在处理器处理请求的同时继续执行相应的虚拟机。所述方法可包括在接收相应的队列具有来自相应的虚拟机的请求的通知之前接收对相应的队列的更新。
在一些具体实施中,所述方法包括生成阵列,所述阵列包括针对所述多个门铃页中的每一个门铃页的相应条目,该相应的条目唯一地对应于所述门铃页并且唯一地识别由所述门铃页识别的队列,并且响应于接收到相应的队列具有来自相应的虚拟机的请求的通知,更新所述阵列中的识别相应的队列的相应条目。使处理器处理针对相应的虚拟机的相应的队列可包括:将阵列提供给处理器,以使处理器处理针对相应的虚拟机的相应的队列。生成包括针对所述多个门铃页中的每一个门铃页的、包括唯一地对应于所述门铃页并且唯一地识别由所述门铃页识别的队列的相应条目的阵列可包括:生成位向量,其包括针对所述多个门铃页中的每一个门铃页的相应条目,该相应条目唯一地对应于所述门铃页并且唯一地识别由所述门铃页识别的队列。更新所述阵列中的识别相应的队列的相应条目可包括:更新位向量中的识别相应的队列的相应条目。将所述阵列提供给处理器以使处理器处理针对相应的虚拟机的相应的队列可包括:将位向量提供给处理器,以使处理器处理针对相应的虚拟机的相应的队列。将所述阵列提供给处理器以使处理器处理针对相应的虚拟机的相应的队列可包括:将阵列提供给处理器,以使处理器处理针对所述多个虚拟机的多个队列。
在一些具体实施中,使处理器处理针对相应的虚拟机的相应的队列包括:向处理器发送中断。向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问可包括:向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的包括相应的队列的头节点的相应一个门铃页的访问。向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问可包括:向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的环形缓冲器的相应一个门铃页的访问。
在一些具体实施中,生成所述多个门铃页包括:向所述多个门铃页中的每一个门铃页分配相应的地址,并且向所述多个虚拟机中的每一个门铃页提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问包括:向所述多个虚拟机中的每一个虚拟机提供指向相应的虚拟机的相应的地址。生成所述多个门铃页可包括:生成跟踪结构并且将来自跟踪结构的相应索引分配给所述多个门铃页中的每一个门铃页,并且向所述多个虚拟机中的每一个门铃页提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问可包括:向所述多个虚拟机中的每一个虚拟机提供用于指向相应的虚拟机的相应索引的地址。生成所述多个门铃页可包括:针对所述多个门铃页中的每一个门铃页生成页,并且针对所述多个门铃页中的每一个门铃页分配非零偏移距,所述多个门铃页中的相应一个门铃页在相应的页内驻留在所述非零偏移距处。向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问可包括:向所述多个虚拟机中的每一个虚拟机提供用于指向相应的虚拟机的相应的页和非零偏移距的地址。
在一些具体实施中,所述方法包括生成多个第二门铃页,并且向所述多个虚拟机中的至少一些虚拟机中的每一个虚拟机提供对多个第二门铃页中的识别存储来自相应的虚拟机的第二请求的第二队列的相应一个门铃页的访问,且第一类型的所述请求不同于第二类型的所述第二请求。从所述多个门铃页中的一个特定门铃页接收相应的队列具有来自相应的虚拟机的请求的通知可包括:从所述多个门铃页中的一个特定门铃页接收识别请求类型的通知。使处理器处理针对相应的虚拟机的相应的队列可包括:确定所述请求类型包括第一类型,确定被分配为服务第一类型的请求的特定处理器,并且使所述特定处理器处理针对相应的虚拟机的相应的队列。所述方法可包括在装置的第一处理器上执行所述多个虚拟机。使特定处理器处理针对相应的虚拟机的相应的队列可包括:向在不同的第二处理器上执行的管理程序提供消息,以使不同的第二处理器处理针对相应的虚拟机的相应的队列。向在不同的第二处理器上执行的管理程序提供消息可包括:向在与所述装置不同的第二装置上的不同的第二处理器上执行的管理程序提供消息。
在一些具体实施中,所述方法可包括创建识别数据页在存储器中的位置的、用于所述应用程序的映射。在迁移进程期间,响应于在第一装置上执行所述应用程序,通过第一装置而更新所述数据页中的至少一个数据页中的所述一个或多个字节可包括:将所述数据页中的所述至少一个数据页中的每一个数据页分配给助手,针对所述页中的所述至少一个页中的每一个页更新用于所述应用程序的映射,以在所述助手中识别对应的页,并且更新所述数据页中的所述至少一个数据页中的所述一个或多个字节。在第一装置上执行应用程序可包括:在第一装置上执行虚拟机。
在一些具体实施中,所述方法包括:响应于更新所述数据页中的至少一个数据页中的所述一个或多个字节,通过第一装置而存储识别更新的字节的数据。仅将更新的字节从第一装置复制到第二装置可包括:使用识别更新的字节的数据识别所述更新的字节,并且响应于使用识别更新的字节的数据识别出更新的字节而仅将更新的字节从第一装置复制到第二装置。所述方法可包括:通过第一装置接收所述数据页中的所述至少一个数据页中的所述一个或多个字节,并且通过第一装置确定所述一个或多个字节是针对用于正被迁移的应用程序的数据页。存储识别更新的字节的数据可包括:响应于确定所述一个或多个字节是针对用于正被迁移的应用程序的数据页,存储识别更新的字节的数据。所述方法可包括从应用程序接收对访问存储器的请求,并且确定对访问存储器的请求是写入请求。存储识别更新的字节的数据可包括:响应于确定对访问存储器的请求是写入请求,存储识别更新的字节的数据。所述方法可包括:在第一装置上执行应用程序,包括将用于所述应用程序的数据页存储在第一装置的存储器中。
本说明书中所描述的主题可在特定实施例中实施并且可产生以下优点中的一个或多个优点。在一些具体实施中,下文所述的系统和方法可确定虚拟机何时在由于管理程序或助手应用程序或装置引起的加速的情况下比不使用门铃页的系统和方法更快速地将数据请求放置在队列中(例如,在1微秒内)、使用较少资源,或者两个优点都有。在一些具体实施中,下文所述的系统和方法可在门铃页被按响并且对应队列中的请求被处理(例如,异步地处理)时继续执行虚拟机。
在一些具体实施中,下文所述的系统和方法可将位向量提供给处理器,以允许管理程序、处理器或两者快速地确定哪些虚拟机需要服务。例如,系统可更快速地知道门铃页何时由虚拟机按响,而不像门铃轮询代理那样,从而允许系统在系统包括几千个实例化门铃页时做出响应。在一些具体实施中,当门铃页驻留在周边装置互连高速(PCIe)空间中时,所述装置避免了传统的陷阱-仿真(trap-and-emulate)陷阱,例如,这可消耗至少3000个处理器周期或1微秒,该时间可为对纯软件仿真的装置门铃的虚拟机访问所需要的。在一些具体实施中,系统可将用于具有需要服务的队列的、在第一处理器上执行的虚拟机的通知提供给第二处理器,以防止在第一处理器上执行期间,对所述队列的服务从所述虚拟机挪用周期,防止污染第一处理器的高速缓存,允许第二处理器处理来自多个虚拟机的队列(例如,针对相同或相似类型的请求),或这些效果中的两个或两个以上的任何组合。
在一些具体实施中,下文所述的系统和方法可当在装置之间转移应用程序时仅复制脏字节或脏字节块(例如,小于页),以与转移存储器页的其它系统和方法相比,减小应用程序的中断时间(例如,在云环境中)。
在附图和以下描述中陈述本说明书的主题的一个或多个实施例的细节。所述主题的其它特征、方面和优点将从所述描述、附图和权利要求书中变得显而易见。
附图说明
图1是装置使用门铃页来确定针对虚拟机的队列何时需要服务的示例性环境的框图。
图2是用于使处理器处理针对虚拟机的队列的进程的流程图。
图3是用于使特定处理器处理队列的进程的流程图。
图4是装置A 402a将应用程序迁移到另一个装置B的示例性环境的框图。
图5是用于将应用程序从第一装置转移到第二装置的进程的流程图。
图6是可结合本文档中所描述的计算机实施方法使用的计算系统的框图。
相同参考标号和命名在各图中指示相同元件。
具体实施方式
概观
在装置上执行的应用程序(例如,管理程序或管理程序助手)可创建大量(例如,1024或更多个)门铃页。门铃页可在周边装置互连高速(PCIe)基址寄存器(BAR)空间中为输入/输出(IO)或存储器映射IO(MMIO)。应用程序使用门铃页来确定在装置上执行的虚拟机的一个或多个队列何时需要服务。当虚拟机写入任何门铃页时,应用程序可配置所分配的门铃页,以向管理程序通知待决门铃页的列表(例如,以及写入到门铃页的值)。在接收到通知后,管理程序可将待决门铃的列表或对应的队列提供给处理器,以使处理器服务存储在队列中的数据请求。在一些实例中,所述应用程序可在所述装置中所包括的组件上执行,并且可包括用于门铃页的存储器。
所述门铃页中的每一个门铃页可具有可配置的语义。例如,NIC-100样式门铃页可含有32位环形缓冲器索引(例如,可含有队列),其被存储在存储器中并且被提供给管理程序。在一些实例中,NVMe队列可含有必须服务对应的队列并且对应的队列(例如,环形缓冲器索引)驻留在单独存储器中的指示。在一些实例中,virtio网队列可含有IO空间寄存器,其在门铃页被按响时写入所关注的队列编号。应用程序(例如,管理程序助手)可被编程为将门铃页的每个语义提供给管理程序。
在一些实例中,应用程序可使用已经被按响的门铃页生成位向量集合,以指示需要服务的所有队列。应用程序可将位向量提供给管理程序,以允许管理程序或处理器快速地识别需要服务的所有队列,而不需要扫描所有的队列门铃值。
在一些具体实施中,一些门铃页可包括允许应用程序(例如,或者管理程序)应用通知延迟(例如,以与中断控制器相同的方式)的设置。例如,在管理程序接收特定门铃页已经被按响的通知之后,该特定门铃页可不向应用程序警报对应的队列中的额外请求,例如,该特定门铃页可自我遮蔽,直到应用程序或管理程序重新启用所述特定门铃为止,例如,在对应的队列已经被服务之后。在一些实例中,特定门铃页可包括限速设置,例如,其指定应当通知管理程序对应的队列需要服务的频率。
在一些具体实施中,所述门铃页中的每一个门铃页可占据单独4KB页,并且任选地在该页内驻留在非零偏移距处(例如,当特定队列结构不支持零偏移距时)。应用程序可将虚拟机存储器访问(例如,在队列中识别的那些)以4KB页粒度映射到各个单独门铃页(例如,使用标准的x86MMU和EPT寻呼),以将每个虚拟机限于仅访问其自己的分配门铃页。
在一些具体实施中,助手应用程序可在另一个应用程序的实时迁移期间重定向业务流量。例如,助手应用程序可执行页镜像,以允许另一个应用程序从第一装置到第二装置的更细粒度的迁移(例如,在字节或多字节水平下)。例如,在将页转移到第二装置之后,当所述页中的特定字节被更新时,助手应用程序可允许将两字节数据块(其包括所述特定字节)转移到第二装置,使得不必将整个页转移到第二装置。
在一些具体实施中,管理程序助手或助手应用程序是在装置上执行的应用程序。在一些具体实施中,管理程序助手或助手应用程序是装置中所包括的硬件组件,例如与装置集成在一起或连接到装置。
队列服务
图1是装置102使用门铃页来确定用于虚拟机的队列何时需要服务的示例性环境100的框图。装置102包括一个或多个处理器A至B104a至104b。所述处理器中的一个处理器A104a执行管理程序106,并且所述处理器A至B 104a至104b中的一个或两个执行一个或多个虚拟机108a至108c。
当虚拟机108a至108c具有对数据的请求(读取请求或写入请求)时,虚拟机108a至108c将条目放置在对应的队列110中。例如,虚拟机A 108a可将读取请求放置在第一队列A1中,并且可将写入请求放置在第二队列A2中。在一些实例中,虚拟机可将所有请求放置在单个队列(诸如针对虚拟机B 108b的队列B1)中。所述队列110中的每一个队列可为环形缓冲器或任何其它适当类型的队列。
在将数据请求放置在队列110中之后,虚拟机108a至108c将通知值写入到对应的门铃页112,例如,按响对应的门铃页112。例如,当虚拟机A 108a将读取请求放置在队列A1中时,虚拟机A 108a可将通知值写入到特定针对队列A1的门铃页A1。在一些实例中,虚拟机108a至108c中的一个或多个虚拟机可在将数据请求放置在队列110中之前将通知值写入到对应的门铃页112。
装置102通过通知处理器A至D 104a至104d对应的队列需要服务来对将通知值写入到门铃页112做出响应。例如,装置102可更新对应的位向量A至D 114a至114b并且将经过更新的位向量提供给所述处理器104a至104d中的一个处理器。位向量A 114a可包括用于队列A1、B1和C1的通知位值。当装置102接收用于门铃页A1、B1或C1中的任一个的通知时,装置102更新位向量A 114a,以指示对应的队列需要服务。例如,位向量A 114a的第一位置的值指示队列A1是否需要服务,位向量A 114a的第二位置的值指示队列B1是否需要服务,并且位向量A 114a的第三位置的值指示队列C1是否需要服务。类似地,位向量B 114b中的位置的值对应于队列A2和C2。
在一些具体实施中,位向量A 114a中的值“1”指示对应的队列需要服务,并且值“0”指示对应的队列不需要服务。在其他具体实施中,值“0”指示对应的队列需要服务,并且值“1”指示对应的队列不需要服务。
在一些具体实施中,装置102向在与执行具有需要服务的队列的虚拟机的处理器核心不同的处理器核心上执行的管理程序发送中断。例如,当处理器A 104a执行虚拟机B108b并且队列B1需要服务时,装置102可通知处理器B 104b或处理器D 104d队列B1需要服务。装置102可向在该不同的处理器核心上执行的管理程序或另一个应用程序发送中断,以通知所述管理程序队列B1需要服务。
在一些具体实施中,装置102可缓存来自门铃页的通知值,其中针对该门铃页,通知所述装置102。例如,装置102可将位向量存储在存储器中并且在需要时或懒散地将来自位向量的值(例如,位向量的复本)提供给服务由所述位向量识别的队列的处理器或正在使用所述位向量的应用程序。在一些实例中,当管理程序助手管理位向量并且管理程序106想要清除位向量中的针对已被服务且不再需要服务的队列的一个或多个位时,管理程序106可将识别待清除的位的消息发送到管理程序助手。管理程序助手可接着清除所识别的位,保持位向量最新,例如,保持位向量的主复本最新。
装置102可将用于门铃页112的位向量114a至114b提供给将服务对应的队列的处理器104a至104d,其中针对门铃页112,通知所述装置。例如,当装置102响应于针对队列B1的服务请求而更新位向量A 114a时,装置102将位向量A 114a提供给处理器B 104b。处理器B 104b使用位向量A 114a来确定队列B1需要服务并且可能确定队列A1、队列C1或这两个队列也都需要服务(例如,使用位向量114a的对应位置的值来确定)。处理器B 104b可接着服务在位向量A 114a中识别为需要服务的队列。例如,处理器B 104b将访问队列A1中的第一条目,确定第一条目所请求的数据,并且检索所请求的数据,以供虚拟机A 108a使用。
所述门铃页112中的每一门铃页可包括一个或多个设置。例如,门铃页112可指示对应的位向量内的在相应的门铃页被按响时应当更新的所需的位的位置。
在一些实例中,门铃页112可包括指示是否应当执行通知合并的通知合并设置。例如,通知合并设置可为布尔值,其表示事件已经发生并且装置102应当抑制公布针对相应的门铃页的另外的通知,直到布尔值被清除为止。例如,装置102可抑制公布另外的通知,例如,通过将布尔值设置为“真”,直到对应的队列中的所有条目均已被服务为止,例如,接着将布尔值设置为“假”,使得通知所述装置102另外的条目被添加到对应的队列。
在当装置102包括多个位向量时的具体实施中,门铃页112中的每一个门铃页可指示用于该门铃页的特定位向量。例如,装置102可包括针对将服务来自虚拟机108a至108c的请求的每个处理器或处理器核心的一个位向量,并且所述门铃页中的每一个门铃页可指示:当所述门铃页被按响时,应当更新所述位向量中的哪些,以使得通知正确的处理器或处理器核心需要服务的对应的队列。一些处理器和处理器核心可包括在装置102上(例如,处理器A至B 104a至104b)。一些处理器和处理器核心可包括在一个或多个其它装置上(例如,处理器C至D 104c至104d)。服务请求的处理器或处理器核心可包括在特定装置上,其具有包括用于所述请求的数据的存储器。
在一些实例中,装置102可经由第一门铃页A1接收通知(即用于虚拟机A 108a的第一队列A1需要服务)时,并且将位向量A 114a(例如,位向量的复本)提供给处理器B 104b。当装置经由第二门铃页A2接收通知(即用于虚拟机A 108a的第二队列A2需要服务)时,装置102可在响应于所述通知而更新位向量之后将位向量B 114b的复本提供给处理器C 104c(例如,包括在另一个装置中)。
在一些具体实施中,门铃页112中的每一个门铃页可包括写入行为设置,其指示装置102将在对应的队列110需要服务并且对应的门铃页被按响时执行的动作。例如,装置102可使用用于门铃页的设置来确定装置102应当更新值,所述值指示对应的队列中的新条目的数量、对应的队列中的条目的总数量、对应的队列中的非新条目(其在最近对队列进行更新之前处于队列中)的数量,或者是这些内容中的两个或两个以上的组合。在一些实例中,门铃页可包括对应的队列中的最后一个条目的索引。门铃页可包括(例如)指示对应的队列具有一个条目的值,并且装置102监测所述值,以确定所述值何时改变而不关心该特定值是什么,以确定门铃页已被按响并且对应的队列需要服务。
在一些具体实施中,管理程序106、管理程序助手118应用程序或装置或者另一个应用程序或装置可对将通知值写入到门铃页112做出响应,或者执行上文所述的其它步骤中的一些步骤。例如,管理程序助手118可向在与执行具有需要服务的队列的虚拟机的处理器核心不同的处理器核心上执行的管理程序发送中断。管理程序106、管理程序助手118或者另一个应用程序或装置可拥有包括门铃页112的存储器。
装置102可包括个人计算机、移动通信装置、服务器以及可经由网络116发送和接收数据的其它装置。网络116(诸如局域网(LAN)、广域网(WAN)、因特网或其组合)连接所述装置102和包括处理器C至D 104c至104d在内的一个或多个其它装置。
示例性队列服务进程的流程
图2是用于使处理器处理针对虚拟机的队列的进程200的流程图。例如,进程200可由来自环境100的装置102使用(例如,执行管理程序、管理程序助手、另一个应用程序、另一个装置或这些项目中的两个或两个以上的组合)。在一些实例中,所述应用程序中的一个可执行进程200的特定步骤,并且装置或另一个应用程序可执行进程200的其它特定步骤。
第一装置执行多个虚拟机(202)。例如,第一装置可为执行多个虚拟机的服务器或另一种装置。第一装置可使用管理程序应用程序来执行所述多个虚拟机中的一个或多个。
第一装置生成多个门铃页(204)。第一装置可针对虚拟机中的每一个虚拟机或针对虚拟机的每个队列生成门铃页。在一些实例中,第一装置生成比虚拟机所使用的队列的数量多的门铃页,并且在执行新虚拟机或对新队列的请求后,将门铃页动态地关联到虚拟机队列。例如,管理程序助手可创建所述多个门铃页或向管理程序请求创建所述多个门铃页。
第一装置可在生成门铃页时向门铃页中的每一个门铃页分配地址(例如,门铃页的地址)。在一些具体实施中,第一装置可生成针对所有门铃页的跟踪结构并且将来自跟踪结构的相应索引分配给所述门铃页中的每一个门铃页。在一些实例中,管理程序可将地址分配给门铃页中的每一个门铃页并且将地址提供给管理程序助手。管理程序助手可使用跟踪结构(例如,在管理程序助手中),以监测门铃页。
第一装置任选地生成针对所述多个门铃页中的每一个门铃页的阵列,该阵列包括相应条目,该相应条目唯一地对应于所述门铃页并且唯一地识别由所述门铃页识别的队列(206)。例如,第一装置(例如,管理程序助手)生成多个位向量,其中针对将服务所述队列的每个处理器均生成一个位向量。所述门铃页中的每一个门铃页仅与特定位向量中的一个条目对应,而不与任何其它位向量中的条目对应。使用位向量的处理器能够使用那一个条目来确定对应的队列并且服务那个对应的队列。
第一装置向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问(208)。例如,第一装置向相应的虚拟机提供用于相应的门铃页的地址,例如,用于相应的门铃页的相应索引的地址。在一些实例中,门铃页可为对应的队列的头节点,并且第一装置可将头节点的地址提供给相应的虚拟机。在一些实例中,门铃页可识别用于相应的虚拟机的环形缓冲器,以放置对服务的请求(例如,当队列是环形缓冲器时)。管理程序应用程序可从管理程序助手接收用于相应的门铃页的地址并且将所述地址提供给相应的虚拟机。
第一装置接收对相应的队列的更新(210)。例如,相应的虚拟机将对服务(例如,数据)的请求放置在相应的队列中。
第一装置从所述多个门铃页中的一个特定门铃页接收相应的队列具有来自相应的虚拟机的请求的通知(212)。例如,相应的虚拟机更新门铃页的值,例如,使用用于该门铃页的写入行为设置。作为响应,该门铃页通知第一装置(例如,管理程序助手)所述值已经改变。
第一装置任选地更新所述阵列中的识别相应的队列的相应条目(214)。例如,管理程序助手将相应条目(例如,在位向量中的)更新为指示相应的队列需要服务的特定值。当“0”指示相应的队列不需要服务并且“1”指示相应的值需要服务时,特定值可为“1”。在一些实例中,特定值可为“0”或任何其它适当值。在一些具体实施中,管理程序应用程序更新相应条目。
第一装置使处理器处理针对相应的虚拟机的相应的队列(216)。在一些实例中,第一装置(例如,管理程序助手)向处理器提供用于相应的队列的标识符。例如,第一装置(例如,管理程序或管理程序助手)将位向量提供给处理器。响应于接收到位向量,处理器使用所述位向量来确定哪些队列需要服务(例如,与所述位向量相关联的队列中的)并且服务那些队列。在一些实例中,第一装置向处理器提供中断,例如,以使处理器停止执行其它工作,诸如当处理器未在服务队列时。在一些具体实施中,第二装置可包括所述处理器。
在处理器处理请求时,第一装置继续执行相应的虚拟机(218)。例如,第一装置可包括并行地执行相应的虚拟机并且服务请求的单个处理器。在一些实例中,在第二装置或第二处理器同时服务请求的同时,第一处理器执行相应的虚拟机。
上文所述的进程200中的步骤的次序仅仅是示例性的,并且可以不同次序执行,使处理器处理针对虚拟机的队列。例如,第一装置可生成门铃页并且接着执行虚拟机。
在一些具体实施中,进程200可包括额外步骤、较少步骤,或者所述步骤中的一些步骤可被分成多个步骤。例如,第一装置可能不生成所述阵列。在一些实例中,第一装置可执行步骤208到218而不执行步骤202到206。
图3是用于使特定处理器处理队列的进程300的流程图。例如,进程300可由来自环境100的装置102使用。装置102可针对进程300的步骤中的一个或多个步骤执行管理程序或管理程序助手应用程序,可包括执行进程300的步骤中的一个或多个步骤的管理程序助手装置,或这些项目中的两个或两个以上的组合。
管理程序从所述多个门铃页中的一个特定门铃页接收识别请求类型的通知(302)。例如,所述门铃页中的每一个门铃页可包括识别请求类型的配置设置。所述类型可为读取请求、写入请求、对特定存储器的读取请求、对特定存储器的写入请求或另一种类型的请求。在一些具体实施中,管理程序可使用写入行为设置来确定请求类型。
管理程序确定请求类型包括第一类型(304)。例如,管理程序或在装置上执行的另一个应用程序从多个不同请求类型确定请求的特定类型(例如,第一类型)。
管理程序确定被分配为服务第一类型的请求的特定处理器(306)。例如,管理程序可在第一处理器上执行并且确定第二处理器(在相同装置或另一个装置上)应当服务第一类型的请求。
管理程序使特定处理器处理针对相应的虚拟机的相应的队列(308)。例如,管理程序向特定处理器提供指示相应的队列需要服务的消息。在一些实例中,管理程序可将指示相应的队列需要服务的位向量提供给特定处理器。
应用程序迁移
在一些具体实施中,应用程序(例如,管理程序或助手应用程序或装置)可促进将虚拟机的执行从一个装置转移到另一个装置。例如,应用程序可在第一装置上执行虚拟机期间通知处理器虚拟机的哪些队列需要服务并且在将虚拟机从第一装置迁移到第二装置期间监测字节脏度。已经在前述段落中描述了虚拟机的队列和队列服务进程的流程。基于这些结构及其进程的流程,用于应用程序迁移的助手406可如下文所述那样实施。在一些实例中,在将虚拟机的执行从第一装置转移到第二装置期间,应用程序可通知处理器待写入到存储器的字节,例如,基于针对所述虚拟机的队列中的条目,并且存储指示写入的字节的数据,使得那些字节而不是含有那些字节的页将被转移到第二装置,例如当含有那些字节的页先前已被转移到第二装置而没有对所述字节更新时。在一些具体实施中,不同应用程序促进将虚拟机的执行从一个装置转移到另一个装置并且通知处理器虚拟机的需要服务的队列。
图4是装置A 402a将应用程序404迁移到另一个装置B 402b的示例性环境400的框图。例如,装置A 402a可执行应用程序404,诸如虚拟机。在时间TA处,装置A 402a可确定将应用程序404转移到装置B 402b。装置A 402a可响应于从另一个装置接收指示应当转移应用程序404的消息而作出所述确定。装置A 402a可响应于在装置A 402a上执行的应用程序404或另一个应用程序的性能而作出所述确定。例如,当应用程序404或另一个应用程序正在低于最小性能要求下执行时,装置A 402a可确定将应用程序404转移到装置B 402b。
装置A 402a将用于执行应用程序404的数据复制到装置B 402b。例如,装置A 402a可访问存储器A 408a并且将用于应用程序404的一个或多个数据页A至B 410a至410b的复本从存储器A 408a提供给装置B 402b。装置B 402b可将数据页A至B 410a至410b存储在装置B 402b中所包括的存储器B 408b中。
装置A 402a在时间TB处将存储器A 408a中的页映射到助手406,例如,以页映射。助手406可为应用程序或装置,例如,装置A 402a中所包括的组件。例如,最初在执行应用程序404期间,装置A 402a将页A至B 410a至410b映射到应用程序404。当将页A至B 410a至410b复制到装置B 402b时或紧接在将页A至B 410a至410b复制到装置B 402b之前,装置402a改变页映射,以使得页A至B 410a至410b映射到助手406,以允许助手406在迁移进程期间监测页A至B 410a至410b中的粒脏度。在一些实例中,助手406通知管理程序更新页映射。在一些具体实施中,助手406是管理程序助手或管理程序。
在装置A 402a将用于执行应用程序404的数据复制到装置B 402b时,装置A 402a继续执行应用程序404。在执行应用程序404期间,在时间TC处,应用程序404确定待写入到页A 410a的字节。
在时间TD处,装置402a使用指示哪些页被分配给哪些应用程序的存储器映射来确定页A 410a映射到助手406,例如,助手406能够编辑页A 410a并且应用程序404无法编辑页A 410a。装置402a从应用程序404接收字节并且将用于写入到页A 410a的字节提供给助手406。
助手406在时间TE处将所述字节写入到存储器A 408a中的页A 410a,并且在时间TF处,更新指示写入到页A 410a的字节的脏映射412(例如,用于所述页的元数据)。TE和TF的时序可呈任何次序。例如,助手406可先更新脏映射412并且接着将字节写入到页A 410a,可同时执行两个动作,或先写入字节并且接着更新脏映射412。
在一些具体实施中,助手406为待写入的字节分派新的页,例如,存储器A 408a中的新的页。例如,助手406可分派来自缓冲池的新的页并且将针对所述字节的写入存储在所述新的页中。助手406接着更新所述页的映射,因为针对页A 410a的读取和写入访问请求转到了新分配的页,而不是页410a。在一些实例中,助手406通知管理程序更新页映射。助手406可分派新的页,以允许装置A 402a继续将页A至B 410a至410b从装置A 402a复制到装置B 402b,例如,在没有由于新写入的字节引起的中断的情况下。
当应用程序404请求用于读取操作的数据时,助手406接收读取请求的通知。助手406使用页映射来确定所请求的数据并且将所请求的数据提供给应用程序404。例如,助手406可返回已知常数值(例如,这个页包括所有的0)、来自共享的写时复制页的值(例如,装置402a可仅存储所述页的一个复本,直到装置402a接收到写入事件为止,在此时,装置402a复制所述页并且利用新字节更新复本,或解压压缩数据并且将解压数据提供给应用程序404)。在读取请求期间,助手406可在页A至B 410a至410b没有任何更新(例如,新写入的字节)时访问那些页中的一个页。在读取请求期间,助手406可访问一个或多个新分派的页(例如,当对应的页具有已被更新的字节时)。
装置A 402a在时间TG处中止执行应用程序404。例如,装置A 402a可完成将用于执行应用程序404的数据复制到装置B 402b,除了脏字节之外,并且接着中止执行应用程序404。装置A 402a可响应于确定装置A 402a无法继续将用于执行应用程序404的数据复制到装置B 402b而中止执行应用程序404,而没有写入仍旧需要复制的一些数据(例如,变脏)。
装置A 402a或助手406在时间TH处将用于应用程序404的脏字节复制到装置B402b。例如,助手406使用脏映射412来确定自从对应页的复本被提供给装置B 402b以来哪些字节已被更新并且将那些字节提供给装置B 402b。
装置B 402b使用脏字节来更新存储器B 408b中的所述页的复本。在时间TI处,装置B 402b启动执行应用程序404b。
在将脏字节转移到装置B 402b之后,装置A 402a可从存储器A 408a移除用于应用程序404的所有数据。例如,装置A 402a可确定用于应用程序404的哪些数据不用于执行另一个应用程序并且将从存储器A 408a移除那些数据。
装置402a至402b可包括个人计算机、移动通信装置、服务器以及可在网络上发送和接收数据的其它装置。网络(诸如局域网(LAN)、广域网(WAN)、因特网或其组合)连接装置402a至402b以及可能其它装置(未示出)。
在一些具体实施中,助手406包括脏映射412中的脏的多字节数据块的列表。例如,助手406可确定对用于应用程序404的所述页中的一个页的每个写入的粒度(例如,两或四字节的数据块)并且相应地更新脏映射412。
示例性应用程序迁移进程的流程
图5是用于将应用程序从第一装置转移到第二装置的进程500的流程图。例如,进程500可由来自环境400的装置A 402a使用。
第一装置执行应用程序,包括将用于所述应用程序的数据页存储在第一装置的存储器中(502)。数据页可包括用于所述应用程序的指令,用于所述应用程序的、所述指令所操作的数据,或两个都有。所述应用程序可为可从一个装置迁移到另一个装置的虚拟机或另一种类型的应用程序。
第一装置创建用于所述应用程序的映射,其识别数据页在存储器中的位置(504)。例如,第一装置创建指示所述应用程序所拥有的数据页的页映射。
第一装置启动迁移进程,以通过在继续在第一装置上执行应用程序的同时将数据页从第一装置复制到第二装置来将应用程序从第一装置移动到第二装置(506)。例如,第一装置确定必须关闭或重启第一装置并且启动迁移进程。
第一装置将所述数据页中的至少一个数据页中的每一个数据页分配给助手(508)。例如,第一装置将所有的数据页分配给助手应用程序或装置。在一些实例中,第一装置可将一些数据页分配给助手,例如,用于可被操作的数据的页而不是仅包括指令的页。在一些实例中,第一装置可在应用程序尝试对所述页进行写入时将所述页动态地分配给助手。第一装置可通过更新页映射来将所述页分配给助手,例如,以指示助手拥有所述页。
第一装置从应用程序接收对访问存储器的请求(510)。所述请求可为读取请求或写入请求。第一装置可确定请求的类型,例如,所述请求是读取请求还是写入请求。
第一装置确定对访问存储器的请求是写入请求(512)。第一装置更新所述数据页中的所述至少一个数据页中的所述一个或多个字节(514)。例如,助手从应用程序接收字节并且更新存储器中的字节。助手可复制应当写入所述字节的页并且更新所述页(例如,新分配的页)的复本中的字节,并且将所述页的复本用于对那个页的另外的读取和写入请求。
第一装置存储识别更新的字节的数据(516)。例如,助手存储指示所述字节已被更新过的数据。所述数据可识别存储了所述字节的特定页和所述字节在所述页内的特定位置。例如,助手可更新脏映射,以指示所述字节被重写。脏映射可针对各个单独字节或字节组,例如,64个字节的块。可使用任何适当粒度,其小于单个页中所包括的字节量。
在一些具体实施中,识别更新的字节的数据可为用于被重写的字节的地址的列表。例如,脏映射可为被重写的字节的记录。该列表可包括按写入字节的时间次序的地址。在一些实例中,所述列表可呈地址的序号。
在一些实例中,识别更新的字节的数据可为具有可配置的粒度的位向量。例如,位向量中的每个位可表示存储器的64个字节,并且当对应字节中的一个字节被重写时,位向量中的条目被更新。位向量可包括用于客户存储器中的所有字节(例如,用于特定的应用程序)的条目。
在一些具体实施中,第一装置可使用遵循扩展页表(EPT)数据布局的影子结构。例如,第一装置可针对EPT叶节点分派4KB并且针对位向量(其表示用于由EPT叶节点识别的存储器位置的脏字节)分派存储器中的下一个相邻4KB,例如,使得位向量中的每个位表示存储器的64个字节。
第一装置停止在第一装置上执行应用程序(518)。例如,第一装置停止执行应用程序并且将用于该应用程序的任何请求转发到第二装置,例如,使得第二装置可在所述应用程序在第二装置上执行时将所述请求提供给所述应用程序。
第一装置使用识别更新的字节的数据来识别更新的字节(520)。助手可使用脏映射来识别更新的字节,以及任选地是,识别存储了更新的字节的页。
第一装置将更新的字节从第一装置复制到第二装置,以使第二装置继续执行应用程序(522)。第一装置可将更新的字节的复本发送到第二装置。第一装置可在完成复制进程后向第二装置发送消息,所述消息指示第二装置应当执行所述应用程序。在一些具体实施中,第一装置将仅更新的字节的复本发送到第二装置。在一些实例中,第一装置将字节块的复本发送到第二装置,例如,64字节块,这取决于识别更新的字节的数据的粒度,例如,脏映射。例如,当脏映射指示64个字节中的一个字节在64个字节的特定块中被重写时,第一装置将该64个字节的特定块的复本发送到第二装置。
在一些具体实施中,进程500可包括额外步骤、较少步骤,或者所述步骤中的一些步骤可被分成多个步骤。例如,第一装置可执行步骤506到522而不执行步骤502和504。在一些实例中,第一装置或助手可在迁移进程期间从应用程序接收读取请求并且向应用程序提供所请求的数据。
任选具体实施的细节
在一些具体实施中,助手可为在PCIe附接的专用集成电路(ASIC)或现场可编程门阵列(FPGA)中实施的硬件。例如,在PCIe附接的装置中实施助手可允许现有系统在不需要对系统的物理硬件作出改变的情况下使用所述助手。
在一些具体实施中,助手可为片上系统(SoC)。例如,助手可为计算机处理器单元(CPU)芯片的SoC功能。CPU芯片的SoC功能可经由PCIe、相干片上构架或相干片间构架(例如,快速通道互连(QPI)或高级可扩展接口(AXI)总线)来附接。在一些具体实施中,助手可使用QPI或AXI总线在插口外芯片中实施。
当以硬件实施时,助手可以能够对存储器(例如,高速缓存或CPU存储器)进行写入并且发送中断。助手可以能够每秒对大量门铃请求作出响应,例如,每秒5百万个门铃请求。
另外的具体实施的细节
本说明书中所描述的主题和功能操作的实施例可在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括本说明书中所公开的结构及其结构等同物)中或在上述这些的一个或多个的组合中实施。本说明书中所描述的主题的实施例可被实施作为一个或多个计算机程序,即,在有形非暂态的程序载体上编码以供数据处理设备执行或控制数据处理设备的操作的计算机程序指令的一个或多个模块。备选地或另外地,程序指令可编码在人工生成的传播信号(例如,机器生成的电、光学或电磁信号)上,所述信号被生成以对信息进行编码,以供传输到合适的接收器设备,以便由数据处理设备执行。计算机存储介质可为机器可读存储装置、机器可读存储基质、随机或串行存取存储器装置或上述这些的一个或多个的组合。
术语“数据处理设备”是指数据处理硬件并且包含用于处理数据的所有种类的设备、装置和机器,举例来说包括可编程处理器、计算机或者多个处理器或计算机。所述设备还可为或还可包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,所述设备可任选地包括创建用于计算机程序的执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或上述这些的一个或多个的组合的代码。
还可称为或描述为程序、软件、软件应用程序、模块、软件模块、脚本或代码的计算机程序可以以任何形式的编程语言(包括编译语言或解译语言或者声明语言或程序语言)编写,并且其可以以任何形式(包括作为独立程序或作为模块、组件、子例程或适合于在计算环境中使用的其它单元)部署。计算机程序可以但不需要对应于文件系统中的文件。程序可存储在保持其它程序或数据的文件的一部分中,例如,存储在标记语言文档中、存储在专用于正被谈论的程序的单个文件中或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中的一个或多个脚本。计算机程序可被部署为在一个计算机上执行或在位于一个地点处或分布在多个地点处并且通过通信网络互连的多个计算机上执行。
本说明书中所描述的进程和逻辑流程可由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并且生成输出来执行功能。进程和逻辑流程还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且设备还可实施为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
适合于执行计算机程序的计算机包括(举例来说)通用或专用微处理器或者两者都有,或者任何其它种类的中央处理单元。一般来说,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或实行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。一般来说,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘或光盘),或者计算机将操作性地耦接,以从所述大容量存储装置接收数据或将数据转移到所述大容量存储装置,或者进行这两个操作。然而,计算机不需要具有此类装置。此外,计算机可嵌入在另一个装置中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储装置(例如,通用串行总线(USB)闪存驱动器),仅列举一些。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,包括(举例来说)半导体存储器装置,例如,EPROM、EEPROM和闪存存储器装置;磁盘,例如,内部硬盘或可卸载磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。处理器和存储器可由专用逻辑电路补充或并入在专用逻辑电路中。
为了提供与用户的交互,本说明书中所描述的主题的实施例可在具有用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及可供用户向计算机提供输入的键盘和指点装置(例如,鼠标或轨迹球)的计算机上实施。其它种类的装置也可用于提供与用户的交互;例如,提供给用户的反馈可为任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式(包括声学、语音或触觉输入)来接收。另外,计算机可通过向用户所使用的装置发送文档并且从用户所使用的装置接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求来将网页发送到用户装置上的网络浏览器。
本说明书中所描述的主题的实施例可在包括后端组件(例如,作为数据服务器)或包括中间设备组件(例如,应用程序服务器)或包括前端组件(例如,具有图形用户界面或网路浏览器的客户端计算机,用户可通过该网路浏览器与本说明书中描述的主题的具体实施交互)或者一个或多个此类后端、中间设备或前端组件的任何组合的计算系统中实施。所述系统的组件可通过数字数据通信的任何形式或介质(例如,通信网络)互连。通信网络的实例包括局域网(LAN)和广域网(WAN)(例如,因特网)。
计算系统可包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页)传输到用户装置,例如,用于向与用户装置交互的用户显示数据并且从与用户装置交互的用户接收用户输入,所述用户装置充当客户端。可在服务器处从用户装置接收在用户装置处生成的数据(例如,用户交互的结果)。
一种此类类型的计算机的实例在图6中示出,图6示出通用计算机系统600的示意图。根据一个具体实施,系统600可用于结合先前所描述的任何计算机实施方法描述的操作。系统600包括处理器610、存储器620、存储装置630和输入/输出装置640。组件610、620、630和640中的每一个使用系统总线650互连。处理器610能够处理用于在系统600内执行的指令。在一个具体实施中,处理器610是单线程处理器。在另一个具体实施中,处理器610是多线程处理器。处理器610能够处理存储在存储器620中或存储在存储装置630上的指令,以在输入/输出装置640上显示用于用户界面的图形信息。
存储器620存储系统600内的信息。在一个具体实施中,存储器620是计算机可读介质。在一个具体实施中,存储器620是易失性存储器单元。在另一个具体实施中,存储器620是非易失性存储器单元。
存储装置630能够为系统600提供大容量存储。在一个具体实施中,存储装置630是计算机可读介质。在各种不同具体实施中,存储装置630可为软盘装置、硬盘装置、光盘装置或磁带装置。
输入/输出装置640为系统600提供输入/输出操作。在一个具体实施中,输入/输出装置640包括键盘和/或指点装置。在另一个具体实施中,输入/输出装置640包括用于显示图形用户界面的显示单元。
尽管本说明书包含许多特定具体实施的细节,但这些细节不应被理解为对可要求保护的内容的范围的限制,而是应当理解为可针对特特定实施例的特征的描述。在本说明书中的在单独实施例的上下文中描述的某些特征也可在单个实施例中组合地实施。相反,在单个实施例的上下文中描述的各种特征也可在多个实施例中单独地或以任何合适的子组合实施。此外,虽然可在上文中将特征描述为以特定组合起作用,并且甚至最初就是如此要求保护特征的,但来自所要求保护的组合的一个或多个特征可在一些情况下从所述组合撤除,并且所要求保护的组合可针对于子组合或子组合的变型。
类似地,尽管在附图中以特定次序描绘操作,但这不应被理解为要求以所示的特定次序或以相继次序执行此类操作,或者执行所有所示出的操作,以实现所需结果。在某些情况下,多任务处理和并行处理可为有利的。此外,在上文所述的实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要此类分离,并且应当理解的是,所描述的程序组件和系统可通常一起集成在单个软件产品中或封装到多个软件产品中。
已经描述了主题的特定实施例。其它实施例属于所附权利要求书的范围内。例如,权利要求书中所陈述的动作可以不同次序来执行并且仍实现所需结果。作为一个实例,附图中所描绘的进程不一定需要所展示的特定次序或相继次序来实现所需结果。在一些情况下,多任务处理和并行处理可为有利的。

Claims (19)

1.一种计算机实施的方法,包括:
通过向多个门铃页中的每一个门铃页分配相应的地址,针对在装置上执行的多个虚拟机生成所述多个门铃页;
通过向所述多个虚拟机中的每一个虚拟机提供指向相应的虚拟机的相应地址,向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自所述相应的虚拟机的请求的环形缓冲器的相应一个门铃页的访问;
从所述多个门铃页中的一个特定门铃页接收相应的环形缓冲器具有来自所述相应的虚拟机的请求的通知;以及
响应于接收到所述相应的环形缓冲器具有来自所述相应的虚拟机的请求的所述通知,使处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器。
2.根据权利要求1所述的方法,包括:
在所述处理器处理所述请求时,继续执行所述相应的虚拟机。
3.根据权利要求1所述的方法,包括:
在接收所述相应的环形缓冲器具有来自所述相应的虚拟机的请求的所述通知之前,接收对所述相应的环形缓冲器的更新。
4.根据权利要求1所述的方法,其中,使处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器包括:向所述处理器发送中断。
5.根据权利要求1所述的方法,其中:
生成所述多个门铃页包括:生成跟踪结构并且向所述多个门铃页中的每一个门铃页分配来自所述跟踪结构的相应索引;并且
向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的识别存储来自所述相应的虚拟机的请求的所述环形缓冲器的所述相应一个门铃页的访问包括:向所述多个虚拟机中的每一个虚拟机提供用于指向所述相应的虚拟机的所述相应索引的地址。
6.根据权利要求1所述的方法,其中:
生成所述多个门铃页包括:
针对所述多个门铃页中的每一个门铃页生成页;以及
针对所述多个门铃页中的每一个门铃页分配非零偏移距,所述多个门铃页中的所述相应一个门铃页在相应的页内驻留在所述非零偏移距处;并且
向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自所述相应的虚拟机的请求的所述环形缓冲器的所述相应一个门铃页的访问包括:向所述多个虚拟机中的每一个虚拟机提供用于指向所述相应虚拟机的所述相应页和所述非零偏移距的地址。
7.一种计算机实施的方法,包括:
针对在装置上执行的多个虚拟机生成多个门铃页;
生成位向量,所述位向量包括针对所述多个门铃页中的每一个门铃页的相应条目,该相应条目唯一地对应于该门铃页并且唯一地识别存储来自相应的虚拟机的请求且由该门铃页识别的队列;
向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自相应的虚拟机的请求的队列的相应一个门铃页的访问;
从所述多个门铃页中的特定一个门铃页接收相应的队列具有来自相应的虚拟机的请求的通知;
响应于接收到所述相应的队列具有来自所述相应的虚拟机的请求的所述通知,更新所述位向量中的识别所述相应的队列的所述相应条目,以及
响应于更新所述位向量中的识别所述相应的队列的所述相应条目,通过将所述位向量提供给处理器以使所述处理器处理针对所述相应的虚拟机的所述相应的队列,使所述处理器处理针对所述相应的虚拟机的所述相应的队列。
8.根据权利要求7所述的方法,其中,将所述位向量提供给所述处理器以使所述处理器处理针对所述相应的虚拟机的所述相应的队列包括:将所述位向量提供给所述处理器,以使所述处理器处理针对所述多个虚拟机的多个队列。
9.根据权利要求7所述的方法,包括:
在所述处理器处理所述请求时,继续执行所述相应的虚拟机。
10.根据权利要求7所述的方法,包括:
在接收所述相应的队列具有来自所述相应的虚拟机的请求的所述通知之前,接收对所述相应的队列的更新。
11.一种计算机实施的方法,包括:
针对在装置上执行的多个虚拟机生成多个第一门铃页;
向所述多个虚拟机中的每一个虚拟机提供对所述多个第一门铃页中的、识别存储来自相应的虚拟机的第一请求的第一队列的相应一个门铃页的访问,所述第一请求中的每一个具有第一类型;
生成多个第二门铃页;
向所述多个虚拟机中的至少一些虚拟机中的每一个门铃页提供对所述多个第二门铃页中的、识别存储来自相应的虚拟机的第二请求的第二队列的相应一个门铃页的访问,所述第一类型的所述第一请求不同于第二类型的所述第二请求;
从所述多个门铃页中的一个特定门铃页接收所述相应的队列具有来自所述相应的虚拟机的请求和识别请求类型的通知;并且
响应于接收所述相应的队列具有来自所述相应的虚拟机的请求的所述通知:
确定所述请求类型包括所述第一类型;
确定被分配为服务所述第一类型的请求的特定处理器;以及
使所述特定处理器处理针对所述相应的虚拟机的所述相应的队列。
12.根据权利要求11所述的方法,包括:
在所述装置的第一处理器上执行所述多个虚拟机,其中,使所述特定处理器处理针对所述相应的虚拟机的所述相应的队列包括:向在不同的第二处理器上执行的管理程序提供消息,以使所述不同的第二处理器处理针对所述相应的虚拟机的所述相应的队列。
13.根据权利要求12所述的方法,其中,向在所述不同的第二处理器上执行的所述管理程序提供所述消息包括:向在与所述装置不同的第二装置上的所述不同的第二处理器上执行的所述管理程序提供所述消息。
14.一种系统,包括:
存储器;
数据处理设备;以及
非暂态的计算机可读存储介质,其与所述数据处理设备进行数据通信并且存储能够由所述数据处理设备执行并且在执行时使所述数据处理设备执行包括以下各项的操作的指令:
通过向多个门铃页中的每一个门铃页分配相应的地址,针对在所述系统上执行的多个虚拟机,将多个门铃页存储在所述存储器中;
通过向所述多个虚拟机中的每一个虚拟机提供指向相应的虚拟机的相应地址,向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自所述相应的虚拟机的请求的环形缓冲器的相应一个门铃页的访问;
从所述多个门铃页中的一个特定门铃页接收相应的环形缓冲器具有来自所述相应的虚拟机的请求的通知;以及
响应于接收到所述相应的环形缓冲器具有来自所述相应的虚拟机的请求的所述通知,使处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器。
15.根据权利要求14所述的系统,其中,所述数据处理设备包括处理针对所述相应的虚拟机的所述相应的环形缓冲器的所述处理器。
16.根据权利要求14所述的系统,包括:
所述处理器,其不同于所述数据处理设备,所述操作包括:
在所述数据处理设备上执行所述多个虚拟机,其中,使所述处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器包括:向在所述处理器上执行的管理程序提供消息,以使所述处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器。
17.根据权利要求16所述的系统,包括:
第一装置,其包括所述数据处理设备;以及
第二装置,其包括所述处理器,其中,将所述消息提供给在所述处理器上执行的所述管理程序包括:将所述消息提供给在与所述第一装置不同的所述第二装置上的所述处理器上执行的所述管理程序。
18.根据权利要求14所述的系统,其中:
在所述存储器中存储所述多个门铃页包括:
针对所述多个门铃页中的每一个门铃页生成页;以及
针对所述多个门铃页中的每一个门铃页分配非零偏移距,所述多个门铃页中的所述相应一个门铃页在相应的页内驻留在所述非零偏移距处;并且
向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自所述相应的虚拟机的请求的所述环形缓冲器的所述相应一个门铃页的访问包括:向所述多个虚拟机中的每一个虚拟机提供用于指向所述相应虚拟机的所述相应页和所述非零偏移距的地址。
19.一种非暂态的计算机可读存储介质,存储能够由数据处理设备执行并且在执行时使所述数据处理设备执行包括以下各项的操作的指令:
通过向多个门铃页中的每一个门铃页分配相应的地址,针对在装置上执行的多个虚拟机生成所述多个门铃页;
通过向所述多个虚拟机中的每一个虚拟机提供指向相应的虚拟机的相应地址,向所述多个虚拟机中的每一个虚拟机提供对所述多个门铃页中的、识别存储来自所述相应的虚拟机的请求的环形缓冲器的相应一个门铃页的访问;
从所述多个门铃页中的一个特定门铃页接收相应的环形缓冲器具有来自所述相应的虚拟机的请求的通知;以及
响应于接收到所述相应的环形缓冲器具有来自所述相应的虚拟机的请求的所述通知,使处理器处理针对所述相应的虚拟机的所述相应的环形缓冲器。
CN201680019788.8A 2015-04-16 2016-03-31 虚拟机系统 Active CN107430522B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810159787.4A CN108268331B (zh) 2015-04-16 2016-03-31 虚拟机系统

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/688,258 US9747122B2 (en) 2015-04-16 2015-04-16 Virtual machine systems
US14/688,258 2015-04-16
US14/724,259 US9639395B2 (en) 2015-04-16 2015-05-28 Byte application migration
US14/724,259 2015-05-28
PCT/US2016/025303 WO2016167980A2 (en) 2015-04-16 2016-03-31 Virtual machine systems

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810159787.4A Division CN108268331B (zh) 2015-04-16 2016-03-31 虚拟机系统

Publications (2)

Publication Number Publication Date
CN107430522A CN107430522A (zh) 2017-12-01
CN107430522B true CN107430522B (zh) 2018-09-21

Family

ID=55750492

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680019788.8A Active CN107430522B (zh) 2015-04-16 2016-03-31 虚拟机系统
CN201810159787.4A Active CN108268331B (zh) 2015-04-16 2016-03-31 虚拟机系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810159787.4A Active CN108268331B (zh) 2015-04-16 2016-03-31 虚拟机系统

Country Status (9)

Country Link
US (1) US9639395B2 (zh)
EP (2) EP3779695A1 (zh)
JP (2) JP6423547B2 (zh)
KR (2) KR101922533B1 (zh)
CN (2) CN107430522B (zh)
DE (2) DE202016107376U1 (zh)
GB (1) GB2553050A (zh)
HK (2) HK1243792B (zh)
WO (1) WO2016167980A2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019732B2 (en) * 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
US10838852B2 (en) 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space
US11036533B2 (en) 2015-04-17 2021-06-15 Samsung Electronics Co., Ltd. Mechanism to dynamically allocate physical storage device resources in virtualized environments
US10228969B1 (en) * 2015-06-25 2019-03-12 Amazon Technologies, Inc. Optimistic locking in virtual machine instance migration
US10970110B1 (en) 2015-06-25 2021-04-06 Amazon Technologies, Inc. Managed orchestration of virtual machine instance migration
US10043010B1 (en) * 2015-12-31 2018-08-07 Cybereason Migration of sandbox processes for malware prevention
US10545800B2 (en) * 2017-05-31 2020-01-28 Ati Technologies Ulc Direct doorbell ring in virtualized processing device
US10860475B1 (en) * 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
KR102107374B1 (ko) * 2018-08-27 2020-05-07 주식회사 두두아이티 가상화 기반 훈련 콘텐츠 제공 시스템
KR20220118004A (ko) * 2021-02-18 2022-08-25 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102713847A (zh) * 2009-12-29 2012-10-03 超威半导体公司 处理器内核的监管程序隔离
CN103765380A (zh) * 2011-07-01 2014-04-30 英特尔公司 用于事件的安全排队的方法和系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918248A (en) * 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US7543290B2 (en) 2001-04-11 2009-06-02 Mellanox Technologies Ltd. Multiple queue pair access with single doorbell
US20050144422A1 (en) 2003-12-30 2005-06-30 Mcalpine Gary L. Virtual to physical address translation
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US8694990B2 (en) * 2007-08-27 2014-04-08 International Business Machines Corporation Utilizing system configuration information to determine a data migration order
CN101609419B (zh) * 2009-06-29 2012-05-30 北京航空航天大学 虚拟机持续在线迁移的数据备份方法及装置
US8478725B2 (en) * 2009-09-14 2013-07-02 Vmware, Inc. Method and system for performing live migration of persistent data of a virtual machine
US8356149B2 (en) * 2009-10-30 2013-01-15 Hewlett-Packard Development Company, L.P. Memory migration
US8327060B2 (en) * 2009-11-30 2012-12-04 Red Hat Israel, Ltd. Mechanism for live migration of virtual machines with memory optimizations
US8468288B2 (en) * 2009-12-10 2013-06-18 International Business Machines Corporation Method for efficient guest operating system (OS) migration over a network
US9032398B2 (en) 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US20120229481A1 (en) * 2010-12-13 2012-09-13 Ati Technologies Ulc Accessibility of graphics processing compute resources
US8832029B2 (en) * 2011-02-16 2014-09-09 Microsoft Corporation Incremental virtual machine backup supporting migration
US9274825B2 (en) * 2011-08-16 2016-03-01 Microsoft Technology Licensing, Llc Virtualization gateway between virtualized and non-virtualized networks
US20130174144A1 (en) 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
BR112014017543A2 (pt) 2012-01-17 2017-06-27 Intel Corp técnicas de validação de comando para o acesso a um dispositivo de armazenamento por um cliente remoto
US10474369B2 (en) * 2012-02-06 2019-11-12 Vmware, Inc. Mapping guest pages to disk blocks to improve virtual machine management processes
US9454487B2 (en) * 2012-08-27 2016-09-27 Vmware, Inc. Transparent host-side caching of virtual disks located on shared storage
GB2506177A (en) * 2012-09-25 2014-03-26 Ibm Method of migrating an operating system executing an application
US9069485B2 (en) 2012-12-20 2015-06-30 Oracle International Corporation Doorbell backpressure avoidance mechanism on a host channel adapter
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
EP3127300B1 (en) * 2014-05-12 2019-09-04 Google LLC Managing nic-encrypted flows for migrating guests or tasks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102713847A (zh) * 2009-12-29 2012-10-03 超威半导体公司 处理器内核的监管程序隔离
CN103765380A (zh) * 2011-07-01 2014-04-30 英特尔公司 用于事件的安全排队的方法和系统

Also Published As

Publication number Publication date
HK1243792B (zh) 2019-11-01
JP6391878B1 (ja) 2018-09-19
KR20170122826A (ko) 2017-11-06
DE202016107376U1 (de) 2017-01-24
KR20180081847A (ko) 2018-07-17
KR102011478B1 (ko) 2019-10-21
CN108268331B (zh) 2019-05-31
HK1251315B (zh) 2020-06-26
US20160306658A1 (en) 2016-10-20
WO2016167980A3 (en) 2016-11-17
CN107430522A (zh) 2017-12-01
DE112016001730T5 (de) 2017-12-28
GB201715307D0 (en) 2017-11-08
GB2553050A (en) 2018-02-21
JP2018170033A (ja) 2018-11-01
EP3779695A1 (en) 2021-02-17
US9639395B2 (en) 2017-05-02
KR101922533B1 (ko) 2019-02-20
WO2016167980A2 (en) 2016-10-20
JP6423547B2 (ja) 2018-11-14
CN108268331A (zh) 2018-07-10
JP2018511881A (ja) 2018-04-26
EP3283960A2 (en) 2018-02-21

Similar Documents

Publication Publication Date Title
CN107430522B (zh) 虚拟机系统
KR102025934B1 (ko) 분산형 시스템에서의 범위들의 분할 및 이동
US10291704B2 (en) Networked solutions integration using a cloud business object broker
US9747122B2 (en) Virtual machine systems
CN108737325A (zh) 一种多租户数据隔离方法、装置及系统
US8719845B2 (en) Sharing and synchronization of objects
CN109313564A (zh) 用于支持多个不同租户的高度可用虚拟桌面的服务器计算机管理系统
CN103544153A (zh) 一种基于数据库的数据更新方法和系统
KR20190108020A (ko) 블록체인을 이용한 트랜잭션 처리 방법 및 이를 이용한 트랜잭션 서버
CN109086462A (zh) 一种分布式文件系统中元数据的管理方法
CN107209748A (zh) 信息处理设备、信息处理方法、主处理器核心、程序、信息处理方法和副处理器核心
CN108369547A (zh) 持久性主存储器中的日志的尾部
US10127270B1 (en) Transaction processing using a key-value store
JP2010191662A (ja) ファイル管理方法、ファイル管理プログラム、および、ファイル管理装置
US8146109B2 (en) Version resiliency for a host application and custom code
US20200026875A1 (en) Protected health information in distributed computing systems
US11907176B2 (en) Container-based virtualization for testing database system
CN115136133A (zh) 按需代码执行的单次使用执行环境
CN108683581B (zh) 邮件触发方法及装置、电子设备和计算机可读存储介质
CN115485677A (zh) 在分布式数据存储环境中的安全数据复制
CN110908573B (zh) 算法模型训练方法、装置、设备及存储介质
US11593498B2 (en) Distribution of user specific data elements in a replication environment
US20210232371A1 (en) Composition enablement for partner and customer extensibility of inversion of control objects
CN114565465A (zh) 自动化交易方法、装置、设备、存储介质和程序产品
JP2022542212A (ja) カーネルサポートを用いたデュラブルサービスに基づく耐障害オペレーティングシステムを構築すること

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1243792

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant