CN102402462B - Techniques for load balancing GPU enabled virtual machines - Google Patents

Techniques for load balancing GPU enabled virtual machines Download PDF

Info

Publication number
CN102402462B
CN102402462B CN201110308337.5A CN201110308337A CN102402462B CN 102402462 B CN102402462 B CN 102402462B CN 201110308337 A CN201110308337 A CN 201110308337A CN 102402462 B CN102402462 B CN 102402462B
Authority
CN
China
Prior art keywords
processing unit
virtual machine
graphics processing
amount
gpu
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
CN201110308337.5A
Other languages
Chinese (zh)
Other versions
CN102402462A (en
Inventor
B·S·波斯特
V·庞南潘
P·辛格
W·M·P·约翰斯顿
E·K-h·韩
P·查克拉博蒂
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102402462A publication Critical patent/CN102402462A/en
Application granted granted Critical
Publication of CN102402462B publication Critical patent/CN102402462B/en
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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

The present invention discloses techniques for load balancing GPU enabled virtual machines. Exemplary techniques for balancing 3D graphical processor unit use among virtual machines are herein disclosed. In an exemplary embodiment, a virtualization platform can load an instance of a graphics rendering module for a virtual machine; select a GPU for the graphics rendering module to run on; and configure the virtual machine to render to the selected GPU. In addition to the foregoing, other aspects are described in the detailed description, claims, and figures.

Description

For carrying out the technology of load balance to the virtual machine enabling GPU
The cross reference of CROSS REFERENCE
The application on theme be entitled as the U.S. Patent application xth x/xxx of " Dynamic Virtual Device Failure Recovery (dynamic virtual machine equipment failure recovers) ", No. xxx (attorney docket is MVIR-0670/330194.01) is relevant, and the content of this application by reference entirety is incorporated into this.
Technical field
The present invention relates to Computer display technology, particularly relate to the technology for carrying out load balance to the virtual machine enabling GPU.
Background technology
Virtual machine platform performs while running this operating system allow multiple objective operating system in physical machine in the virtual machine of each operating system oneself.Can be virtual desktop session by the exemplary services provided in virtual machine.Virtual desktop session is the personal computer environment its user interface being sent to remote computer run in virtual machine in itself.This architecture is similar to remote desktop environment, but changes into multiple user is connected to server class operating system simultaneously, and in virtual desktop session, each user can access themselves the commercial operation system performed in virtual machine.
Modern operating system implements three-dimensional (3D) graphic user interface for 3D application/video-game and operating system user interface thereof.User enjoys the experience with 3D environmental interaction, and expects to send 3D graphical stream to client computer in virtual desktop session; But, be difficult to realize stream due to many reasons and transmit 3D figure.Such as, the action of stream transmission 3D figure needs bandwidth and/or compression.In addition, needs are comprised 3D Graphics Processing Unit (GPU) by virtual desktop server, and it can perform 3D function.3D graphics process is resource-intensive, and GPU only can play up several 3D graphic user interface usually at every turn.If these GPU have to play up multi-graph user interface, then they can become overload rapidly.Regrettably, in virtual desktop is disposed, GPU may have to play up a large amount of 3D graphic user interface simultaneously.This can cause one or more operation overtime, and graphics driver and then will reset Graphics Processing Unit---it can cause 3D application program to stop.Therefore, need for preventing GPU from becoming overload and the technology of collapse.
Summary of the invention
Illustrative embodiments comprises a kind of system.In this example, this system includes but not limited to processor and when computer system can operate and the storer of this processor communication.In this example, storer can comprise computer-readable instruction, and this computer-readable instruction makes processor when performing: assign one group of virtual machine to play up 3D figure in a 3D Graphics Processing Unit; At least be used for that response institute's time spent amount is carried out to order based on a 3D Graphics Processing Unit and determine that a 3D Graphics Processing Unit (504) is overused; At least in response to the judgement be overused a 3D Graphics Processing Unit, the first virtual machine is moved to second graph processing unit from this group virtual machine.In addition to the above, other technologies are described in claims, embodiment and accompanying drawing.
Another illustrative embodiments comprises computer-readable recording medium.In this example, computer-readable stores instruction and comprises computer-readable instruction, and this computer-readable instruction makes processor when performing: the amount estimating the graphic memory for playing up 3D figure for the first virtual machine; The latency value be associated in response to the direct memory access (DMA) affairs determined with sent by the one group of virtual machine being assigned render graphics in the first Graphics Processing Unit is less than first threshold and the estimated amount for the graphic memory playing up 3D figure is less than Second Threshold, selects a 3D Graphics Processing Unit from multiple 3D Graphics Processing Unit; And assign described first virtual machine to play up 3D figure in a 3D Graphics Processing Unit.In addition to the above, other technologies are described in claims, embodiment and accompanying drawing.
Another illustrative embodiments comprises a kind of method.In this example, method includes but not limited to: the amount estimating the graphic memory be used for for virtual machine render graphics; The amount of the amount of estimated graphic memory and the estimated available graphic memory controlled by multiple 3D Graphics Processing Unit is compared; Be chosen as from multiple 3D Graphics Processing Unit the 3D Graphics Processing Unit that virtual machine plays up 3D figure according to comparing; And assign selected 3D Graphics Processing Unit to play up 3D figure for virtual machine.In addition to the above, other technologies are described in claims, embodiment and accompanying drawing.
It will be understood by those skilled in the art that one or more various aspect of the present disclosure can include but not limited to circuit for realizing aspect cited herein and/or programming; This circuit and/or programming can be in fact any combinations being configured to realize the hardware of the aspect quoted herein, software and/or firmware, and this depends on the design alternative of system designer.
Be more than general introduction, and therefore must comprise the simplification of details, vague generalization and omission.It will be apparent to one skilled in the art that this general introduction is just illustrative and be never intended to be restrictive.
Accompanying drawing explanation
Fig. 1 depicts the high level block diagram of computer system.
Fig. 2 depicts the high level block diagram of virtual machine server.
Fig. 3 depicts the high level block diagram of virtual machine server.
Fig. 4 depicts the high level block diagram of virtual desktop server.
Fig. 5 depicts the high level block diagram of virtual desktop server.
Fig. 6 depicts the high level block diagram of virtual desktop server.
Fig. 7 depicts the high level block diagram of data center.
Fig. 8 depicts the operating process that the GPU for balancing between virtual machine uses.
Fig. 9 shows the operating process of the Fig. 8 comprising additional operations.
Figure 10 depicts the operating process that the GPU for balancing between virtual machine uses.
Figure 11 shows the operating process of the Figure 10 comprising additional operations.
Figure 12 depicts the operating process that the GPU for balancing between virtual machine uses.
Figure 13 shows the operating process of the Figure 12 comprising additional operations.
Embodiment
The present invention can use one or more computer system.Fig. 1 and following discussion aim to provide the brief, general description that can realize the suitable computing environment of disclosed theme wherein.
The term circuit running through the use of this instructions can comprise the nextport hardware component NextPorts such as such as hardware interrupt controller, hard disk driver, network adapter, graphic process unit, hardware based video/audio codec, and for operating the firmware of these hardware.Term " circuit " can also comprise the microprocessor carrying out instruction fetch and execution, special IC and the processor that are configured by firmware and/or software, such as the core of multinuclear General Porcess Unit.Processor can be configured by the instruction loaded from the storer such as such as RAM, ROM, firmware and/or massive store, thus specializes and can be used for the logic that configuration processor carrys out n-back test.Circuit comprises in the example embodiment of the combination of hardware and software wherein, and implementor can write the source code of specific logic, and this source code is compiled into the machine readable code that can be performed by hardware subsequently.Because those skilled in the art can understand almost do not have differentiated stage between the function that prior art has evolved to hard-wired function or software simulating, thus selecting hardware or software to realize function described herein is a design alternative.In other words, owing to it will be appreciated by those skilled in the art that software process can be transformed into the hardware configuration of equivalence, and hardware configuration itself can be transformed into the software process of equivalence, therefore selects hardware implementing or software simulating to leave implementor for.
With reference now to Fig. 1, depict exemplary computer system 100.Computer system 100 can comprise processor 102, such as, performs core.Although show a processor 102, in other embodiments, computer system 100 can have multiple processor, and such as each processor substrate has multiple execution core, and/or can have multiple processor substrates of multiple execution core separately.As shown in the figure, various computer-readable recording medium 110 can by one or more interconnects, and various system component is coupled to processor 102 by described system bus.System bus can be any one in the bus structure of several types, comprises memory bus or Memory Controller, peripheral bus and uses the local bus of any one in various bus architecture.In example embodiment, computer-readable recording medium 110 can comprise such as random access memory (RAM) 104, memory device 106 (such as motor hard disk driver, solid state hard disc driver etc.), firmware 108 (such as flash RAM or ROM) and movable memory equipment 118 (such as CD-ROM, floppy disk, DVD, flash driver program, External memory equipment etc.).It will be understood by those of skill in the art that the computer-readable recording medium that can use other types, as tape cassete, flash card and/or digital video disc.
Computer-readable recording medium 110 can provide the non-volatile and volatile storage of other data for computing machine 100 to processor executable 122, data structure, program module and such as executable instruction and so on.Basic input/output (BIOS) 120 can be stored in firmware 108, and it comprises the basic routine helping transmission of information between each element such as between the starting period in computer system 100.The multiple programs comprising operating system and/or application program can be stored on firmware 108, memory device 106, RAM 104 and/or movable memory equipment 118, and can be performed by processor 102.
Order and information can be received by input equipment 116 by computing machine 100, and input equipment can include but not limited to keyboard and pointing device.Other input equipments can comprise microphone, operating rod, game paddle, scanner etc.These and other input equipments are connected to processor 102 usually through the serial port interface being coupled to system bus, but also connect by other interfaces, as parallel port, game port or USB (universal serial bus) (USB).The part that the display device of display or other types can be able to be also graphics processor unit 112 via such as video adapter etc. maybe can be connected to the interface of graphics processor unit 112 to be connected to system bus.Except display, computing machine generally includes other peripheral output devices, as loudspeaker and printer (not shown).The example system of Fig. 1 also can comprise primary adapter, small computer system interface (SCSI) bus and be connected to the External memory equipment of SCSI bus.
Computer system 100 can use to one or more remote computer, and the logic as remote computer is connected in networked environment and operates.Remote computer can be another computing machine, server, router, network PC, peer device or other common network nodes, and about the many or whole element described in computer system 100 above generally including.
When using in LAN or WAN networked environment, computer system 100 is connected to LAN or WAN by network interface unit 114.NIC 114 can be internal or external, and it can be connected to system bus.In networked environment, can be stored in remote memory storage device relative to the program module described by computer system 100 or its part.It is exemplary for being appreciated that described network connects, and can use other means setting up communication link between the computers.Although be particularly useful for computerized system it is conceivable that many embodiments of the present invention, but do not mean that in the present note and limit the invention to those embodiments.
Turn to Fig. 2, show the example virtual platform that can be used to generating virtual machines.In this embodiment, hypervisor microkernel 202 can be configured to control and arbitrate the access of the hardware to computer system 200.Hypervisor microkernel 202 can generate the execution environment being called subregion, as child partition 1 to child partition N (wherein N be greater than 1 integer).At this, child partition is the basic isolated location that hypervisor microkernel 202 is supported.Hypervisor microkernel 202 can isolate the process in a subregion, makes it can not access the resource of another subregion.Each child partition can be mapped to one group of hardware resource under hypervisor microkernel 202 controls, such as, and storer, equipment, processor cycle etc.In each embodiment, hypervisor microkernel 202 can be independently software product, operating system a part, be embedded in the firmware of mainboard, special IC or its combination.
Hypervisor microkernel 202 can implement a point Division by the view of memory of the objective operating system in restriction physical computer system.When hypervisor microkernel 202 instantiation one virtual machine, the page of system physical memory (SPM) (such as, having the regular length memory block of start and end address) can be distributed to virtual machine as objective physical storage (GPM) by it.At this, the limited system storage view of visitor is controlled by hypervisor microkernel 202.Term " objective physical storage " is the shorthand way describing storage page from the viewpoint of virtual machine, and term system physical memory is the shorthand way describing storage page from the viewpoint of physical system.Therefore, the storage page being assigned to virtual machine has objective physical address (address that virtual machine uses) and system physical address (actual address of page).
Visitor's operating system can virtual objective physical storage.Virtual memory is a kind of administrative skill, and it allows operating system excessively to submit storer to, and gives the unique access of application program to continuous working storer.In virtualized environment, objective operating system can use one or more page table that the virtual address translation being known as location, virtual place far way from home is become objective physical address.In this example, storage address can have objective virtual address, objective physical address and system physical address.
In described example, father's division component also can be considered to the territory 0 of the open source system supervisory routine being similar to Xen, and father's division component can comprise main frame 204.Main frame 204 can be operating system (or a group configuration utility routine), and main frame 204 can be configured to by using Virtual Service supplier 228 (VSP) to provide resource to the objective operating system performed in child partition 1-N.VPS 228 (generally increase income in community be called as rear end driver) can be used to carry out multiplexed by virtualization services client computer (VSC) (being commonly referred to as front-end driven program increasing income in community or class virtual equipment) to the interface to hardware resource.As shown in the figure, Virtual Service client computer can perform in the context of objective operating system.But these drivers are different from all the other drivers in passenger plane, because to they providing system supervisor but not passenger plane.In an illustrative embodiments, Virtual Service supplier 228 and Virtual Service client computer 216 the used path that communicates with 218 can be regarded as virtual route.
As shown in the figure, can be configured to run in main frame 204 and be attached to can for the resource of objective operating system 220 and 222 for emulator 234 (such as virtual IDE equipment, virtual video adapter, virtual NIC etc.).Such as, when the memory location residing for the register that the contact of objective operating system is mapped to equipment or the mapped equipment of storer, micro-kernel system supervisor 202 can intercept this request and value transmit passenger plane being attempted write to the emulator be associated.At this, the resource in this example can be considered to the position residing for virtual unit.The use by this way of emulator can be regarded as simulation paths.Simulation paths is poor efficiency compared with virtual path, because compared with pass-along message between VSP and VSC, it needs more cpu resource to carry out emulator.Such as, can by be used for via simulation paths value write dish, a hundreds of action on the storer that is mapped to register is reduced to single message, this message is passed to VSP from VSC in virtual route.
Each child partition can comprise one or more virtual processor (230 and 232), and objective operating system (220 and 222) ALARA Principle scheduling thread to perform on these virtual processors.Generally speaking, the virtual processor executable instruction that is to provide the expression of the concurrent physical processor with certain architectures and the status information that is associated.Such as, virtual machine can have the virtual processor with Intel x86 processor characteristic, and another virtual processor can have the characteristic of PowerPC processor.Virtual processor in this example can be mapped to the processor of computer system, makes the instruction realizing virtual processor to obtain the support of processor.Thus, in the embodiment comprising multiple processor, virtual processor can be performed by processor simultaneously, such as other processor executive system supervisory routine instructions simultaneously.In subregion, the combination of virtual processor and storer can be considered to virtual machine.
Visitor's operating system (220 and 222) can be any operating system, as from micro- apple to increase income the operating system of community etc.Visitor's operating system can comprise user/kernel operations pattern, and can have the kernel that can comprise scheduler, memory manager etc.Generally speaking, kernel mode can comprise the execution pattern in processor, and this execution pattern is authorized at least to the access of franchise processor instruction.Each objective operating system can have the file system be associated, and this file system stores application program and the objective operating systems itself such as such as terminal server, e-commerce server, e-mail server.Visitor's operating system schedulable thread performs on virtual processor, and can realize the example of this type of application program.
With reference now to Fig. 3, show the replacement virtual platform in above-mentioned Fig. 2.Fig. 3 depicts the assembly similar with the assembly of Fig. 2; But, in the illustrated embodiment, system supervisor 302 can comprise micro-kernel assembly and the assembly similar with the assembly (as Virtual Service supplier 228 and device driver 224) in the main frame 204 of Fig. 2, and MOS 304 can comprise such as the configuration utility of configuration-system supervisory routine 302.In the architecture, system supervisor 302 can perform the same or analogous function of hypervisor microkernel 202 with Fig. 2; But in the architecture, the objective operating system that system supervisor 304 can be configured to performing in child partition provides resource.The system supervisor 302 of Fig. 3 can be independently software product, operating system a part, be embedded in the firmware of mainboard, or a part for system supervisor 302 can be realized by special IC.
With reference now to Fig. 4, it illustrates the high level block diagram of virtual desktop server 400.In one embodiment, virtual desktop server 400 can be configured to the virtual desktop session (VDS) being deployed to client computer (such as, the mobile device of such as smart phone), the computer system with the assembly similar with assembly shown in Fig. 1 etc.In brief, virtual desktop technology makes user can be remotely mutual with the objective operating system run in virtual machine.Be different from remote desktop session, in virtual desktop session, only user to sign in in objective operating system and this user can have overhead control to it, and such as, this user can run as keeper and on passenger plane, have authority completely.In the example shown, virtual desktop server 400 can have the assembly similar with the computer system 200 or 300 of Fig. 2 and Fig. 3.The logical abstraction of the virtualization infrastructure assembly that virtual platform 402 is described in figs. 2 and 3 above being.Be described as be in following chapters and sections virtual platform 402 " within " function can realize in the one or more elements described in Fig. 2 and Fig. 3.Such as, by paragraph below in greater detail 3D graphical services manager 404 can realize in the main frame 204 of Fig. 2.In one more specifically example, realize in the host operating system that 3D graphical services manager 404 can run in father's subregion.
Start virtual desktop Dialog request and instantiation is carried out to the objective operating system in virtual machine.In the exemplary embodiment, virtual desktop manager (module of such as processor executable) can start virtual machine 414 (it can guide objective operating system 428) in response to request.Virtual desktop manager can perform on logic processor, and virtual platform 402 (such as micro-kernel system supervisor 202) can be indicated to be subregion allocate memory.Virtual platform 402 can perform and virtual unit in the storer of configuring virtual machine 414, and boot loader program is loaded in the storer distributing to VM 414.Boot loader program can perform on virtual processor (itself and then can run on a processor), and objective operating system 428 can be carried in virtual machine 414.Session manager 408 can be loaded by objective operating system 428, and it can load the environment subsystem of subsystem 426 and so on when such as running, and described environment subsystem can comprise the kernel mode portion of such as operating system core 410 and so on.In one embodiment, environment subsystem can be configured to the subset of service is showed application program and provides accessing points to kernel 420.When objective operating system 428 is loaded, boot loader program can exit, and hands to objective operating system 428 by the control of virtual machine 414.Visitor's operating system 428 can perform the modules shown in Fig. 4, and himself is configured to the session of host virtual desktop.Such as, objective operating system 428 can comprise cause long-range present engine 406, session manager 408 etc. guide when start registry value.
After objective operating system 428 is run sometime, it can receive connection request from client computer.First this connection request imported into can be processed by the long-range engine 406 that presents, and this remote rendering engine 406 can be configured to monitor connection message, and when it receives a message, it can produce stack example.The long-range engine 406 that presents can the protocol stack example of Run Sessions, and the 3D graphic user interface (being described in more detail in the following paragraphs) played up by virtual platform 402 can be remotely displayed subsystem 418 receives and send to client computer by protocol stack example.Generally speaking, protocol stack example can be configured to user interface to export and is routed to the client computer that is associated and the user received from the client computer be associated input is routed to operating system kernel 410.In brief, operating system kernel 410 can be configured to management screen output: collect the input from keyboard, mouse and miscellaneous equipment.
User's voucher (such as user name/password combination) can be received by the long-range engine 406 that presents and is passed to session manager 408.Voucher can be passed to login process by session manager 408, and voucher can be routed to authentication subsystem 424 to verify by login process.Authentication subsystem 424 can determine that user's voucher is effective and can starts virtual desktop session, and that is user can log on objective operating system 428.
The all right generation system token of authentication subsystem 424, system token can use when attempting execution one process whenever user to determine whether user has the security credence running this process or thread.Such as, when process or thread are attempted obtaining access (such as, open, close, delete and/or the object of modification as file, setting or application program), thread or process can by secure subsystem 422 certifications.Secure subsystem 422 can contrast the Access Control List (ACL) be associated with object and carry out check system token, and determines whether thread has license based on the information in system token with comparing of Access Control List (ACL).If secure subsystem 422 determines that thread is authorized to, then allow this thread accesses object.
Continue the description to Fig. 4, in one embodiment, operating system kernel 410 can comprise graphic display interface 416 (GDI) and input subsystem 412.In an example embodiment, input subsystem 412 can be configured to receive user's input via the protocol stack example of virtual desktop session from client computer, and this input is sent to operating system core 410.In some embodiments, user's input can comprise the signal indicating absolute and/or relative mouse motion command, mouse coordinates, mouse click, keyboard signal, control lever movement signal etc.Such as can be received by operating system core 410 user's input of the double mouse click of icon and so on, and input subsystem 412 can be configured to determine that icon is positioned at the coordinate place be associated with this double-click.When input subsystem 412 can be configured to the operation to the process that can perform the application be associated with this icon subsequently, subsystem 426 sends and notifies.
Forward Fig. 5 to, it illustrates and can be used to configuration virtual desktop server 400 to play up the 3D figure of virtual machine (414,414B and/or 414C), and load balance is carried out to the virtual machine in the Graphics Processing Unit of such as 3D GPU 504,504B and/or 504C and so on.In this illustrative embodiment, virtual desktop server 400 and then the client computer stream to such as client computer 520,520B and/or 520C and so on transmit the image of instruction three-dimensional graphic user interface.In brief, each client computer can be associated with running the virtual machine (414,414B and/or 414C) being configured to the objective operating system of carrying out virtual desktop session.Client computer 520,520B and/or 520C can comprise computer system, sports equipment and/or the thin client with the assembly being similar to those assemblies shown in Fig. 1.Such as, thin client can have commercial hardware and one chip web browser, and this web browser is configured to manage this hardware, user's input and output and be connected to the Internet.In this example, thin client also can comprise the such as user interface 222 of display and so on and the user input device of such as mouse and so on.
Virtual desktop server 400 also can be configured to play up 3D figure when it is activated.Such as, when virtual desktop server 400 is run, the example of the 3D graphical services manager of such as 3D graphical services manager 404 and so on can be activated.3D graphical services manager 404 (it is described in more detail in the following paragraphs) can perform on a processor, and virtual desktop session connection is imported in wait into.In brief, 3D graphical services manager 404 can be configured to by determining each virtual machine to be assigned to where and by carrying out mobile virtual machine based on performance information, to carry out load balance to the virtual machine in Graphics Processing Unit.
Before receiving the request of serving the 3D starting virtual machine, 3D graphical services manager 404 is configured to inquire each Graphics Processing Unit in system, to identify its feature and will represent that the information of its feature is stored in table.Characteristic information can be used to balance the use of Graphics Processing Unit subsequently.In the exemplary embodiment, the feature of Graphics Processing Unit can comprise one group of ability, i.e. hardware capability, and such as support surface and texture are shared or supported the ability of minimal version of 3D graph API (API).In addition, the feature of Graphics Processing Unit can comprise the quantity of the graphics random access memory (figure RAM) that the hwid of Graphics Processing Unit, attribute list and 3D Graphics Processing Unit control, that is, the storer in the adapter holding 3D Graphics Processing Unit is embedded in.Such as, graphics random access memory can be used to the bitmap and Z-buffer (depth coordinate in its management 3D figure), texture, vertex buffer and the compiling coloration program that store screen picture.In the exemplary embodiment, graphic memory can be high speed or multiport memory, the such as random access memory of video-ram, dynamic RAM or double data rate (DDR) (DDR) technology based on such as DDR2 and D graphics DR (GDDR3, GDDR4 and/or GDDR5) and so on.
When receiving virtual desktop session connection; When starting graph rendering module (being described in more detail in the following paragraphs) and send to 3D-GPU ISP 512 signal be loaded into by 3D assembly in objective operating system 428,3D graphical services manager 404 can be notified.In brief, 3D graphical services manager 404 can be the example that each virtual machine loads graph rendering module; Determine graph rendering module will run on which GPU; And the device identifier of determined Graphics Processing Unit is transmitted to graph rendering module.Graph rendering module can be tied to 3D GPU subsequently, and represents its virtual machine be associated and play up to it.In illustrated example, graph rendering module 506 corresponds to virtual machine 414.Fixed-point data, texture etc. for creating the graphic user interface of virtual machine 414 can be fed to graph rendering module 506 from virtual machine 414, and this graph rendering module can be virtualized platform 402 and treat as the process generating graphic user interface.Because most of 3D Graphics Processing Unit is designed to generate several graphic user interface to several process at every turn, therefore those skilled in the art can understand, and in the situation that a large amount of graph rendering module is just running wherein, GPU can become and more easily transships and reset.
Continue initialization procedure, 3D-GPU ISP 512 can cause 3D graphical services client computer 514 to disperse (spawn) in objective operating system 428.Such as, the storage address of the virtual mainboard in virtual machine 414 can have the intercepting set to some address being mapped to I/O device.When objective operating system 428 starts, plug and play module can perform and can query mappings to the storage address of IO.The supervisory routine of the supervisory routine 202 of such as Fig. 2 and so on can intercept and to read and with causing the device identifier of plug and play module loading 3D graphical services client computer 514 to respond.3D graphical services client computer 514 is by being mapped as one or more pages of storer shared and passing to 3D-GPU ISP 512 set up communication channel to 3D-GPU ISP 512 by mapping.In the page of storer, message-transmission communication channel 516 can be set up.In essence, message-transmission communication channel 516 is that in storer, 3D GPU ISP/client computer can write message to it and read the shared region of message from it.
3D graphical services client computer 514 also can cause virtual device driver 518 to disperse.Virtual device driver 518 also can be set up and share graphic aperture 526 between virtual machine 514 and virtual platform 402.In the exemplary embodiment, virtual machine driver 518 can distribute one group of visitor's storage page, and sends the signal comprising the address of connection request and storage page to 3D graphical services client computer 514.Graph rendering module 506 can receive the address of connection request and storage page.Graph rendering module 506 can send to supervisory routine the signal that this supervisory routine of instruction creates graphic aperture 526 in this group storage page.These pages can be mapped to system physical address by supervisory routine, and the graphic aperture 526 in the scope of execute store.In this example, virtual device driver 518 can be configured to dma buffer to write objective memory address range.When data are written into objective memory address range, dma buffer is routed to graph rendering module 506 by graphic aperture 526.
In the exemplary embodiment, virtual device driver 518 can show as the device driver of the Graphics Processing Unit of 3D ability for objective operating system 428, objective operating system 428 is caused it oneself to be configured to support 3D figure thus, such as, by the example of loading application programs interface 524 (API).Virtual device driver 518 is configured to and API 524 interface, and API 524 makes 3D application program 528 can produce 3D figure.3D application program 528---user interface of such as operating system figure user interface, application program/video-game etc.---can send instruction to API 524, and this API 524 can be such as the API of DirectX and so on.In brief, 3D figure API 524 provides the level of abstraction between the graphics application program of such as video-game and so on and driver (virtual device driver 518 in this case).On the one hand, API 524 provides the LLI with the Graphics Processing Unit interface shown by virtual device driver 518, on the other hand its provide can by the 3D graph command storehouse of application call.3D graph command storehouse can be mapped to the interface shown by virtual device driver 518 by API 524, makes game developer need not understand the characteristic of each graphics driver thus.
In operation, API 524 can generate the pel of such as basic geometric configuration and so on, this pel is used as the structure block of other shapes being expressed as summit and constant in computer graphical, and these fixed points are stored in multiple direct memory access (DMA) (DMA) impact damper by API 524.When API 524 writes impact damper, virtual device driver 518 can reformat the data be stored in dma buffer; They are bundled to one or more GPU token; And via graphic aperture 526, GPU token is sent to graph rendering module 506.Similarly, when API 524 gives an order, it can be inserted in dma buffer and in token, to be transmitted to graph rendering module 506.
Graph rendering module 506 can receive token; Extract dma buffer; And they are stored in the page of the storer be associated with virtual platform 402.In the exemplary embodiment, order in dma buffer and pel can be translated into API structure by graph rendering module 506, and this API structure can be processed by 3D graphics driver 510 and give an order together with the address of the dma buffer in virtual platform 402 to graphic kernel 508.
The graphic kernel 508 that can be configured to the execution of dispatching in the Graphics Processing Unit in virtual desktop server 400 can receive the address of instruction and dma buffer, and determines when to give an order to 3D graphics driver 510.When the pel from each dma buffer will be played up, graphic kernel 508 can send rendering order to 3D graphics driver 510, this 3D graphics driver 510 can perform on a processor and can Instruction Graphics processing unit 504 fill order and process dma buffer in data.
Graphics Processing Unit 504 can perform and generate the bitmap of the picture frame represented in storer, such as array of pixel values.Graph rendering module 506 can captured bitmap this bitmap is passed to compression module, and passes to via graphic aperture 526 subsequently and long-rangely present engine 406.Bitmap can be sent to client computer 520 via one or more information block by the long-range engine 406 that presents.
In some instances, the data stream sent by one or more graph rendering module can cause Graphics Processing Unit to be reset.Such as, transship in the situation of---namely GPU must play up too much image---in Graphics Processing Unit, it understands time-out and GPU will be reset.This causes 3D graphics driver 510 to reset, itself so that cause graphic kernel 508 to reset the connection of so far GPU, this causes any graphic package module stopping being tied to GPU.
In the exemplary embodiment, 3D graphical services manager 404 can be configured to balance the load in the Graphics Processing Unit in virtual desktop server 400, to reduce the chance resetting and occur.Such as, and with reference to figure 6, it illustrates another high level block diagram of the virtual desktop server 400 comprising 5 virtual machines (414-414F, wherein virtual machine 414 can be considered to virtual machine 414A in this example).What each virtual machine can have being associated of running in the virtual platform 402 (506-506F) plays up process.As shown in drawings, each graph rendering module (506-506F) can be bound, such as, be attached to Graphics Processing Unit.Such as, virtual machine 414,414D and 414E are bound to 3D GPU 504, and virtual machine 414B is bound to 3D GPU 504B, and virtual machine 414C and 414F is bound to 3D GPU 504C.Operationally period, each virtual machine can be moved by 3D graphical services manager 404, and the dotted line in illustrated example shows virtual machine 414 is moved to 3D GPU 504B from 3D GPU 504.
3D graphical services manager 404 can be configured to use round-robin algorithm and/or dynamic Placement to balance GPU.Such as, round-robin algorithm can be used to find Graphics Processing Unit and assign this Graphics Processing Unit with the information from virtual machine render graphics for determining whether.If information indicating graphic processing unit transships, then round-robin algorithm can be located next GPU and be performed same operation.In addition, or alternatively, 3D graphical services manager 404 can be configured to the Graphics Processing Unit using this information to select the figure playing up self virtualizing machine, and checks each discontinuously.
In the exemplary embodiment, for assigning the information of virtual machine can comprise the estimated amount that can be 3D Graphics Processing Unit graphic memory used to the GPU of such as 3D GPU 504 and so on.Whether the amount of estimated available graphic memory can be used to prediction GPU by time-out, and whether connection will be reset.In this example, 3D graphical services manager 404 can be configured to the amount of the useful graphic memory estimated by use to arrange threshold value.When 3D graphical services manager 404 receives the request of assigning virtual machine, 3D graphical services manager 404 can estimate that virtual machine is by the amount of attempting the graphic memory used or the amount be used at least enough needed for virtual machine rendering image, and by estimated amount and threshold value (such as, estimated by can be the amount of Graphics Processing Unit graphic memory used) make comparisons, and when the amount of the estimated graphic memory used by virtual machine is less than threshold value, assign image rendering process to GPU.
In particular example, assuming that 3D Graphics Processing Unit 504 controls the impact damper of 4 GB, 3D graphical services manager 404 estimates that virtual machine 414E is by the storer of use 1 GB, threshold value is set to the amount of the estimated available memory controlled by GPU, the amount of the estimated graphic memory used by virtual machine 414 is 1 GB, and the amount of the estimated graphic memory used by virtual machine 414D is 512 megabyte.In this example, the estimated amount (1 GB) being used for virtual machine 414E and estimated available quantity (roughly 2.5 GB) can be made comparisons by 3D graphical services manager 404, and determine that GPU can operate virtual machine.Virtual machine can be assigned to GPU by 3D graphical services manager 404; Deduct the estimated amount for virtual machine 414E, to obtain the estimated amount (roughly 1.5 GB) that can be used for GPU, and value is stored in table.
In the exemplary embodiment, threshold value can be set to the amount of the estimated available graphic memory controlled by GPU.In another embodiment, threshold value is by monitoring Graphics Processing Unit in time and determining have when Graphics Processing Unit resets how many estimated available graphic memory to can be used to arrange threshold value.Such as, can calculate according to performance data the probability that Graphics Processing Unit will be reset, and it is associated with estimated available graphic memory.In example embodiment, the amount of the available graphic memory estimated by this can be set to threshold value.In other embodiments, the amount of the available graphic memory estimated by this can be multiplied by scalar value, and can threshold value be used as through the amount of the available graphic memory estimated by convergent-divergent.Such as, 80% of the amount of estimated available graphic memory can be set to threshold value.
In the embodiment of demonstration, the amount of the spendable graphic memory of virtual machine estimated by 3D graphical services manager 404 based on information, this information including, but not limited to: Pixel Dimensions, color depth, quantity for the display of virtual machine, handling capacity, ratio of compression, estimated by the amount on the surface of playing up for virtual machine, store the storer needed for the pel that generates needed for summit amount, store storer needed for the texture being applied to summit, to object application choice anti-aliasing effect needed for storer etc.In response to the instruction receiving virtual machine activation, 3D graphical services manager 404 can be configured to estimate that virtual machine is by the amount of the graphic memory of use.In this example, can be stored in the configuration file be associated with virtual machine for some or all estimating the information of the amount of used graphic memory.In another embodiment, the amount of the graphic memory that estimated virtual machine operationally uses can be monitored, and is used by 3D graphical services manager 404, and is stored in configuration file and uses for during follow-up virtual desktop session.
In addition to the foregoing, in the exemplary embodiment, other information can be used to assign virtual machine to available GPU.Such as, whether the quantity being assigned to the virtual machine of GPU can be used to prediction GPU and transship.The quantity of the virtual machine being assigned to GPU can be monitored in time, and when Graphics Processing Unit resets, the quantity of the virtual machine bound can be recorded.The value reflecting following content can be comprised in table: attached 3 virtual machines of 3D GPU 504, attached 1 virtual machine of 3D GPU 504B and attached two virtual machines of 3D GPU 504C referring to Fig. 6,3D graphical services manager 404.If 3D Graphics Processing Unit resets, then 3D graphical services manager 404 can determine have how many virtual machines to be attached when it collapses according to table.The probability that dissimilar Graphics Processing Unit will be reset can be calculated according to the performance data caught in time, and its amount with estimated attached virtual machine is associated.3D graphical services manager 404 also uses the amount of estimated graphic memory in the illustrative embodiments selecting GPU wherein, and the amount of estimated available graphic memory can have the weight larger than the quantity of attached virtual machine.
In identical or another illustrative embodiments, 3D graphical services manager 404 is used for determining whether that assigning the information of virtual machine can comprise description Graphics Processing Unit to GPU is used for ordering the spent average length of time that responds, the i.e. stand-by period, can be used to determine whether Graphics Processing Unit has pressure.In one embodiment, the average latency can be stored in table by 3D graphical services manager 404, and when collapse, the average latency of order and threshold value can make comparisons by 3D graphical services manager 404.If the average latency is less than threshold value, then 3D graphical services manager 404 can be configured to assign virtual machine to GPU.
Threshold value can be arranged by keeper etc. and can depend on the Graphics Processing Unit of use.In the exemplary embodiment, the experiment dissimilar GPU loading being increased progressively to the virtual machine of quantity can be performed.Along with when more multi-dummy machine is added, the stand-by period can be recorded and can calculate the probability of replacement by the amount of replacement over a time period being made comparisons with the amount of the replacement in the same time section when the stand-by period is lower.What monitored resets with height the stand-by period that probability correlation joins and can be used to arrange threshold value.In example embodiment, the stand-by period monitored can be set to threshold value.In other exemplary implementations, the stand-by period monitored can be multiplied by scalar value, and can use the stand-by period through convergent-divergent.Such as, 80% of the stand-by period monitored can be set to threshold value.
In the exemplary embodiment, the stand-by period can be measured until receive the confirmation (" ACK ") from graphic kernel 508 to the time that GPU gives an order.After receiving each ACK, graphic kernel 508 can send to 3D graphical services manager 404 by with asking the stand-by period be associated.3D graphical services manager 404 can reflect the value of the average latency of this GPU in updating form.
In another example embodiment, can rise self-virtualizing device driver 518 time of starting direct memory access (DMA) affairs and measure the stand-by period.Such as, API 524 can write pel to dma buffer, and it can be caught by virtual device driver 518 and be sent to graph rendering module 506.API 524 can finally give an order.When virtual device driver 518 receives order, it can start timer.This order can be sent to graph rendering module 506 by virtual device driver 518, graph rendering module 506 and then will send order to graphic kernel 508.Graphic kernel 508 can send order to 3D graphics driver 510, and it can cause 3D Graphics Processing Unit 504 to process pel in dma buffer.3D GPU 504 can generate ACK, and situation can be propagated back to virtual machine driver 518, and virtual device driver 518 can stop timer.Virtual device driver 518 subsequently can via message-send communication channel 516 to send to 3D graphical services manager 404 stand-by period.3D graphical services manager 404 can reflect the value of the average latency of virtual machine in updating form.
Such as, virtual device driver 518 can send to 3D graphical services client computer 514 message comprising the stand-by period of affairs.3D GPU ISP 512 can receive this message and this message is sent to 3D graphical services manager 404, the renewable table of the latter.In this example, the stand-by period of affairs can be used to average latency of the DMA affairs determining to be sent by virtual machine 414, and whether the resource of this reflection 3D GPU 504 is by excessive use.
In the exemplary embodiment, except carrying out except load balance when virtual machine disperses to them, in response to conditions present, 3D graphical services manager 404 can be configured to more multi-dummy machine to move to another (by again binding its graphics associated rendering module) from a 3DGPU.Such as, Fig. 6 shows by the graph rendering module 506 moving to 3D GPU 504B from 3D GPU 504.In this exemplary embodiment, when contextual processing occurs to run virtual platform 402, when detecting that 3D graphical services manager 404 can run to when starting the request of virtual machine and/or after predetermined time amount is expired and generated interruption.
In this exemplary embodiment, 3D graphical services manager 404 can be configured to determine whether any GPU transships, such as, whether be in replacement risk, and whether mobile virtual machine (risk of overload GPU can be reduced in migration operation and can not unacceptably increase in the situation of the risk causing other GPU to reset).Such as, 3D graphical services manager 404 can be configured to determine the virtual machine being bound to each 3D GPU quantity, for each 3D GPU can the amount of graphic memory, average latency of DMA affairs of being initiated by each virtual machine being tied to each 3D GPU, each graph rendering module use average latency of the number percent of 3D GPU, the handling capacity be associated with each graph rendering module and/or graphic kernel order.In the situation of this information instruction 3D GPU overload, under 3D graphical services manager 404 can be configured to represent which virtual machine is in maximum pressure.3D graphical services manager 404 can assign the virtual machine having pressure subsequently to another Graphics Processing Unit.Appointment part in this operating process is similar to appointment process described above.
In the exemplary embodiment, 3D graphical services manager 404, by sending the device identifier of movement directive together with new GPU to graph rendering module (such as, graph rendering module 506), initiates mobile operation.In this example, graph rendering module 506 can receive order and find the GPU be associated with new identifier, such as, and 3D GPU 504B.In this example, graph rendering module can be configured to copy any kernel; Be tied to 3D GPU 504B, and dismounting is to the mapping of 3D GPU 504.After bindings completes, graph rendering module can there occurs movement to 3D graphical services manager 404 notice, and 3D graphical services manager 404 its table renewable is to reflect that graph rendering module 506 is attached to 3DGPU 504B.
Referring to Fig. 7, in the exemplary embodiment, mobile operation can be used to virtual machine (vm) migration to different virtual desktop server (400B-400D).As shown in the drawings, each virtual desktop server (400-400D) can comprise the example of one group of one or more Graphics Processing Unit (704-704D) and 3D graphical services manager (404-404D).Also show the management system 702 that can be configured to into control data center 700.Management system 702 optionally can comprise main 3D graphical services manager (being considered to optional to indicate it with dotted line instruction), and this main 3D graphical services manager can control the every other 3D graphical services manager (404-404D) in data center 700.
The unique information identifying each virtual machine can be used to affect migration operation.Such as, when each virtual machine is activated, start the unique identifier that the 3D graphical services manager (such as, 3D graphical services manager 404) that the server of VM runs can create the virtual machine in data center wherein.Unique identifier can comprise the type of the Graphics Processing Unit that virtual machine is played up thereon, the amount etc. of its estimated graphic memory used.In example embodiment, if virtual machine 414 has pressure, and not having suitable GPU to use on the server, then 3D graphical services manager 404 to each virtual desktop server in data center or optionally can send unique identifier to management system 702.
Unique identifier is sent in the example of each virtual desktop server wherein, and whether graphical services manager (404-404D) can be assigned to Graphics Processing Unit based on the information determination virtual machine described in previous paragraph.Determine that it can operate in the situation of virtual machine 414 at graphical services manager (such as, graphical services manager 404C), virtual desktop server 400 can be configured to virtual machine 414 to move to virtual desktop server 400C.
Unique identifier is sent in the situation of main 3D graphical services manager 706 wherein, and main 3D graphical services manager 706 can be configured to comprise all properties information from each 3D graphical services manager (404-404D) in data center 700; And main 3D graphical services manager 706 can determine based on the information described in previous paragraph whether virtual machine can be assigned to any Graphics Processing Unit in data center 700.
Below a series of process flow diagrams describing operating process.For ease of understanding, process flow diagram is organized into and makes initial flowchart viewpoint demonstrates each realization by overall " scheming greatly ", and follow-up process flow diagram provides further condiment shown in broken lines and/or details.In addition, those skilled in the art will appreciate that the operating process that dotted line is described is considered to optional.
Referring to Fig. 8, it illustrates for using the operating process balanced to the graphic process unit between virtual machine, comprise operation 800,802,804 and 806.The beginning of operation 800 instruction operating processes, and operate 802 and illustrate that appointment one group of virtual machine plays up 3D figure in a 3D Graphics Processing Unit.Such as, and with reference to figure 6, in the exemplary embodiment, 3D graphical services manager 400 can assign one group of virtual machine to play up in Graphics Processing Unit, such as, virtual machine 414, virtual machine 414D and virtual machine 414E is assigned to play up 3D figure in 3D Graphics Processing Unit 504.In this particular example, bot 502 includes, each virtual machine (414-414F) can be associated with graph rendering module (506,506D and 506), these graph rendering modules perform in virtual platform 402, such as perform in the main frame 204 of Fig. 2, these graph rendering modules can call via application programming interfaces and be tied to 3D Graphics Processing Unit 504.In this example, graph rendering module (506,506D and 506) can be configured to collect the dma buffer comprising pel and the API structure representing order; Optionally, by order that command translation becomes to be disposed by 3D graphics driver 510; And these orders are issued graphic kernel 508 together with the page of the storer comprising dma buffer.
Continue the description of Fig. 8, operation 804 illustrates that being at least used for carrying out response institute's time spent amount to order based on a 3D Graphics Processing Unit determines that a 3D Graphics Processing Unit is overused.Such as, in the exemplary embodiment, 3D graphical services manager 404 can perform on a processor, and determine that 3D Graphics Processing Unit 504 is overused, such as, 3D Graphics Processing Unit 504 does not have the enough resources for serving its requests all, and can be reset, and causes graph rendering module (506,506D and 506) to stop thus.In this particular example, bot 502 includes, determine at least to be used for replying the average length of time spent of graphic kernel 508 with ACK by graphic based processing unit (such as 3D GPU504).In this example, can be used for hardware the stand-by period that the order of response pattern kernel spends and upgrade the table controlled by 3D graphical services manager 404.Mean value and threshold wait times value can be made comparisons, and if mean value is greater than threshold value, then 3D graphical services manager 404 can be configured to determine that 3D GPU 504 is overused.
Continue the description of Fig. 8, operation 806 illustrates and at least in response to the judgement be overused a 3D Graphics Processing Unit, the first virtual machine is moved to second graph processing unit from this group virtual machine.Such as, and again referring to Fig. 6, in the exemplary embodiment, 3D graphical services manager 404 can be configured to selection first virtual machine (such as, virtual machine 414) and moves to second graph processing unit (such as, 3D GPU504B).In this example, virtual machine 414 is moved to 3D GPU 504B to relate to graph rendering module 506 is moved to 3D GPU 504B from 3D GPU 504.Such as, movement directive can be sent to graph rendering module 506 together with the device identifier of 3D GPU 405B by 3D graphical services manager 404.Graph rendering module 506 can receive order; Copy internal buffer; And be tied to 3D GPU 504B.After bindings completes, settling signal detachably to the mapping of 3D GPU 504, and is sent to 3D graphical services manager 404 by graph rendering module 506, and the renewable table of this 3D graphical services manager is to reflect that virtual machine 414 is bound to 3D GPU 504B.Further, graph rendering module 506 can send rendering command to 3D GPU 504B, and can be monitored the average latency of order by 3D graphical services manager 404.
Get back to Fig. 9 now, it illustrates the operating process of Fig. 8, comprises additional operations/refinement 908-916.Operation 908 shows in response to determining that the amount of the estimated available graphic memory controlled by second graph processing unit is greater than threshold value, and the first virtual machine is moved to second graph processing unit.Such as, and referring to Fig. 6, in the exemplary embodiment, the virtual machine that 3D graphical services manager 404 can be configured to be bound to 3D GPU 504 (such as, virtual machine 414) moves.In this example, determining that virtual machine 414 is moved to 3D GPU 504B can at least based on the judgement estimated amount that can be 3D GPU 504B graphic memory used being greater than to threshold value, and this threshold value can based on the amount of the graphic memory of the estimated figure for playing up virtual machine 414.In this case, 3D graphical services manager 404 can be configured to carry out mobile virtual machine 414 in response to the judgement of transshipping to 3D GPU504 and to the judgement that 3D GPU 504B can hold virtual machine 414.
Continue the description of Fig. 9, operation 910 illustrates that the average latency based on the direct memory access (DMA) affairs initiated by the first virtual machine determines that a 3D Graphics Processing Unit is by excessively used.In this example, 3D graphical services manager 404 movable virtual machine 414 because the average latency of the DMA affairs be associated with virtual machine 414 be greater than the every other graph rendering module (506D and 506E) being such as tied to 3D GPU 504.In this example, 3D graphical services manager 404 can be configured to the average latency first determining the order sent by graphic kernel 508, and determines that virtual machine 414 is the heaviest virtual machines that are stressed be associated with GPU in the average latency of DMA affairs used subsequently.
Forward operation 912 to, the average latency that it illustrates in response to the direct memory access (DMA) affairs of the second virtual machine determining to be assigned to second graph processing unit is less than threshold value to move the first virtual machine.In the exemplary embodiment, 3D graphical services manager 404 can be configured to be less than threshold value in response to the average latency of the DMA affairs of the one or more virtual machines determining to be tied to 3D GPU504B virtual machine is moved to 3D GPU 504B.Such as, 3D graphical services manager 404 can check the table of the average latency of the DMA affairs comprising virtual machine 414B.Average latency and threshold value can make comparisons by 3D graphical services manager 404, and determine that the average latency is less than threshold value.Load in this instruction virtual machine 414B is lower, and indicates the load on 3D GPU 504B lower in theory.In this case, 3D graphical services manager 404 can be configured at least determine mobile graphics rendering module 506 based on this.
Forwarding operation 914 to, it illustrates in response to determining that the quantity of the virtual machine being assigned to second graph processing unit is less than threshold value to move the first virtual machine.In the exemplary embodiment, 3D graphical services manager 404 can be configured in response to determining that the quantity of the virtual machine being tied to 3D GPU 504B is less than number of thresholds and virtual machine 414 is moved to 3D GPU 504B.In this example, 3D graphical services manager 404 can be configured to the value of the quantity (it is 1 in the example shown) of the virtual machine reading the current 3D of the being bound to GPU 504B of instruction from its table and determines that the quantity of current bound virtual machine is less than number of thresholds (namely based on the quantity of performance and/or management preferences).In this case, 3D graphical services manager 404 can be configured at least determine mobile graphics rendering module 506 based on this.
Forward operation 916 to, it illustrates the feature determining the first Graphics Processing Unit and second graph processing unit.Such as, in one embodiment, 3D graphical services manager 404 can be configured to the feature of each 3D Graphics Processing Unit determined in computer system.Such as, and continue previous example, 3D graphical services manager 404 can be configured to the feature determining 3D Graphics Processing Unit 504,504B and 504C.In this example, these features can be used to determine whether Graphics Processing Unit can be virtual machine process 3D figure.Such as, 3D graphical services manager 404 can be configured to carry out checking to check whether graphics card is supported to share surface and texture, and whether it at least supports such as particular version, amount of the graphic memory be associated with Graphics Processing Unit etc.In this example, this information can be used to fill the table that can be used to the Graphics Processing Unit use balanced between virtual machine.
Referring now to Figure 10, it illustrates for using the operating process balanced to the Graphics Processing Unit between virtual machine, comprise operation 1000,1002,1004,1006 and 1008.Forward operation 1000 to, it starts operating process, and operate 1002 show receive to the request the first virtual machine being assigned to a 3D Graphics Processing Unit.Such as, and referring to Fig. 5, in the exemplary embodiment, 3D graphical services manager 404 can perform and receive the instruction to the first virtual machine (such as, virtual machine 414) being assigned to 3D Graphics Processing Unit (such as, 3D GPU 504).In this example, request can be the signal indicating the client computer of such as client computer 520 and so on to ask virtual desktop session.
Continue the description of Figure 10, operation 1004 shows the amount of the graphic memory estimated for playing up 3D figure for the first virtual machine.Such as, in one embodiment, 3D graphical services manager 404 can estimate that virtual machine 414 can be used to the amount of the graphic memory playing up 3D figure, such as, can at least allow to be enough the amount of the graphic memory of virtual machine render graphics.Such as, estimating can based on the information obtained from the configuration file be associated with virtual machine 414, the average magnitude of its graphic memory indicating such as virtual machine 414 to use at the last time durations that it runs.In another illustrative embodiments, the amount of the estimated graphic memory needed for virtual machine render graphics can be estimate according to the information of the minimum memory tolerance described needed for display image.In another example embodiment, the amount of estimated graphic memory can based on amount of the storer needed for estimated high-speed cache pel etc.
Operation 1006 shows the latency value be associated in response to the direct memory access (DMA) affairs determined with sent by the one group of virtual machine being assigned render graphics in the first Graphics Processing Unit and is less than first threshold and the estimated amount for the graphic memory playing up 3D figure is less than Second Threshold, comes to select a 3D Graphics Processing Unit from multiple 3D Graphics Processing Unit.Such as, 3D graphical services manager 404 can store the information that instruction is bound to the latency value of the DMA affairs of each virtual machine of 3D GPU 504.Such as, when 3D graphical services manager 404 receives when virtual machine 414 is assigned to the request of 3D GPU, virtual machine 414D and 414E can be bound to 3D GPU 504.In this example, 3D graphical services manager 404 can obtain latency value from table, and will be worth waiting time and make comparisons with threshold value.In this example, the estimated amount being used for the graphic memory of the 3D figure playing up virtual machine 414 and threshold value also can be made comparisons by 3D graphical services manager 404.When the average latency of virtual machine 414D and 414E be less than threshold value and the amount of the graphic memory of the estimated 3D figure for playing up virtual machine 414 is less than Second Threshold, 3D graphical services manager 404 can select 3D GPU 504.
In the exemplary embodiment, Second Threshold (that is, with the estimated threshold value be associated for the amount of the graphic memory playing up 3D figure) can based on the amount of the graphic memory of the total amount of the graphic memory controlled by 3D GPU 504 and the estimated 3D figure for playing up virtual machine 414D and 414E.Such as, when virtual machine 414D and 414E is activated, 3D graphical services manager 404 may calculate the amount of the graphic memory of the estimated 3D figure for playing up virtual machine 414D and 414E, and these values is stored in table.When 3D graphical services manager 404 have selected 3D GPU 504 for each in virtual machine 414D and 414E, 3D graphical services manager 404 can deduct from the amount of the estimated available graphic memory controlled by GPU 504 its be associated estimated by the amount of the graphic memory for playing up 3D figure, and this value to be stored in table.This value can be used as Second Threshold subsequently, or Second Threshold can at least in part based on this value.
Operation 1008 illustrates that appointment first virtual machine plays up 3D figure in a 3D Graphics Processing Unit.Such as, and again referring to Fig. 6, in the exemplary embodiment, 3D graphical services manager 404 can be configured to initialize graphic rendering module 506 and send to it order being tied to 3D Graphics Processing Unit 504.Graph rendering module 506 can receive this order and be tied to 3D Graphics Processing Unit 504.After graph rendering module 504 is tied to 3D Graphics Processing Unit 504 and sets up communication channel between virtual machine 414 and graph rendering module 506, graph rendering module 506 can receive the dma buffer on summit, and plays up them on 3D processing unit 504.
Forward Figure 11 to, it illustrates the operating process of Figure 11, comprises additional operations 1110-1118.Operation 1110 shows the amount at least estimating the graphic memory for playing up 3D figure for the first virtual machine according to the information of the Pixel Dimensions of each virtual machine in identified group.Such as, in one embodiment, the amount for playing up the graphic memory of 3D figure for each virtual machine can based on the Pixel Dimensions be associated with virtual machine.Such as, when virtual machine is initialised, configuration file can be received, the information of this configuration file required display resolution comprising such as virtual machine and so on.3D graphical services manager 404 can receive this information and use it to estimate plays up the amount of the graphic memory of 3D figure for virtual machine for this reason.
Such as, Pixel Dimensions describes the quantity of the distinct pixel in each size that can be described by monitor.Because monitor is two-dimensional surface, therefore these sizes only bidimensional used (height and width).In the exemplary embodiment, Pixel Dimensions can be multiplied by the degree of depth and divided by 8.This result describes the amount of the graphic memory being used in rendering image under required display resolution.
Continue the description of Figure 11, operation 1112 shows the information estimation of ratio of compression at least used according to mark the one 3D Graphics Processing Unit for playing up the amount of the graphic memory of 3D figure for the first virtual machine.Such as, in embodiments, ratio of compression (that is, the ratio between the size of compressed image and the image of uncompressed) can be used to the image of estimating that virtual machine will use how many graphic memories to play up the first virtual machine fully.Such as, 3D Graphics Processing Unit can be configured to use compressed texture to reduce its size.When hardware inquired by 3D graphical services manager 404, it can determine whether texture compression can be activated and will reach which type of ratio of compression.3D graphical services manager 404 can use this information to estimate that virtual machine is by the amount of the graphic memory of use.
Referring to operation 1114, which depict at least according to mark estimated by, the information of the quantity on the surface of playing up for the first virtual machine is estimated to be used for be the amount that the first virtual machine plays up the graphic memory of 3D figure.Such as, in one embodiment, the quantity on surface of attempting playing up can be used to estimate the amount of graphic memory that this virtual machine will make for enough playing up 3D figure for virtual machine by estimated virtual machine.
Forwarding operation 1116 to, which depict in response to determining that the stand-by period of at least one order sent by graphic kernel is less than the 3rd threshold value and selects a 3D Graphics Processing Unit from multiple 3D Graphics Processing Unit.Such as, and look back Fig. 6, in the exemplary embodiment, 3D graphical services manager 404 can perform on a processor, and in response to determining that Graphics Processing Unit is (such as, 3D GPU 504) be used for ACK to sent by graphic kernel 508 at least one order make reply institute's time spent be less than threshold value, determine assign virtual machine 414 in 3D Graphics Processing Unit 504, play up 3D figure.In this example, useful hardware is used for the stand-by period that the order of response pattern kernel spends and upgrades the table controlled by 3D graphical services manager 404, and in an illustrative embodiments, can the stand-by period be used, or can be 3D GPU504 calculating mean value.Use wherein in the example of mean value, mean value and threshold wait times value can be made comparisons, and if mean value is greater than threshold value, then 3D graphical services manager 404 can be configured to determine that 3D GPU 504 is overused.
Referring now to operation 1118, it illustrates in response to determining that the quantity of the virtual machine being currently assigned to a 3D Graphics Processing Unit is less than the 4th threshold value and selects a 3D Graphics Processing Unit from multiple 3D Graphics Processing Unit.3D graphical services manager 404 can be configured to select 3D Graphics Processing Unit 504 to come for virtual machine 414 render graphics in response to determining that the data of the virtual machine being tied to 3D Graphics Processing Unit 504 are less than number of thresholds to determine.In this example, 3D graphical services manager 404 can be configured to the value of the quantity (it is 2 in the example shown) of the virtual machine reading the current 3D of the being bound to Graphics Processing Unit 504 of instruction from its table and determines that the quantity of current bound virtual machine is less than number of thresholds (namely based on the quantity of performance and/or management preferences).
With reference now to Figure 12, it illustrates comprise operation 1200,1202,1204,1206 and 1208, operating process.Operation 1200 starts operating processes, and operates 1202 the amount at least estimated for the graphic memory for virtual machine render graphics is shown.Such as, in one embodiment, 3D graphical services manager 404 can sink virtual machine (such as, virtual machine 414) just by initial instruction, and 3D graphical services manager 404 can start operating process to select the Graphics Processing Unit (such as, 3D Graphics Processing Unit 504) that will run.In this example, operating process can comprise the amount of the graphic memory estimated being used to the figure playing up virtual machine 414 fully.Such as, the amount of estimated graphic memory can be used as virtual machine operationally on have multi-memory intensive designator.
The estimation of the aforementioned amount to graphic memory used can based on the minimum memory tolerance needed for display image.In another example embodiment, the amount of estimated graphic memory can based on estimated for storing the amount of the necessary storer of pel generated needed for summit, what color the texture being applied to these summits, these summits should be, for by antialiasing technique storer being applied to object etc.In one example, this estimation can be static, that is, made for arranging based on expection by keeper, or it can be dynamic.Such as, the amount of the graphic memory that virtual machine 414 uses or attempts use can be monitored in time, such as, across virtual desktop session, and estimates that can be used to refinement estimates.
Forward now operation 1204 to, which depict and the amount of the amount of estimated graphic memory and the estimated available graphic memory controlled by multiple 3D Graphics Processing Unit is compared.Such as, 3D graphical services manager 404 can be configured to by estimated by the amount of the graphic memory used by virtual machine 414 and estimated for be attached to virtual desktop server 400 each Graphics Processing Unit can the amount of graphic memory compare.In this example, 3D graphical services manager 404 previously can obtain the amount of graphic memory integrated in graphics card (this graphics card holds Graphics Processing Unit), and this information was stored in table.In addition, each virtual machine is bound to Graphics Processing Unit, and 3D graphical services manager 404 just can be configured to deduct estimated virtual machine by the amount on the graphic memory summit of use from total quantity, and this value is stored in table.At this, the amount of the available graphic memory in the amount of the graphic memory needed for virtual machine 414 and estimated 3D GPU 504,3D GPU 504B and 3D GPU 504C can compare by 3D graphical services manager 404.
Continue the description of Figure 12, operation 1206 shows according to comparing from multiple 3D Graphics Processing Unit selection 3D Graphics Processing Unit for virtual machine plays up 3D figure.Such as, 3D graphical services manager 404 result at least based on the comparison can select the GPU (such as, 3D GPU 506) that will be tied to virtual machine.Such as, and continue exemplified earlier, 3D graphical services manager 404 can be estimated as based on 3D GPU 504 at least in part to be had this fact of enough graphic memories and determines that 3D GPU 504 can main memory virtual machine 414.
Forward now operation 1208 to, it illustrates and assign selected 3D Graphics Processing Unit to play up 3D figure for virtual machine.Such as, and again referring to Fig. 6, in the exemplary embodiment, 3D graphical services manager 404 can be configured to initialize graphic rendering module 506 and send to it order being tied to 3D Graphics Processing Unit 504.Graph rendering module 506 can receive this order and be tied to 3D Graphics Processing Unit 504.
With reference to Figure 13, which depict the operating process of Figure 13, comprise additional operations 1310-1322.In response to the average latency at least based on the direct memory access (DMA) figure affairs initiated by virtual machine, operation 1310 shows to be determined that 3D Graphics Processing Unit is overused virtual machine is moved to second graph processing unit.Such as, and look back Fig. 6, in the exemplary embodiment, 3D graphical services manager 404 can perform on a processor, and determine that 3D Graphics Processing Unit 504 is overused, such as, 3D Graphics Processing Unit 504 does not have the enough resources for serving its requests all, and can be reset, cause graph rendering module (506,612 and 614) to stop thus.In this particular example, bot 502 includes, determining can based on the average latency of the DMA figure affairs initiated by virtual machine 414.In this example, the average latency of virtual machine and threshold value can be made comparisons, and 3D graphical services manager 404 can be configured at least determine that the resource of 3D GPU 504 is overused based on this information.In response to determining, 3D graphical services manager 404 can be configured to graph rendering module 506 to move to another GPU, such as 3D GPU 504B or 504C.
Continue the description of Figure 13, in response to the average latency at least based on the graph command sent to 3D Graphics Processing Unit by graphic kernel, operation 1312 illustrates determines that 3D Graphics Processing Unit is overused, virtual machine is moved to second graph processing unit.Such as, in the exemplary embodiment, describe and can be used to determine whether 3D GPU is overused by the give an order information of spent average length of time of graphic kernel 508 before an ack is received.In this example, the table controlled by 3D graphical services manager 404 can be upgraded with the stand-by period about graphic kernel order, and can be 3D GPU 504 calculating mean value.Mean value and threshold wait times value can be made comparisons, and if mean value is greater than threshold value, then 3D graphical services manager 404 can be configured to determine that 3D GPU 504 is overused.In response to determining, 3D graphical services manager 404 can be configured to graph rendering module 506 to move to another GPU, such as 3D GPU 504B or 504C.
Forward operation 1314 to, it illustrates and determine that the quantity of the virtual machine being currently assigned to selected 3D Graphics Processing Unit is less than threshold value.3D graphical services manager 404 can be configured in response to determining that the quantity of the virtual machine being tied to 3DGPU 504B is less than threshold value and virtual machine 414 is moved to 3D GPU 504B.In this example, 3D graphical services manager 404 can be configured to the value of the quantity (it is 1 in the example shown) of the virtual machine reading the current 3DGPU of the being bound to 504B of instruction from its table and determines that the quantity of current bound virtual machine is less than number of thresholds (namely based on the quantity of performance and/or management preferences).In this case, 3D graphical services manager 404 can be configured at least determine mobile graphics rendering module 506 based on this.
Forward operation 1316 to, it illustrates the hardware characteristics of each 3D Graphics Processing Unit determined in multiple 3D Graphics Processing Unit.Such as, in one embodiment, 3D graphical services manager 404 can be configured to the feature of each 3D Graphics Processing Unit determined in computer system.Such as, and continue previous example, 3D graphical services manager 404 can be configured to the feature determining 3D Graphics Processing Unit 504 and 3D Graphics Processing Unit B616.In this example, these features can be used to determine whether Graphics Processing Unit can be virtual machine process 3D figure.Such as, 3D graphical services manager 404 can be determined to be and carry out checking to check whether graphics card is supported to share surface and texture, and whether it at least supports such as particular version, amount of the graphic memory be associated with Graphics Processing Unit etc.In this example, this information can be used to fill table that controlled by 3D graphical services manager 404, that can be used to the Graphics Processing Unit use balanced between virtual machine.
With reference to operation 1318, it illustrates the amount at least estimating the graphic memory for playing up 3D figure for virtual machine according to the information of the Pixel Dimensions of mark virtual machine.Such as, in one embodiment, the amount for playing up the graphic memory of 3D figure for each virtual machine can based on the Pixel Dimensions be associated with virtual machine.Such as, when virtual machine is initialised, configuration file can be received, the information of this configuration file required display resolution comprising such as virtual machine and so on.3D graphical services manager 404 can receive this information and use it to estimate plays up the amount of the graphic memory of 3D figure for virtual machine for this reason.
Forward operation 1320 to, the information that it illustrates the ratio of compression at least used by selected 3D Graphics Processing Unit according to mark estimates the amount of the graphic memory for playing up 3D figure for virtual machine.Such as, in embodiments, ratio of compression (that is, the ratio between the size of compressed image and the image of uncompressed) can be used to the image of estimating that virtual machine will use how many graphic memories to play up the first virtual machine fully.Such as, a 3D Graphics Processing Unit can be configured to use compressed texture to reduce its size.When hardware inquired by 3D graphical services manager 404, it can determine whether texture compression can be activated and will reach which type of ratio of compression.3D graphical services manager 404 can use this information to estimate that virtual machine is by the amount of the graphic memory of use.
Operation 1322 shows at least estimated by mark, to estimate that the information of the quantity on the surface of playing up for the first virtual machine is used for the graphic memory playing up 3D figure for virtual machine amount.Such as, in one embodiment, the quantity on surface of attempting playing up can be used to estimate the amount of graphic memory that this virtual machine will make for enough playing up 3D figure for virtual machine by estimated virtual machine.Such as, surface is the mode of the object represented in 3D figure, and is stored in a buffer.
Aforesaid detailed description has set forth each embodiment of system and/or process by example and/or application drawing.In the scope that such block diagram and/or example comprise one or more function and/or operation, it will be appreciated by those skilled in the art that, such block diagram, or each function in example and/or operation can respectively and/or commonly by far-ranging hardware, software, firmware or almost its any combination realize.
Although illustrate and describe the particular aspects of described herein theme, but, what it will be apparent to those skilled in the art that is, based on principle herein, when do not depart from theme described herein and its widely in, can make change and amendment, therefore, appended claims will be included in their scope, and all such changes and amendment are all by the real spirit and scope of theme described herein.

Claims (22)

1. the graphic process unit between being configured to virtual machine uses the method balanced, and comprising:
One group of virtual machine is assigned to play up 3D figure in a 3D Graphics Processing Unit;
At least be used for that response institute's time spent amount is carried out to order based on a described 3D Graphics Processing Unit and determine that a described 3D Graphics Processing Unit is overused; And
At least in response to the judgement be overused a described 3D Graphics Processing Unit, the first virtual machine is moved to the 2nd 3D Graphics Processing Unit in same computer system from this group virtual machine.
2. the method for claim 1, is characterized in that, the first virtual machine is moved to the 2nd 3D Graphics Processing Unit and also comprises:
In response to determining that the amount of the estimated available graphic memory controlled by described 2nd 3D Graphics Processing Unit is greater than threshold value, described first virtual machine is moved to described 2nd 3D Graphics Processing Unit.
3. the method for claim 1, is characterized in that, determines that a described 3D Graphics Processing Unit is overused and also comprises:
Average latency based on the direct memory access (DMA) affairs initiated by described first virtual machine determines that a described 3D Graphics Processing Unit is overused.
4. the method for claim 1, is characterized in that, the first virtual machine is moved to the 2nd 3D Graphics Processing Unit and also comprises:
Average latency in response to the direct memory access (DMA) affairs determining the second virtual machine being assigned to described 2nd 3D Graphics Processing Unit is less than threshold value to move described first virtual machine.
5. the method for claim 1, is characterized in that, the first virtual machine is moved to the 2nd 3D Graphics Processing Unit and also comprises:
In response to determining that the quantity of the virtual machine being assigned to described 2nd 3D Graphics Processing Unit is less than threshold value to move described first virtual machine.
6. the method for claim 1, is characterized in that, also comprises:
Determine the feature of a described 3D Graphics Processing Unit and described 2nd 3D Graphics Processing Unit.
7. the graphic process unit between being configured to virtual machine uses the system balanced, and comprising:
For the device of assigning one group of virtual machine to play up 3D figure in a 3D Graphics Processing Unit;
The device that a described 3D Graphics Processing Unit is overused is determined for being at least used for carrying out response institute's time spent amount to order based on a described 3D Graphics Processing Unit; And
For at least in response to the judgement be overused a described 3D Graphics Processing Unit, the first virtual machine is moved to the device of the 2nd 3D Graphics Processing Unit in same computer system from this group virtual machine.
8. system as claimed in claim 7, is characterized in that, also comprise for the device the first virtual machine being moved to the 2nd 3D Graphics Processing Unit:
For in response to determining that the amount of the estimated available graphic memory controlled by described 2nd 3D Graphics Processing Unit is greater than threshold value, described first virtual machine is moved to the device of described 2nd 3D Graphics Processing Unit.
9. system as claimed in claim 7, is characterized in that, for determining that the device that a described 3D Graphics Processing Unit is overused also comprises:
For determining based on the average latency of the direct memory access (DMA) affairs initiated by described first virtual machine the device that a described 3D Graphics Processing Unit is overused.
10. system as claimed in claim 7, is characterized in that, also comprise for the device the first virtual machine being moved to the 2nd 3D Graphics Processing Unit:
For being less than threshold value to move the device of described first virtual machine in response to the average latency of the direct memory access (DMA) affairs determining the second virtual machine being assigned to described 2nd 3D Graphics Processing Unit.
11. systems as claimed in claim 7, is characterized in that, also comprise for the device the first virtual machine being moved to the 2nd 3D Graphics Processing Unit:
For in response to determining that the quantity of the virtual machine being assigned to described 2nd 3D Graphics Processing Unit is less than threshold value to move the device of described first virtual machine.
12. systems as claimed in claim 7, is characterized in that, also comprise:
For determining the device of the feature of a described 3D Graphics Processing Unit and described 2nd 3D Graphics Processing Unit.
13. 1 kinds for using the equipment balanced to the Graphics Processing Unit between virtual machine, described equipment comprises:
For receiving the device of the request the first virtual machine being assigned to a 3D Graphics Processing Unit;
For estimating the device for playing up the amount of the graphic memory of 3D figure for described first virtual machine;
Latency value for being associated in response to the direct memory access (DMA) affairs determined with sent by the one group of virtual machine being assigned render graphics in a described 3D Graphics Processing Unit is less than first threshold and the estimated amount for the graphic memory playing up 3D figure is less than Second Threshold, selects the device of a described 3D Graphics Processing Unit from the multiple 3D Graphics Processing Unit in same computer system;
For the device of assigning described first virtual machine to play up 3D figure in a described 3D Graphics Processing Unit.
14. equipment as claimed in claim 13, is characterized in that, also comprise:
Estimate to be used for be the device that described first virtual machine plays up the amount of the graphic memory of 3D figure for the information at least according to the Pixel Dimensions of each virtual machine in described group of mark.
15. equipment as claimed in claim 13, is characterized in that, also comprise:
Information for the ratio of compression at least used by a described 3D Graphics Processing Unit according to mark is estimated to be used for be the device that described first virtual machine plays up the amount of the graphic memory of 3D figure.
16. equipment as claimed in claim 13, is characterized in that, also comprise:
For at least estimated by mark, the information of the quantity on the surface of playing up for described first virtual machine estimated be used for for described first virtual machine plays up the device of the amount of the graphic memory of 3D figure.
17. equipment as claimed in claim 13, is characterized in that, also comprise:
For in response to determining that the stand-by period of at least one order sent by graphic kernel is less than the 3rd threshold value, select the device of a described 3D Graphics Processing Unit from described multiple 3D Graphics Processing Unit.
18. equipment as claimed in claim 13, is characterized in that, also comprise:
For in response to determining that the quantity of the virtual machine being currently assigned to a described 3D Graphics Processing Unit is less than the 4th threshold value, select the device of a described 3D Graphics Processing Unit from described multiple 3D Graphics Processing Unit.
19. equipment as claimed in claim 13, is characterized in that, also comprise:
For in response at least determining that a described 3D Graphics Processing Unit is overused based on the average latency of the direct memory access (DMA) figure affairs initiated by described first virtual machine, described first virtual machine is moved to the device of the 2nd 3D Graphics Processing Unit.
20. equipment as claimed in claim 13, is characterized in that, also comprise:
For determining that a described 3D Graphics Processing Unit is overused in response to the average latency at least based on the graph command sent to a described 3D Graphics Processing Unit by graphic kernel, described first virtual machine is moved to the device of the 2nd 3D Graphics Processing Unit.
21. equipment as claimed in claim 13, is characterized in that, also comprise:
For determining the device of the hardware characteristics of each 3D Graphics Processing Unit in multiple 3D Graphics Processing Unit.
22. 1 kinds, for the method balanced the load in Graphics Processing Unit, comprising:
Estimate the amount of the graphic memory be at least used for for virtual machine render graphics;
The amount of the amount of estimated graphic memory and the estimated available graphic memory controlled by the multiple 3D Graphics Processing Unit in same computer system is compared;
Be chosen as from the multiple 3D Graphics Processing Unit in same computer system the 3D Graphics Processing Unit that virtual machine plays up 3D figure according to comparing; And
Selected 3D Graphics Processing Unit is assigned to play up 3D figure for virtual machine.
CN201110308337.5A 2010-09-30 2011-09-29 Techniques for load balancing GPU enabled virtual machines Active CN102402462B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/895,605 2010-09-30
US12/895,605 US9069622B2 (en) 2010-09-30 2010-09-30 Techniques for load balancing GPU enabled virtual machines

Publications (2)

Publication Number Publication Date
CN102402462A CN102402462A (en) 2012-04-04
CN102402462B true CN102402462B (en) 2015-02-25

Family

ID=45884692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110308337.5A Active CN102402462B (en) 2010-09-30 2011-09-29 Techniques for load balancing GPU enabled virtual machines

Country Status (5)

Country Link
US (1) US9069622B2 (en)
EP (1) EP2622470B1 (en)
JP (1) JP5902175B2 (en)
CN (1) CN102402462B (en)
WO (1) WO2012050718A2 (en)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9208029B2 (en) * 2010-11-12 2015-12-08 Hitachi, Ltd. Computer system to switch logical group of virtual computers
US8910154B2 (en) * 2010-12-23 2014-12-09 Mitel Networks Corporation Obtaining diagnostic information in a virtual environment
US9130899B1 (en) 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
US9183030B2 (en) 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
US8990292B2 (en) * 2011-07-05 2015-03-24 Cisco Technology, Inc. In-network middlebox compositor for distributed virtualized applications
US8902248B1 (en) 2011-07-14 2014-12-02 Vmware, Inc. Method and system for measuring display performance of a remote application
US20130104149A1 (en) * 2011-10-25 2013-04-25 Handong Lnc Co., Ltd. Selective data processing method between docked terminals and selective data processing system using the same
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US9055139B1 (en) 2012-03-12 2015-06-09 Cisco Technology, Inc. Display protocol interception in the network for services and network-based multimedia support for VDI
EP2754045A1 (en) * 2012-05-29 2014-07-16 Qatar Foundation A graphics processing unit controller, host system, and methods
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
CN102902576B (en) * 2012-09-26 2014-12-24 北京奇虎科技有限公司 Method, server and system for rendering webpages
TWI482118B (en) * 2012-10-18 2015-04-21 Wistron Corp System and method for processing load balance of graphic streams
US9135052B2 (en) 2012-11-06 2015-09-15 Red Hat Israel, Ltd. Distributed multiple monitor display split using multiple client devices in a virtualization system
US8959514B2 (en) * 2012-11-06 2015-02-17 Red Hat Israel, Ltd. Virtual machine monitor display split using multiple client devices in a virtualization system
JP2016508757A (en) * 2012-12-21 2016-03-24 ジェイソン スペンサー, System and method for graphical processing of medical data
CN103970555B (en) * 2013-01-31 2017-09-12 中兴通讯股份有限公司 Adaptive virtual machine starts control method and device
CN103984669A (en) 2013-02-07 2014-08-13 辉达公司 System and method for image processing
CN104053019A (en) * 2013-03-12 2014-09-17 中兴通讯股份有限公司 Video playing and processing method and device based on virtual desktop
US9525586B2 (en) * 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9430258B2 (en) * 2013-05-10 2016-08-30 Vmware, Inc. Efficient sharing of identical graphics resources by multiple virtual machines using separate host extension processes
TW201445500A (en) * 2013-05-16 2014-12-01 Hon Hai Prec Ind Co Ltd Video adapter controlling system, method and computer using the same
US9600774B1 (en) * 2013-09-25 2017-03-21 Amazon Technologies, Inc. Predictive instance suspension and resumption
US9734546B2 (en) * 2013-10-03 2017-08-15 Nvidia Corporation Split driver to control multiple graphics processors in a computer system
US9332046B2 (en) 2013-10-17 2016-05-03 Cisco Technology, Inc. Rate-adapted delivery of virtual desktop image elements by an edge server in a computer network environment
CN104580124B (en) * 2013-10-29 2019-04-05 华为技术有限公司 Protocol stack selection method, device and equipment
US9674265B2 (en) 2013-11-04 2017-06-06 Vmware, Inc. Filtering unnecessary display updates for a networked client
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US20150130815A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Multiple parallel graphics processing units
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
WO2015080719A1 (en) * 2013-11-27 2015-06-04 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9674518B2 (en) 2013-12-20 2017-06-06 Vmware, Inc. Measuring remote video display with embedded pixels
CN104754464A (en) * 2013-12-31 2015-07-01 华为技术有限公司 Audio playing method, terminal and system
GB2525003B (en) 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
GB201406392D0 (en) * 2014-04-09 2014-05-21 Advanced Risc Mach Ltd Data processing systems
GB2525002B (en) 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data processing systems
US9898794B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based GPU resource scheduling
US9898795B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
CN104123452B (en) * 2014-07-18 2017-10-10 西北工业大学 GPU load comprehensive evaluation methods based on fuzzy decision
CN104102546B (en) * 2014-07-23 2018-02-02 浪潮(北京)电子信息产业有限公司 A kind of method and system for realizing CPU and GPU load balancing
DE102014221247A1 (en) * 2014-10-20 2016-04-21 Continental Automotive Gmbh Computer system for a motor vehicle
CN107111498B (en) * 2014-11-12 2020-12-29 英特尔公司 Live migration of virtual machines from/to a host computer using graphical virtualization
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
CN104333607B (en) * 2014-11-25 2019-12-13 武汉理工数字传播工程有限公司 Device and method for realizing mass transmission of virtual cloud graphic workstation
KR101647099B1 (en) * 2014-12-18 2016-08-09 권영민 Server structure for supporting virtual multi session
CN107533463A (en) * 2015-03-18 2018-01-02 英特尔公司 Apparatus and method for the unknowable more GPU processing of software
CN106296564B (en) * 2015-05-29 2019-12-20 展讯通信(上海)有限公司 Embedded SOC (system on chip)
US11145271B2 (en) * 2015-08-10 2021-10-12 Amazon Technologies, Inc. Virtualizing graphics processing in a provider network
WO2017049538A1 (en) * 2015-09-24 2017-03-30 Intel Corporation Apparatus and method for pattern driven self-adaptive virtual graphics processor units
US10929189B2 (en) 2015-10-21 2021-02-23 Intel Corporation Mobile edge compute dynamic acceleration assignment
US9904975B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Scaling for virtualized graphics processing
US9886737B2 (en) 2015-11-11 2018-02-06 Amazon Technologies, Inc. Local-to-remote migration for virtualized graphics processing
US9904973B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Application-specific virtualized graphics processing
US9904974B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Placement optimization for virtualized graphics processing
JPWO2017099061A1 (en) * 2015-12-08 2018-09-27 日本電気株式会社 Planning system, planning method, and recording medium for recording planning program for planning placement of virtual machine
JP6398963B2 (en) * 2015-12-14 2018-10-03 コニカミノルタ株式会社 Image forming apparatus and program executed by image forming apparatus
CN107102957A (en) * 2016-02-22 2017-08-29 深圳市知穹科技有限公司 The method and system that a kind of internal memory based between GPU and NIC is directly exchanged at a high speed
US10181172B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset delivery for virtualized graphics
CN107483390B (en) * 2016-06-08 2020-10-16 成都云创互联信息技术有限公司 Cloud rendering network deployment subsystem, system and cloud rendering platform
US10181173B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset management for virtualized graphics
US10423463B1 (en) 2016-06-09 2019-09-24 Amazon Technologies, Inc. Computational task offloading for virtualized graphics
US9990211B2 (en) 2016-06-15 2018-06-05 Vmware, Inc. Tracking window position in a VDI environment
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10102605B1 (en) 2016-08-26 2018-10-16 Amazon Technologies, Inc. Graphics library virtualization for virtualized graphics processing
KR102202258B1 (en) * 2016-09-05 2021-01-13 후아웨이 테크놀러지 컴퍼니 리미티드 Allocation of graphics processing units for virtual machines
US10200249B1 (en) 2016-12-09 2019-02-05 Amazon Technologies, Inc. Network traffic management for virtualized graphics devices
US10373284B2 (en) 2016-12-12 2019-08-06 Amazon Technologies, Inc. Capacity reservation for virtualized graphics processing
US10430911B1 (en) 2016-12-16 2019-10-01 Amazon Technologies, Inc. Graphics overlays with virtualized graphics processing
US10482561B1 (en) 2017-01-11 2019-11-19 Amazon Technologies, Inc. Interaction monitoring for virtualized graphics processing
US10255652B2 (en) 2017-01-18 2019-04-09 Amazon Technologies, Inc. Dynamic and application-specific virtualized graphics processing
US10692168B1 (en) 2017-01-26 2020-06-23 Amazon Technologies, Inc. Availability modes for virtualized graphics processing
US10204392B2 (en) * 2017-02-02 2019-02-12 Microsoft Technology Licensing, Llc Graphics processing unit partitioning for virtualization
US10593009B1 (en) 2017-02-22 2020-03-17 Amazon Technologies, Inc. Session coordination for auto-scaled virtualized graphics processing
TWM545940U (en) * 2017-03-10 2017-07-21 Evga Corp Wireless monitoring device for display card
US10169841B1 (en) 2017-03-27 2019-01-01 Amazon Technologies, Inc. Dynamic interface synchronization for virtualized graphics processing
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10074206B1 (en) 2017-05-23 2018-09-11 Amazon Technologies, Inc. Network-optimized graphics library for virtualized graphics processing
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US10699364B2 (en) * 2017-07-12 2020-06-30 Citrix Systems, Inc. Graphical rendering using multiple graphics processors
CN107423019B (en) * 2017-07-31 2020-11-10 山东超越数控电子股份有限公司 Implementation method for controlling 3D (three-dimensional) graphic acceleration based on Feiteng platform
GB2565770B (en) * 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US10649790B1 (en) 2017-08-24 2020-05-12 Amazon Technologies, Inc. Multithreaded rendering for virtualized graphics processing
US10338847B1 (en) 2017-08-28 2019-07-02 Amazon Technologies, Inc. Coherent buffer mapping for virtualized graphics processing
US10908940B1 (en) 2018-02-26 2021-02-02 Amazon Technologies, Inc. Dynamically managed virtual server system
CN110278235A (en) * 2018-03-16 2019-09-24 上海远动科技有限公司 SCADA mobile monitor desktop system based on cloud
US11182189B2 (en) * 2018-08-24 2021-11-23 Vmware, Inc. Resource optimization for virtualization environments
US11126452B2 (en) * 2018-08-24 2021-09-21 Vmware, Inc. Performance modeling for virtualization environments
CN109656714B (en) * 2018-12-04 2022-10-28 成都雨云科技有限公司 GPU resource scheduling method of virtualized graphics card
CN111381914B (en) * 2018-12-29 2021-07-30 中兴通讯股份有限公司 Method and system for realizing 3D (three-dimensional) capability of cloud desktop virtual machine
CN109840135B (en) * 2019-01-30 2022-02-18 郑州云海信息技术有限公司 Load balancing method and device and electronic equipment
CN110557624A (en) * 2019-07-16 2019-12-10 西安万像电子科技有限公司 Data transmission method and device and server
CN110545415A (en) * 2019-07-16 2019-12-06 西安万像电子科技有限公司 Data transmission method and device and server
US11886898B2 (en) * 2020-03-30 2024-01-30 Vmware, Inc. GPU-remoting latency aware virtual machine migration
CN111935471B (en) * 2020-08-14 2021-04-06 北京泽塔云科技股份有限公司 Remote stereo graph generation system and method based on cloud service
US11915060B2 (en) * 2021-03-25 2024-02-27 Dell Products L.P. Graphics processing management system
CN113094015A (en) * 2021-04-19 2021-07-09 上海跃影科技有限公司 Holographic multi-screen display implementation method and system, computer equipment and storage medium
CN113342534B (en) * 2021-06-29 2024-01-02 天翼云科技有限公司 Graphics processing resource allocation method, device, equipment and storage medium
CN113590263B (en) * 2021-07-01 2022-07-05 深圳大学 Method and device for obtaining virtual machine scheduling scheme, terminal equipment and storage medium
US11595321B2 (en) 2021-07-06 2023-02-28 Vmware, Inc. Cluster capacity management for hyper converged infrastructure updates
CN116954929B (en) * 2023-09-20 2023-12-01 四川并济科技有限公司 Dynamic GPU scheduling method and system for live migration
CN117331704B (en) * 2023-11-30 2024-03-15 摩尔线程智能科技(北京)有限责任公司 Graphics processor GPU scheduling method, device and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601014A (en) * 2006-12-12 2009-12-09 Lsi公司 Utilize memory load information to come balance cluster virtual machine
CN101739285A (en) * 2008-11-21 2010-06-16 国际商业机器公司 System and method of graphics hardware resource usage in a fully virtualized computing environment

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675762A (en) 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
US5991856A (en) 1997-09-30 1999-11-23 Network Associates, Inc. System and method for computer operating system protection
JP2005062927A (en) * 2003-08-11 2005-03-10 Hitachi Ltd Load control method and device, and processing program therefor
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
WO2005036367A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
US7263690B1 (en) 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US8060683B2 (en) 2004-12-17 2011-11-15 International Business Machines Corporation System, method and program to preserve a cache of 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
WO2006134691A1 (en) 2005-06-17 2006-12-21 Nec Corporation Information processing device, restoration device, program and restoration method
US20070143762A1 (en) 2005-12-16 2007-06-21 Arnold Kevin M Assigning tasks in a distributed system based on ranking
US7360022B2 (en) 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7594042B2 (en) 2006-06-30 2009-09-22 Intel Corporation Effective caching mechanism with comparator coupled to programmable registers to store plurality of thresholds in order to determine when to throttle memory requests
US7673113B2 (en) 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP4882845B2 (en) 2007-04-19 2012-02-22 株式会社日立製作所 Virtual computer system
US7797587B2 (en) 2007-06-06 2010-09-14 Dell Products L.P. System and method of recovering from failures in a virtual machine
EP2006770B1 (en) 2007-06-19 2014-01-01 VirtualLogix SA Load balancing
US8330762B2 (en) 2007-12-19 2012-12-11 Advanced Micro Devices, Inc. Efficient video decoding migration for multiple graphics processor systems
EP2245536B1 (en) 2008-01-27 2018-10-24 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
US20090322784A1 (en) 2008-02-27 2009-12-31 Gabriele Sartori System and method for virtual 3d graphics acceleration and streaming multiple different video streams
US8230069B2 (en) * 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
JP5251188B2 (en) * 2008-03-18 2013-07-31 富士通株式会社 Information processing apparatus, information processing apparatus control method, and computer program
US8972978B2 (en) 2008-05-02 2015-03-03 Skytap Multitenant hosted virtual machine infrastructure
US20100115510A1 (en) * 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof
US8751654B2 (en) * 2008-11-30 2014-06-10 Red Hat Israel, Ltd. Determining the graphic load of a virtual desktop
CN101452406B (en) 2008-12-23 2011-05-18 北京航空航天大学 Cluster load balance method transparent for operating system
US8405666B2 (en) * 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US8589921B2 (en) * 2009-11-30 2013-11-19 Red Hat Israel, Ltd. Method and system for target host optimization based on resource sharing in a load balancing host and virtual machine adjustable selection algorithm
US8413144B1 (en) 2010-07-30 2013-04-02 Symantec Corporation Providing application-aware high availability of virtual machines
US8970603B2 (en) 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601014A (en) * 2006-12-12 2009-12-09 Lsi公司 Utilize memory load information to come balance cluster virtual machine
CN101739285A (en) * 2008-11-21 2010-06-16 国际商业机器公司 System and method of graphics hardware resource usage in a fully virtualized computing environment

Also Published As

Publication number Publication date
WO2012050718A3 (en) 2012-05-31
EP2622470A2 (en) 2013-08-07
US20120084774A1 (en) 2012-04-05
EP2622470B1 (en) 2022-06-08
CN102402462A (en) 2012-04-04
JP2014500535A (en) 2014-01-09
US9069622B2 (en) 2015-06-30
WO2012050718A2 (en) 2012-04-19
EP2622470A4 (en) 2015-01-07
JP5902175B2 (en) 2016-04-13

Similar Documents

Publication Publication Date Title
CN102402462B (en) Techniques for load balancing GPU enabled virtual machines
CN102495769B (en) Dynamic virtual device failure recovers
US11094031B2 (en) GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system
CN102207886B (en) Virtual machine high-speed simulation is assisted
US9141417B2 (en) Methods and systems for integrated storage and data management using a hypervisor
US7797699B2 (en) Method and apparatus for scheduling virtual machine access to shared resources
CN102567052B (en) Techniques for enabling remote management of servers configured with graphics processors
CN102906691B (en) Virtual machine migration techniques
Lagar-Cavilla et al. VMM-independent graphics acceleration
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
US20100115510A1 (en) Virtual graphics device and methods thereof
JP2008530706A (en) Method, apparatus and system for dynamically reallocating memory from one virtual machine to another
JP2009110518A (en) Dynamic allocation of virtual machine device
CN101819538A (en) The requests of operating systems in virtual machine is carried out in management
US10346065B2 (en) Method for performing hot-swap of a storage device in a virtualization environment
CN110832457A (en) Advanced virtualization context switching for virtualization accelerated processing devices
WO2022041507A1 (en) 3d rendering method and system
US20050108440A1 (en) Method and system for coalescing input output accesses to a virtual device
Chang et al. On construction and performance evaluation of a virtual desktop infrastructure with GPU accelerated
KR102001641B1 (en) Method and apparatus for managing gpu resource in virtualization environment
Manfroi et al. A walking dwarf on the clouds
CN110383255A (en) It manages and the client partitions of physical equipment is accessed
JP2022548563A (en) Flexible multi-user graphics architecture
US8402191B2 (en) Computing element virtualization
CN114741194A (en) I/O request processing method and device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150727

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150727

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.