CN104516773A - 用于物理机的数据分配方法和数据分配装置 - Google Patents
用于物理机的数据分配方法和数据分配装置 Download PDFInfo
- Publication number
- CN104516773A CN104516773A CN201310454953.0A CN201310454953A CN104516773A CN 104516773 A CN104516773 A CN 104516773A CN 201310454953 A CN201310454953 A CN 201310454953A CN 104516773 A CN104516773 A CN 104516773A
- Authority
- CN
- China
- Prior art keywords
- data
- physical machine
- virtual machine
- scheduler
- pending data
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开内容涉及用于物理机的数据处理方法和数据处理装置。提供了一种用于物理机的数据分配方法,在所述物理机上运行有多个虚拟机。所述方法包括:从用于分配作业数据的调度器接收待处理数据;将接收的待处理数据存储在单个队列中;以及响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。通过上述方法,能够充分利用物理机资源,提高物理机的处理效率,缩短物理机整体上对待处理数据的处理时间,进而有利于整个作业的完成,缩短作业的处理时间。
Description
技术领域
本发明涉及数据处理领域,并且更具体地,涉及数据处理领域中的用于物理机的数据分配方法和数据分配装置。
背景技术
随着虚拟化技术的发展,在一个物理机上通常可以同时运行多个虚拟机。这些虚拟机共享物理机的硬件资源并协同工作,不仅可以扩大物理机的硬件容量,而且在各虚拟机中进行的数据处理可以独立进行而不相互影响,由此可以显著提高物理机的工作效率。
目前常用的虚拟化技术包括Xen、KVM(Kernel Virtual Machine,内核虚拟机)等。以Xen为例,在一个物理机A上可以同时运行被称为Dom0、Dom1、Dom2、……、Dom U的这U+1个虚拟机。Dom0虚拟机作为控制虚拟机,能够分辨物理机A接收的数据分别属于Dom1至Dom U中的哪个虚拟机。Dom1至Dom U中的每一个均具有一个属于它自己的队列。Dom0通过将数据存储在Dom i(i为1至U的整数)的队列中以供Dom i处理。例如,Dom0通过将待分配给Dom1的数据存储在对应于Dom1的基准存储页面Page1中,然后通过将Page1中的数据与Dom1对应的虚拟机存储页面Page1’中的数据进行交换,向Dom1分配属于它的数据。分配给Dom1的数据被存储在Dom1自己的队列中。同样地,分配给Dom2至Dom U中的每一个的数据也被存储在它们各自的队列中。这样,Dom0至Dom U中的每一个通过从它们各自的队列中取数据来并行运行。
然而,由于每个虚拟机在处理一个作业的数据的过程中所处理的数据可能对应于该作业中包含的具有不同复杂度的任务(一个作业可以包含多个任务),因此,即便每个虚拟机需处理的数据量相等,由于不同数据对应不同的操作和计算复杂度,每个虚拟机的处理时间可能不相同。例如,对于某MapReduce负载,由于一个物理机上的多个虚拟机处理相同数据量任务的处理时间不同,97%的任务可能将在1个小时内完成,但是剩下的一些任务可能需要花费相当长的时间才能够完成,例如大于10个小时。
由于物理机上不同虚拟机对数据的处理时间不同,因此,可能出现一台物理机上的一些虚拟机已经完成数据处理而另一些虚拟机仍处于数据处理过程的现象,使得该物理机上的一些虚拟机处于漫长的等待状态,从而使得物理机的资源没有得到充分利用而影响物理机的处理效率。
发明内容
本发明的实施例提供了一种用于物理机的数据分配方法和数据分配装置,能够避免空闲的虚拟机长期等待,从而能够充分利用单个物理机的资源,提高单个物理机的处理效率。
根据本发明的一方面,提供了一种用于物理机的数据分配方法,在所述物理机上运行有多个虚拟机,所述方法包括:从用于分配作业数据的调度器接收待处理数据;将接收的待处理数据存储在单个队列中;以及响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
根据本发明的另一方面,提供了一种用于物理机的数据分配装置,在所述物理机上运行有多个虚拟机,所述装置包括:接收部件,被配置为从用于分配作业数据的调度器接收待处理数据;存储部件,被配置为将接收的待处理数据存储在单个队列中;以及分配部件,被配置为响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
根据上述技术方案,通过为物理机上的多个虚拟机设置单个队列,一旦有虚拟机空闲,就可以从该单个队列中取出数据供该空闲的虚拟机处理。相比于现有技术中为不同虚拟机设置不同的队列而言,多个虚拟机共享单个队列的方式能够更有效地利用各虚拟机,避免有虚拟机处于等待状态而浪费物理机资源。这样,当物理机上还有待处理数据时,物理机上的虚拟机都能够保持在运行状态,从而能够充分利用物理机资源,提高物理机的处理效率,缩短物理机整体上对待处理数据的处理时间。由于物理机的处理时间的缩短,有利于物理机更快地请求新的待处理数据,从而进一步有利于整个作业的完成,缩短作业的处理时间。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1表示根据本发明一实施例的云计算节点;
图2表示根据本发明一实施例的云计算环境;
图3表示根据本发明一实施例的抽象模型层;
图4是示出根据本发明实施例的用于物理机的数据分配方法的流程图;
图5是示出用于实现根据本发明实施例的数据分配方法的系统配置的例子的示意图;
图6是示出根据本发明实施例的在单个物理机上采取的单队列多窗口(也可以被称为单队列多服务器)模型的示意图;
图7是示出在现有技术中在单个物理机上采取的多队列多窗口模型的示意图;
图8是示出根据本发明实施例的由调度器一侧执行的向物理机分配作业数据的方法的流程图;
图9是示出根据本发明实施例的由虚拟机一侧执行的数据处理方法的流程图;
图10是示出根据本发明实施例的用于物理机的数据分配装置的结构框图;以及
图11是示出根据本发明实施例的用于物理机的数据分配装置的另一结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图3所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机,例如 系统;基于RISC(精简指令集计算机)体系结构的服务器,例如系统;系统;系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM应用服务器软件;数据库软件,例如数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
在一个示例中,管理层64可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层66提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及数据的有效分配。
接下来,将参照图4描述根据本发明实施例的用于物理机的数据分配方法400的流程图。方法400可以由物理机执行,物理机例如可以是图2中的云计算节点10。本文中的物理机能够支持虚拟化技术,在其上可以同时运行多个虚拟机。
如图4所示,方法400包括:在S410中,从用于分配作业数据的调度器接收待处理数据;在S420中,将接收的待处理数据存储在单个队列中;以及在S430中,响应于多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
例如,当一个作业(例如MapReduce作业)被分布式计算网络(例如云网络)进行处理时,用于分配作业数据的调度器可以将待处理数据发送给分布式计算环境中的不同物理机。调度器每次可以将作业数据的不同部分分配给不同的物理机以进行分布式处理。当有物理机空闲(即,该物理机上的所有虚拟机都完成了数据处理)时,该调度器可以继续向该空闲的物理机分配新的待处理数据。
接收到待处理数据的物理机将它所接收的数据存储在单个队列中,而不是如现有技术那样区分属于不同虚拟机的数据,从而将属于不同虚拟机的数据存储在虚拟机各自的不同的队列中。这样,在物理机上运行的多个虚拟机可以共享设置在虚拟机中的该单个队列,从而可以分别从该队列中取出数据进行处理。这样,数据处理较快完成的虚拟机可以继续从该队列中取出新的待处理数据,从而可以避免同一物理机上部分虚拟机处于等待状态而部分虚拟机处于计算过程的现象,使得能够充分利用物理机的资源,缩短物理机处理数据的时间,提高处理效率。
根据本发明的一个实施例,可以将接收的待处理数据以预定的基准存储页面为单位存储在单个队列中。从而,当需要从该队列中取出数据时,也可以以基准存储页面为单位进行数据的读取,例如每次读取整数个基准存储页面。以基准存储页面为单位进行数据的存储和读取可以与现有的虚拟机技术相兼容,提高数据传输的效率。
预定的基准存储页面可以是由虚拟化技术规定的基准存储页面,也可以是由用户指定来供虚拟机进行数据读取的数据量的基本单位。例如,基准存储页面可以是能够存储64KB的数据的页面,物理机可以将从调度器接收的待处理数据以64KB为单位进行划分,以每次向队列传递64KB的数据。
在需要以基准存储页面为单位进行数据存取的情况下,物理机从调度器接收的待处理数据的数据量大小需要为基准存储页面的整数倍,以使得每次物理机处理待处理数据时都能够将待处理数据完整地以页面形式放入队列中。此外,由于物理机通常需要处理的数据是以数据记录的形式表现的,因此为了避免虚拟机每次处理的数据包含不完整的数据记录而影响数据正确处理,可以使得每次向虚拟机分配的整数个基准存储页面中包含完整的数据记录。也就是说,不能将一个数据记录的不同部分传输给不同的虚拟机。
当然,除了以基准存储页面为单位进行数据存取之外,还可以采用其他数据存取的方式。例如,物理机可以将接收的待处理数据串行存储到多个虚拟机共享的单个队列中,当某虚拟机空闲时可以从该队列中取出预定数量的数据进行处理。
根据本发明的一个实施例,可以只将属于预定应用的待处理数据存储在单个队列中。此时,该队列为对应于该预定应用的队列,以避免不同应用的数据混在一起而影响对该预定应用的数据的处理。具体而言,由于物理机上的多个虚拟机可能同时支持多个应用(例如,基于MapReduce的数据统计分析应用、基于其它编程语言/平台的数据滤波处理应用等),因此可以为特定的某个应用设置一个队列,以将属于该应用的数据集中连续存储在一起以供不同的虚拟机处理,从而提高该应用的数据处理效率,避免不同应用的数据之间相互影响。
在这种情况下,可以首先对S410中接收的待处理数据进行解析,然后将解析后确定的属于预定应用的待处理数据存储在S420中的单个队列中。具体而言,例如,可以通过分析待处理数据的数据结构或者数据包的包头信息来识别待处理数据所属的应用。将属于物理机关注的预定应用(例如基于MapReduce的应用)的数据存储在队列中,而其他应用的数据可以按照现有处理方式直接传输给虚拟机进行处理。
根据本发明的实施例,除了在单个物理机内部设置供多个虚拟机共享的单个队列之外,还可以使得调度器能够根据物理机的处理能力来向物理机动态分配待处理数据。这样,物理机每次从调度器接收到的作业数据的数据量可能是根据它的处理能力而动态变化的。
具体而言,在现有技术中,调度器每次根据预定的系统配置参数向物理机静态分配固定大小的待处理数据,而不管该物理机的处理能力如何。然而,在本发明的实施例中,当物理机完成对当前接收的待处理数据的处理时,物理机根据其上运行的多个虚拟机处理的数据量大小和处理时间,可以向调度器报告用于指示该物理机的数据吞吐量的信息,以使调度器下次向该物理机发送具有基于该信息的数据量大小的待处理数据。这样,如果物理机处理数据速度快,也就是该物理机数据吞吐量(或带宽)大,那么下次调度器可以向该物理机分配较多的数据;反之,如果物理机处理数据速度慢,也就是该物理机数据吞吐量(或带宽)小,那么下次调度器可以向该物理机分配较少的数据。
举例来说,假设调度器试图向物理机PM1、PM2和PM3分配具有150M数据量的作业数据。第一次调度器分别向物理机PM1、PM2和PM3分配10M的数据。在物理机PM1上存在三个虚拟机VM1、VM2和VM3,这三个虚拟机对物理机PM1接收到的10M的数据进行处理。首先,在t0时刻,PM向三个虚拟机分别分配2M、2M和2M的数据。在(t0+10)秒时,VM2首先完成2M数据的处理时,PM1向VM2继续分配新的2M数据。在(t0+15)秒时,VM1完成2M数据的处理,PM1向VM1分配新的2M数据。在(t0+20)秒时,所有虚拟机的处理都完成。此时,物理机PM1可以将指示它的数据吞吐量10M/20s=0.5Mbps的信息发送给调度器,由调度器基于该信息向PM1分配具有一定数据量大小的新的待处理数据。另外,PM2和PM3可以以与PM1相同的方式,按照它们各自处理数据的数据量大小和处理完这些数据的处理时间来向调度器报告指示它们的数据吞吐量的信息。在这里,假设PM2向调度器报告的数据吞吐量为1Mbps,PM3向调度器报告的数据吞吐量为1.5Mbps。调度器将下次准备分配给这些物理机的新数据(例如,60M的数据)根据PM1、PM2和PM3的数据吞吐量关系按比例进行分配,以使得各物理机可以根据它们各自的数据处理能力来处理不同数据量的数据,从而可以使得不同的物理机几乎可以同时完成数据的处理,进而可以缩短处理作业整体上的时间。例如,PM1可以被分配60M×0.5/(0.5+1+1.5)的数据,PM2可以被分配60M×1/(0.5+1+1.5)的数据,PM3可以被分配60M×1.5/(0.5+1+1.5)的数据。在PM1、PM2和PM3完成对这些新的待处理数据的处理之后,它们可以继续上报各自的数据吞吐量的信息,以使得调度器可以继续根据这些新上报的信息来调整下次准备动态分配给这些物理机中的每一个的数据量大小。
从以上描述中可以看到,调度器第一次分配给物理机的数据量大小可以为预定大小。该预定大小可以提前被设置,也可以根据不同作业的数据大小被计算。例如,调度器第一次分配给单个物理机的数据量大小可以由调度器根据用于执行作业的物理机个数、作业的数据量大小和预定比例来决定。举例来说,假设用于执行作业的物理机有5个,作业的数据量大小为1G,预定比例为10%,则调度器可以向这5个物理机中的每一个分配1G×0.1/5=20M的数据。当然,每个物理机被分配的初始数据量也可以彼此不同,这些初始分配的数据量用于探测各物理机的处理能力(处理能力可以用数据吞吐量来表征)。
第一次向物理机分配数据之后,可以探测到物理机当前的数据处理能力。接着,第二次可以根据通过第一次的数据处理确定的该物理机的数据处理能力来调整向该物理机分配的数据量。第二次完成处理之后,可以探测到物理机当前的新的数据处理能力,从而第三次可以根据通过第二次的数据处理确定的该物理机的数据处理能力来进一步调整向该物理机分配的数据量;以此类推。这样,调度器可以通过监视物理机每次数据处理完成时反映的处理能力,来动态向物理机分配下一次的数据处理量,从而使得各物理机可以处理具有与其处理能力相适应的数据量大小的数据,各物理机可以基本上同时完成数据处理。因此,可以避免根据预定参数配置向物理机静态分配数据造成的部分物理机处理繁忙而部分物理机处于空闲状态的现象,从而有效利用各物理机,缩短作业的处理时间。
虽然上面描述了各物理机直接向调度器上报数据吞吐量,但是各物理机也可以向调度器上报它处理分配给它的数据所花费的总时间,还可以将所花费的总时间和处理的数据量一起上报给调度器,也可以分别上报各虚拟机处理的数据量和各自花费的时间。无论物理机采用什么形式进行信息上报,只要调度器可以从物理机上报的信息中确定物理机的数据吞吐量即可。
下面结合图5中示出的系统500的配置示例对数据分配方法400进行详细描述。在图5中,以Xen作为物理机采用的虚拟化技术的例子进行描述。本领域技术人员在阅读本说明书后可以容易地想到当物理机采用其它虚拟化技术时进行有效数据分配的方式。在采用其它虚拟化技术时,虚拟机的设置可以与图5中所示的设置有所不同(例如,可以没有起控制作用的虚拟机,而都是用于进行数据处理的虚拟机)。通过用于数据处理的虚拟机从相同的单个队列中取出数据进行处理,可以缩短物理机整体的处理时间。
在图5中,示出了处于分布式计算网络中的一个物理机510和用于向物理机510分配作业数据的调度器520。在物理机的硬件平台上运行有支持Xen虚拟化技术的Xen虚拟机管理器,用于对同时运行的被称为Dom0至Dom U的多个虚拟机进行管理。在这些虚拟机中,Dom0起控制作用,用于对物理机510接收的数据进行划分,以按照Xen规定的基准存储页面来传递数据。Dom1至Dom U对包括MapReduce作业在内的各种应用作业进行数据处理。在这里,为了优化物理机对MapReduce作业中的数据进行处理,为MapReduce设置虚拟机Dom1至Dom U共享的单个队列530。此外,在以下描述中仅关注虚拟机对MapReduce的处理,虚拟机对其它应用的处理可以采用与现有方式相同的方式进行,或者可以采用与对MapReduce的处理方式类似的方式进行。虽然在图5中示出了一个物理机510,但是调度器520还能够向其它物理机分配作业数据,这些其它物理机可以具有与物理机510相同的配置。
由于每个虚拟机需要处理MapReduce,因此每个虚拟机可以作为映射器/化简器(Mapper/Reducer)进行操作。每个Mapper/Reducer中包含数据获取器和执行器。数据获取器可以控制何时将包含在原本与该Mapper/Reducer对应的页面(Page1’至Page U’之一)中的数据传递到队列530中。执行器可以对分配给该Mapper/Reducer的数据进行处理。每个虚拟器还可以包括驱动器。这些驱动器也可以控制何时将对应的页面Page1’至Page U’传递到队列530。在本发明的实施例中,可以通过数据获取器控制将相应的页面Page1’至Page U’传递到队列530的时序,也可以通过驱动器控制该时序,还可以利用下文描述的解析模块540和控制器模块550之一来控制何时将页面Page1’至Page U’传递到队列530。当然,也可以按照固定的时序依次将具有数据的页面传递到队列530中,而无需其它模块的动态控制。
由于希望由虚拟机处理的数据和各虚拟机之间可能没有必需的绑定关系,因此,不同的虚拟机Dom1至Dom U可以对物理机510接收的属于同一作业(例如MapReduce作业)的数据同等处理,所以这些数据可以存储在设置在物理机中的单个队列530中。该队列530可以是从物理机的内存、高速缓存区、随机存储存储器等中开辟出来的一块存储空间,用于存储供虚拟机Dom1至Dom U处理的数据。
在物理机510从调度器520接收到待处理数据之后,这些数据可以以Xen规定的基准存储页面为单位存储在单个队列中。具体而言,如图5所示,物理机510接收的数据可以被传递给Dom0。Dom0中的驱动器根据Xen规定的基准存储页面将数据分割存储到不同的页面Page1至Page U中。页面Page1至Page U分别与原本属于虚拟机Dom0至Dom U的页面Page1’至Page U’进行数据交换。
由于队列530中需要存储供MapReduce处理的数据,因此Xen虚拟机管理器中的解析模块540可以对页面Page1’至Page U’中的数据进行解析,确定其中哪些数据是MapReduce的数据。并将存储MapReduce数据的页面Page1’至Page U’传递到队列530。
这里,虽然涉及页面Page1至Page U以及页面Page1’至Page U’,但这些页面在相关领域中的具体含义并不对本发明实施例的实现造成影响,只要可以将待处理数据存储在队列530中即可。在这里采用基准存储页面进行数据交换的方式可以与现有的虚拟化技术相兼容,避免对现有系统引入较多改变而造成较大影响,从而能够以更简单的方式在现有的系统中实现本发明的实施例。
在队列530中存储有待处理数据的情况下,Xen虚拟机管理器中的控制器模块550通过检测虚拟机Dom1至Dom U中是否存在空闲虚拟机,向检测到的空闲虚拟机以基准存储页面为单位从队列530中采用先进先出的方式分配数据。例如,在Dom1空闲时,控制器模块550可以将队列530中头部的整数个(例如3个)基准存储页面分配给Dom1,以供Dom1进行处理。
在待处理数据以基准存储页面Spage为单位传输到队列530中的情况下,控制器模块550每次向空闲的虚拟机分配的数据量VLP可以表征虚拟机在一个数据获取(fetch)周期中可以处理的数据量。更具体而言,在MapReduce中,VLP可以表征虚拟机上的Mapper(映射器)在一个数据获取周期中可以处理的数据量。
根据本发明的实施例,VLP需要同时满足两个条件。一个条件是VLP需要是Spage的p倍,其中Spage是虚拟机管理器页面的大小,p是可以配置的整数,对于不同物理机可以设置不同的整数倍p,每个物理机的整数倍p在处理同一作业数据时可以改变也可以不变。另一个条件是VLP需要包含完整的数据记录,即,一个数据记录不能部分位于一个VLP中而另一部分位于另一个VLP中。
控制器模块550向空闲虚拟机分配的数据可以被虚拟机中的执行器进行处理。控制器模块550除了监视虚拟机是否空闲以分配队列530中的数据之外,还可以监视虚拟机处理完数据的时间,以计算物理机的数据吞吐量。当然,也可以由解析模块540监视各虚拟机处理完数据的时间,以计算物理机的数据吞吐量。在图5的例子中,可以由解析模块540和控制器模块550之一来收集关于物理机的数据吞吐量的信息。要注意的是,虽然在图5中划分了解析模块540和处理器模块550,但是这两个模块可以是相同的模块,也可以被再次划分成更多的子模块。
图5所示的利用单队列进行数据存取的方式可以用图6所示的形式表示。在图6中,原本属于虚拟机Dom1至Dom U的存储页面Page1’至Page U’中的数据被共同存储在单个队列中,这些虚拟机再从该单个队列中取出页面数据由自己的执行器进行处理。这样,可以实现单队列多窗口(多服务器)的数据存取方式。
相对照地,在图7中示出了现有技术中的多队列多窗口的数据存取方式。在图7中,存储页面Page1’至Page U’中的数据被分别存储在相应虚拟机各自的独立的队列中。虚拟机再从自己独有的队列中取出数据通过自己的执行器进行处理。
通过比较图6和图7,可以清楚地看到,多个虚拟机共享单个队列,可以避免处理速度快的虚拟机空闲而浪费系统资源,从而提高物理机整体的处理效率和速度,缩短物理机整体的处理时间。
物理机510利用上述单队列多窗口的数据分配方式完成数据处理之后,解析模块540(也可以是控制器模块550)可以向调度器520报告指示物理机510的数据吞吐量的信息。该信息可以直接包含数据吞吐量数据,也可以包括供调度器520计算物理机510的数据吞吐量的数据。调度器520根据从处理作业的所有物理机收集到的数据吞吐量信息,按照物理机510的处理速度快慢向它分配下次需处理的数据。例如,调度器520可以将下次需要分配的总数据量中的如下比例分配给物理机510,该比例等于物理机510的数据吞吐量与用于执行作业的所有物理机的数据吞吐量之和的比例。
由于物理机510以VLP向虚拟机分配数据,因此调度器520每次向物理机510分配的数据量可以为VLP的整数倍,以使各虚拟机正确执行数据处理。
具体而言,调度器520第一次向物理机510分配的数据量PLPinitial除了需要为VLP的整数倍之外,还可以等于S×step/#PM。其中,S为MapReduce作业的数据总量;step为可配置的小数,用于表示第一次需要向分布式处理MapReduce作业的所有物理机分配多大比例的数据;#PM表示分布式处理MapReduce作业的物理机的个数。由于计算PLPinitial时需要利用#PM,因此可以将#PM的值输入到调度器520中。
当然,PLPinitial也可以为预先设置的值,或者采用固定值。并且,对于每个物理机的PLPinitial可以不同。第一次向各物理机分配的数据用于探测各物理机的处理能力,以用于下一次对数据进行动态分配。
从调度器520的第二次数据分配开始,调度器520可以根据物理机前一次数据处理的数据吞吐量来进行数据的动态分配。调度器520第i(i为大于等于2的整数)次需要向物理机510分配的数据量PLPi可以等于Si×ti/T。其中,Si表示调度器520第i次准备分配的数据总量,Si可以是S的某一比例(例如,10%、20%、step等),ti表示物理机510在处理完调度器520第(i-1)次分配给它的数据时具有的数据吞吐量,T表示调度器目前所知的、处理MapReduce作业的所有物理机在处理完调度器520前一次分配给它们各自的数据时所具有的数据吞吐量之和。同理,可以通过将Si×ti/T中的ti替换为其它物理机在处理完调度器520第(i-1)次分配给它的数据时具有的数据吞吐量,得到调度器520第i次应该向该其它物理机分配的数据量。
通过根据物理机每次处理数据的数据吞吐量来动态调整下次需要向物理机分配的数据的数据量大小,可以根据物理机的不同的数据处理能力来灵活地进行数据分配,充分利用不同物理机处理数据的性能,避免静态数据分配方式导致的低效问题,使得处理同一作业的不同物理机基本上能够同时完成数据的处理,并能够缩短该作业的处理时间。
接下来,参照图8描述在系统500中由调度器520一侧执行的动态数据分配方法800的流程图。
调度器520负责向执行MapReduce作业的各物理机分配待处理数据。调度器520的数据分配过程包括初始的静态分配过程和后续次的基于数据吞吐量的动态分配过程。在调度器520进行初始数据分配时,调度器520对第一次待分配的数据进行静态划分(Partition),再分别分配给各物理机。在调度器520进行后续次的数据分配时,调度器520根据各物理机前一次处理数据得到的数据吞吐量对该次待分配的数据进行动态划分,以调整分配给各物理机的数据量,使得处理速度快的物理机能够处理更多的数据,处理速度慢的物理机能够处理更少的数据,从而在整体上缩短对MapReduce作业的处理时间,提高处理速度。
S810至S830对应于调度器520进行的初始数据分配阶段。
在S810中,调度器520获得所需数据并计算PLPinitial。调度器获得的所需数据包括执行MapReduce作业的物理机个数。通过上述的S×step/#PM来计算分配给每个物理机的PLPinitial。当然,S810不是必需执行的步骤,例如可以将PLPinitial设置为固定值而无需任何计算。
在S820中,调度器520基于PLPinitial对于第一次待分配的数据量S×step进行划分。也就是说,在S820中,调度器520将第一次待分配的数据平均分成#PM份,每一份包含的数据量为PLPinitial。
在S830中,调度器520将每一份数据量为PLPinitial的数据传输给各物理机,供物理机处理。从调度器520的角度来看,它无需如现有技术那样关注虚拟机,只需考虑向空闲的物理机分配一定量的数据即可。
S840至S860对应于调度器520的动态数据分配阶段。
在S840中,调度器520确定是否从物理机接收到数据处理完成的通知,并且是否具有还未分配的待处理数据。在该通知中包含有指示与物理机当前刚完成的数据处理有关的数据吞吐量的信息。如果调度器520接收到来自物理机的通知并具有还未分配的待处理数据,那么方法800前进到S850。如果调度器520没有接收到来自物理机的通知并具有还未分配的待处理数据,那么方法800继续在S840中等待。如果调度器520确定没有待处理数据了,那么方法800结束。
在S850中,调度器520确定第i次需要向各物理机分配的数据总量Si,利用上述Si×ti/T计算PLPi,并基于PLPi对数据量为Si的作业数据进行划分。
在S860中,调度器520将划分出的数据量为PLPi的数据传输给具有吞吐量ti的对应的物理机。
在图9中示出了在系统500中由Mapper/Reducer虚拟机DOM1至DOM U一侧执行的数据处理方法900的流程图。
在S910中,控制器模块550检测队列530中是否还有数据。如果在队列530中还有数据,则方法900前进到S920。如果队列530中没有数据,则控制器模块550继续对队列530进行检测。
在S920中,响应于有虚拟机空闲,控制器模块550从队列530中取出具有VLP大小的数据,并将这些数据分配给该虚拟机。
在S930中,该虚拟机通过Mapper/Reducer进行数据处理。
S910至S930的过程可以在不同的线程中同时执行,使得不同的虚拟机可以同时对队列530中的数据进行处理。
在S940中,Xen虚拟机管理器确定是否完成对物理机510当前接收的所有数据的处理,即是否完成当前的数据处理周期。如果没有完成对所有数据的处理,则方法900返回S910。
如果已完成当前的数据处理周期,则在S950中,通过控制器模块550或解析模块540向调度器520报告当前的数据处理周期对应的数据吞吐量,以使得调度器520下一次根据该数据吞吐量向物理机510分配合适大小的数据量,从而使得调度器通过动态数据分配来缩短对作业的整体处理时间,提高处理速度。
根据本发明实施例的数据分配方法,通过采用单队列多窗口模型可以实现比现有的多队列多窗口模型更好的性能,缩短同一物理机处理数据的时间,避免空闲的虚拟机由于处于等待状态而浪费资源。通过根据各物理机的数据吞吐量或带宽来动态分配待处理数据,能够充分利用各物理机的数据处理能力,整体上提高对作业的处理速度,增大处理效率。此外,由于采用基准存储页面为单位进行数据存取,对现有的虚拟化技术改动较小,实现简便。并且,当将本发明实施例的方法应用于MapReduce架构时,对MapReduce架构处理数据的时序和方式影响较小,实现简便。
上面描述了根据本发明实施例的数据分配方法,接下来参考图10和图11描述根据本发明实施例的数据分配装置的结构框图。图10和图11中的数据分配装置可以是合并到单个物理机中的软件模块、硬件模块或它们的组合,用于实现根据本发明实施例的数据分配方法。
如图10所示,用于物理机的数据分配装置1000包括接收部件1010、存储部件1020和分配部件1030,其中在物理机上运行由多个虚拟机。接收部件1010可被配置为从用于分配作业数据的调度器接收待处理数据。存储部件1020可被配置为将接收的待处理数据存储在单个队列中。分配部件1030可被配置为响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
接收部件1010、存储部件1020和分配部件1030的上述和其他操作和/或功能可以参考上述图4的描述,为了避免重复,在此不赘述。
根据本发明实施例的数据处理装置可以避免同一物理机上部分虚拟机处于等待状态而部分虚拟机处于计算过程的现象,使得能够充分利用物理机的资源,缩短物理机处理数据的时间,提高处理效率。由于物理机的处理时间的缩短,有利于物理机更快地请求新的待处理数据,从而进一步有利于整个作业的完成,缩短作业的处理时间。
如图11所示,数据处理装置1100的接收部件1110、存储部件1120和分配部件1130分别与数据处理装置1000的接收部件1010、存储部件1020和分配部件1030基本相同。
根据本发明的一个实施例,装置1100还可以包括报告部件1140。报告部件1140可被配置为响应于对所述待处理数据的处理完成,根据所述多个虚拟机处理的数据量大小和处理时间,向所述调度器报告用于指示所述物理机的数据吞吐量的信息,以使所述调度器下次向该物理机发送具有基于该信息的数据量大小的待处理数据。
根据本发明的一个实施例,下次向该物理机发送的待处理数据的数据量可以对应于所述调度器下次需要分配的作业数据的如下比例,该比例等于所述物理机的数据吞吐量与用于执行所述作业的所有物理机的数据吞吐量之和的比例。
根据本发明的一个实施例,在第一次从所述调度器接收待处理数据的情况下,接收的待处理数据的数据量大小可以由所述调度器根据用于执行所述作业的物理机个数、所述作业的数据量大小和预定比例决定。
根据本发明的一个实施例,接收部件1110具体可被配置为将接收的待处理数据以预定的基准存储页面为单位存储在单个队列中,分配部件1130具体可被配置为向该空闲的虚拟机分配该队列中的整数个基准存储页面。
根据本发明的一个实施例,从所述调度器接收的待处理数据的数据量大小是基准存储页面的整数倍。
根据本发明的一个实施例,存储部件1120可以包括解析子部件1122和存储子部件1124。解析子部件1122可被配置为对接收的待处理数据进行解析。存储子部件1124可被配置为将解析后确定的属于预定应用的待处理数据存储在单个队列中。
根据本发明的一个实施例,所述预定应用可以为基于MapReduce的应用。
上述各部件和子部件的上述和其他操作和/或功能可以参考上述图4至图6以及图8至图9中的相应描述,为了避免重复,在此不再赘述。
根据本发明实施例的数据分配装置通过采用单队列多窗口模型可以实现比现有的多队列多窗口模型更好的性能,缩短同一物理机处理数据的时间,避免空闲的虚拟机由于处于等待状态而浪费资源。通过根据各物理机的数据吞吐量或带宽来动态分配待处理数据,能够充分利用各物理机的数据处理能力,整体上提高对作业的处理速度,增大处理效率。此外,由于采用基准存储页面为单位进行数据存取,对现有的虚拟化技术改动较小,实现简便。并且,当将本发明实施例的方法应用于MapReduce架构时,对MapReduce架构处理数据的时序和方式影响较小,实现简便。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (16)
1.一种用于物理机的数据分配方法,在所述物理机上运行有多个虚拟机,所述方法包括:
从用于分配作业数据的调度器接收待处理数据;
将接收的待处理数据存储在单个队列中;以及
响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
2.根据权利要求1所述的方法,还包括:
响应于对所述待处理数据的处理完成,根据所述多个虚拟机处理的数据量大小和处理时间,向所述调度器报告用于指示所述物理机的数据吞吐量的信息,以使所述调度器下次向该物理机发送具有基于该信息的数据量大小的待处理数据。
3.根据权利要求2所述的方法,其中,下次向该物理机发送的待处理数据的数据量对应于所述调度器下次需要分配的作业数据的如下比例,该比例等于所述物理机的数据吞吐量与用于执行所述作业的所有物理机的数据吞吐量之和的比例。
4.根据权利要求2所述的方法,其中,在第一次从所述调度器接收待处理数据的情况下,接收的待处理数据的数据量大小由所述调度器根据用于执行所述作业的物理机个数、所述作业的数据量大小和预定比例决定。
5.根据权利要求1所述的方法,其中,
所述将接收的待处理数据存储在单个队列中包括:将接收的待处理数据以预定的基准存储页面为单位存储在单个队列中,
所述向该空闲的虚拟机分配该队列中的数据包括:向该空闲的虚拟机分配该队列中的整数个基准存储页面。
6.根据权利要求5所述的方法,其中,从所述调度器接收的待处理数据的数据量大小是基准存储页面的整数倍。
7.根据权利要求1所述的方法,其中,所述将接收的待处理数据存储在单个队列中包括:
对接收的待处理数据进行解析;
将解析后确定的属于预定应用的待处理数据存储在单个队列中。
8.根据权利要求7所述的方法,其中,所述预定应用为基于MapReduce的应用。
9.一种用于物理机的数据分配装置,在所述物理机上运行有多个虚拟机,所述装置包括:
接收部件,被配置为从用于分配作业数据的调度器接收待处理数据;
存储部件,被配置为将接收的待处理数据存储在单个队列中;以及
分配部件,被配置为响应于所述多个虚拟机中存在空闲的虚拟机,向该空闲的虚拟机分配该队列中的数据,以供该空闲的虚拟机进行处理。
10.根据权利要求9所述的装置,还包括:
报告部件,被配置为响应于对所述待处理数据的处理完成,根据所述多个虚拟机处理的数据量大小和处理时间,向所述调度器报告用于指示所述物理机的数据吞吐量的信息,以使所述调度器下次向该物理机发送具有基于该信息的数据量大小的待处理数据。
11.根据权利要求10所述的装置,其中,下次向该物理机发送的待处理数据的数据量对应于所述调度器下次需要分配的作业数据的如下比例,该比例等于所述物理机的数据吞吐量与用于执行所述作业的所有物理机的数据吞吐量之和的比例。
12.根据权利要求10所述的装置,其中,在第一次从所述调度器接收待处理数据的情况下,接收的待处理数据的数据量大小由所述调度器根据用于执行所述作业的物理机个数、所述作业的数据量大小和预定比例决定。
13.根据权利要求9所述的装置,其中,
所述接收部件被配置为将接收的待处理数据以预定的基准存储页面为单位存储在单个队列中,
所述分配部件被配置为向该空闲的虚拟机分配该队列中的整数个基准存储页面。
14.根据权利要求13所述的装置,其中,从所述调度器接收的待处理数据的数据量大小是基准存储页面的整数倍。
15.根据权利要求9所述的装置,其中,所述存储部件包括:
解析子部件,被配置为对接收的待处理数据进行解析;
存储子部件,被配置为将解析后确定的属于预定应用的待处理数据存储在单个队列中。
16.根据权利要求15所述的装置,其中,所述预定应用为基于MapReduce的应用。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454953.0A CN104516773B (zh) | 2013-09-29 | 2013-09-29 | 用于物理机的数据分配方法和数据分配装置 |
US14/491,072 US9348632B2 (en) | 2013-09-29 | 2014-09-19 | Data assignment and data scheduling for physical machines in a virtual machine environment |
US15/162,295 US9875124B2 (en) | 2013-09-29 | 2016-05-23 | Data assignment and data scheduling for physical machine in a virtual machine environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310454953.0A CN104516773B (zh) | 2013-09-29 | 2013-09-29 | 用于物理机的数据分配方法和数据分配装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104516773A true CN104516773A (zh) | 2015-04-15 |
CN104516773B CN104516773B (zh) | 2018-04-20 |
Family
ID=52741493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310454953.0A Active CN104516773B (zh) | 2013-09-29 | 2013-09-29 | 用于物理机的数据分配方法和数据分配装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9348632B2 (zh) |
CN (1) | CN104516773B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229476A (zh) * | 2017-06-06 | 2017-10-03 | 田进 | 一种基于数据量的应用程序打包方法及装置 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104516773B (zh) | 2013-09-29 | 2018-04-20 | 国际商业机器公司 | 用于物理机的数据分配方法和数据分配装置 |
CN105446896B (zh) * | 2014-08-29 | 2018-05-04 | 国际商业机器公司 | 映射化简应用的缓存管理方法和装置 |
US10228958B1 (en) * | 2014-12-05 | 2019-03-12 | Quest Software Inc. | Systems and methods for archiving time-series data during high-demand intervals |
US9619261B2 (en) * | 2015-06-29 | 2017-04-11 | Vmware, Inc. | Method and system for anticipating demand for a computational resource by containers running above guest operating systems within a distributed, virtualized computer system |
US9804895B2 (en) * | 2015-08-28 | 2017-10-31 | Vmware, Inc. | Constrained placement in hierarchical randomized schedulers |
JP2017111581A (ja) * | 2015-12-15 | 2017-06-22 | キヤノン株式会社 | 情報処理システム、制御方法 |
CN107038059A (zh) * | 2016-02-03 | 2017-08-11 | 阿里巴巴集团控股有限公司 | 虚拟机部署方法及装置 |
US20170352182A1 (en) * | 2016-06-06 | 2017-12-07 | Qualcomm Incorporated | Dynamic low-resolution z test sizes |
CN106648866B (zh) * | 2016-12-16 | 2020-12-11 | 天津大学 | 一种基于kvm平台满足任务时限要求的资源调度方法 |
GB201702450D0 (en) * | 2017-02-15 | 2017-03-29 | Blue Prism Ltd | System for optimising distribution of processing an automated process |
WO2019118628A1 (en) * | 2017-12-12 | 2019-06-20 | Arch Systems Inc. | System and method for physical machine monitoring and analysis |
WO2020185752A1 (en) | 2019-03-12 | 2020-09-17 | Arch Systems Inc. | System and method for network communication monitoring |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412702B1 (en) * | 2001-06-08 | 2008-08-12 | Vmware, Inc. | System software displacement in a virtual computer system |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
CN102759979A (zh) * | 2011-04-29 | 2012-10-31 | 国际商业机器公司 | 一种虚拟机能耗估计方法及装置 |
US8589932B2 (en) * | 2010-07-02 | 2013-11-19 | International Business Machines Corporation | Data processing workload control |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4969092A (en) * | 1988-09-30 | 1990-11-06 | Ibm Corp. | Method for scheduling execution of distributed application programs at preset times in an SNA LU 6.2 network environment |
US6567837B1 (en) * | 1997-01-29 | 2003-05-20 | Iq Systems | Object oriented processor arrays |
US6766515B1 (en) * | 1997-02-18 | 2004-07-20 | Silicon Graphics, Inc. | Distributed scheduling of parallel jobs with no kernel-to-kernel communication |
US6076174A (en) * | 1998-02-19 | 2000-06-13 | United States Of America | Scheduling framework for a heterogeneous computer network |
SE9901145D0 (sv) * | 1998-11-16 | 1999-03-29 | Ericsson Telefon Ab L M | A processing system and method |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US7065764B1 (en) * | 2001-07-20 | 2006-06-20 | Netrendered, Inc. | Dynamically allocated cluster system |
US7251815B2 (en) * | 2003-04-29 | 2007-07-31 | International Business Machines Corporation | Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US7257811B2 (en) * | 2004-05-11 | 2007-08-14 | International Business Machines Corporation | System, method and program to migrate a virtual machine |
US8341624B1 (en) * | 2006-09-28 | 2012-12-25 | Teradici Corporation | Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine |
US7650603B2 (en) * | 2005-07-08 | 2010-01-19 | Microsoft Corporation | Resource management for virtualization of graphics adapters |
US7870551B2 (en) * | 2006-05-18 | 2011-01-11 | International Business Machines Corporation | Optimization of thread wake up for shared processor partitions |
US8214838B2 (en) * | 2006-07-26 | 2012-07-03 | Hewlett-Packard Development Company, L.P. | System and method for attributing to a corresponding virtual machine CPU utilization of a network driver domain based on weighted communication |
US8949826B2 (en) * | 2006-10-17 | 2015-02-03 | Managelq, Inc. | Control and management of virtual systems |
US8539499B1 (en) * | 2008-02-18 | 2013-09-17 | Parallels IP Holdings GmbH | Symmetric multiprocessing with virtual CPU and VSMP technology |
US8230428B2 (en) * | 2008-02-20 | 2012-07-24 | International Business Machines Corporation | Data management job planning and scheduling with finish time guarantee |
US8176694B2 (en) * | 2008-02-29 | 2012-05-15 | Batori Imre | Heated floor support structure |
US8458712B2 (en) * | 2008-04-30 | 2013-06-04 | International Business Machines Corporation | System and method for multi-level preemption scheduling in high performance processing |
US8473594B2 (en) * | 2008-05-02 | 2013-06-25 | Skytap | Multitenant hosted virtual machine infrastructure |
US8990801B2 (en) * | 2009-01-30 | 2015-03-24 | Hewlett-Packard Development Company, L.P. | Server switch integration in a virtualized system |
US8429652B2 (en) * | 2009-06-22 | 2013-04-23 | Citrix Systems, Inc. | Systems and methods for spillover in a multi-core system |
US8910153B2 (en) * | 2009-07-13 | 2014-12-09 | Hewlett-Packard Development Company, L. P. | Managing virtualized accelerators using admission control, load balancing and scheduling |
US8261268B1 (en) | 2009-08-05 | 2012-09-04 | Netapp, Inc. | System and method for dynamic allocation of virtual machines in a virtual server environment |
US8245234B2 (en) | 2009-08-10 | 2012-08-14 | Avaya Inc. | Credit scheduler for ordering the execution of tasks |
US8489907B2 (en) * | 2009-09-16 | 2013-07-16 | Apple Inc. | Method of selective power cycling of components in a memory device independently by reducing power to a memory array or memory controller |
US8776067B1 (en) * | 2009-12-11 | 2014-07-08 | Salesforce.Com, Inc. | Techniques for utilizing computational resources in a multi-tenant on-demand database system |
US8826271B2 (en) * | 2010-04-28 | 2014-09-02 | Cavium, Inc. | Method and apparatus for a virtual system on chip |
US8381213B1 (en) * | 2010-06-30 | 2013-02-19 | Emc Corporation | Method for dynamic management of system resources through application hints |
US8869164B2 (en) * | 2010-09-02 | 2014-10-21 | International Business Machines Corporation | Scheduling a parallel job in a system of virtual containers |
CN101986661B (zh) | 2010-11-04 | 2014-06-04 | 华中科技大学 | 一种改进的虚拟机群下MapReduce数据处理方法 |
US8533724B1 (en) * | 2010-12-20 | 2013-09-10 | Amazon Technologies, Inc. | Virtual resource provisioning by assigning colors to virtual resources in multi-tenant resource pool |
US8635615B2 (en) * | 2011-05-14 | 2014-01-21 | Industrial Technology Research Institute | Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof |
US8843933B1 (en) * | 2011-05-25 | 2014-09-23 | Vmware, Inc. | System and method for managing a virtualized computing environment |
US8898676B2 (en) * | 2011-08-26 | 2014-11-25 | Vmware, Inc. | Management of software updates for software components in a virtualized environment of a datacenter using dependency relationships |
CN103218266B (zh) * | 2012-01-18 | 2016-03-23 | 国际商业机器公司 | 虚拟机与外部机器通信时使用的方法、设备及虚拟机系统 |
US9727355B2 (en) * | 2013-08-23 | 2017-08-08 | Vmware, Inc. | Virtual Hadoop manager |
CN104516773B (zh) | 2013-09-29 | 2018-04-20 | 国际商业机器公司 | 用于物理机的数据分配方法和数据分配装置 |
US9329884B2 (en) * | 2014-07-11 | 2016-05-03 | Intel Corporation | Managing generated trace data for a virtual machine |
-
2013
- 2013-09-29 CN CN201310454953.0A patent/CN104516773B/zh active Active
-
2014
- 2014-09-19 US US14/491,072 patent/US9348632B2/en active Active
-
2016
- 2016-05-23 US US15/162,295 patent/US9875124B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412702B1 (en) * | 2001-06-08 | 2008-08-12 | Vmware, Inc. | System software displacement in a virtual computer system |
CN101667144A (zh) * | 2009-09-29 | 2010-03-10 | 北京航空航天大学 | 一种基于共享内存的虚拟机通信方法 |
US8589932B2 (en) * | 2010-07-02 | 2013-11-19 | International Business Machines Corporation | Data processing workload control |
CN102759979A (zh) * | 2011-04-29 | 2012-10-31 | 国际商业机器公司 | 一种虚拟机能耗估计方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229476A (zh) * | 2017-06-06 | 2017-10-03 | 田进 | 一种基于数据量的应用程序打包方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160266918A1 (en) | 2016-09-15 |
CN104516773B (zh) | 2018-04-20 |
US9348632B2 (en) | 2016-05-24 |
US9875124B2 (en) | 2018-01-23 |
US20150095910A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104516773A (zh) | 用于物理机的数据分配方法和数据分配装置 | |
US11204793B2 (en) | Determining an optimal computing environment for running an image | |
US10776730B2 (en) | Policy-based scaling of computing resources in a networked computing environment | |
US9158590B2 (en) | Dynamically acquiring computing resources in a networked computing environment | |
CN104424013B (zh) | 在计算环境中部署虚拟机的方法和设备 | |
CN103365725B (zh) | 在多个云之间动态分配工作负荷部署单元的方法和系统 | |
US8554917B2 (en) | Performance isolation for storage clouds | |
US8924561B2 (en) | Dynamically resizing a networked computing environment to process a workload | |
US20130204963A1 (en) | Migrating data between networked computing environments | |
US8966175B2 (en) | Automated storage provisioning within a clustered computing environment | |
US20120284380A1 (en) | Identifying optimal virtual machine images in a networked computing environment | |
US9432300B2 (en) | Allocation of storage resources in a networked computing environment based on energy utilization | |
CN104765620A (zh) | 一种程序模块部署的方法和系统 | |
CN103927216B (zh) | 用于管理虚拟装置的方法和系统 | |
CN104424012A (zh) | 用于提供自定义虚拟装置的方法和设备 | |
CN105224301B (zh) | 一种应用实例组装的方法和系统 | |
Gundu et al. | Analytic Review of Mathematical model for non-linear programming problem formulation: A novel Queuing Theory approach using stochastic cloudlet request evaluation in cloud computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |