The present invention relates generally to a method and system for combining desktop virtualization and application virtualization, and, in particular embodiments, to a method and system for serving a virtual desktop to a client.
Modern computing exhibits trends toward remote services and remote processing for both personal and business applications. Remote services, such as centralized, server installed software suites, offer many advantages over traditional local installations. One significant advantage is the availability of greater computing resources at a remote location over local. Another advantage is the centralization of maintenance and security activities.
For many, the most familiar instance of remote processing is the virtual desktop. The virtual desktop is based on a virtual desktop infrastructure (VDI) that allows a client computing device, such as a personal computer (PC), tablet computer, smart phone, or game platform, among others, to utilize an operating system (OS) desktop or a virtual machine (VM) through a network connection to a server. A VM is a software-implemented imitation of a computing system that can execute single applications within an OS. A familiar virtual desktop is the Windows® Remote Desktop, also referred to as the Microsoft® Remote Desktop Services (RDS), which provides general access to a Windows® desktop and certain applications executable within the OS. Another example is the Amazon® Work Spaces. In the VDI, the server executes the OS for the client, generating display data and rendering instructions for a graphics processing subsystem within the server. The graphics processing subsystem can include a dedicated graphics processing unit (GPU), graphics memory, data buses, and display interfaces. It can reside on a dedicated graphics circuit card assembly, or can be integrated on a motherboard with a central processing unit (CPU). The graphics processing subsystem renders frames according to the display data and rendering instructions and the frames are encoded and transmitted to the client for display. Generally, the client simply decodes and displays the frames. Additionally, the client is responsible for a user interface.
Remote services, sometimes referred to as application virtualization, are similar to the virtual desktop in that processing is carried out remotely, on a server for instance, and results are communicated to the client. Remote services generally focus on discrete software programs or software suites, such as a computer aided drafting (CAD) application or a game. The advantage of application virtualization is that computationally intensive tasks can be offloaded to a better suited computing system.
Embodiments of the present invention provide methods and systems for serving a virtual desktop to a client using virtual desktop infrastructure (VDI) and application virtualization.
In one embodiment, the method includes rendering and encoding an application frame on a first server, rendering and encoding a desktop frame that confines the application frame on a second server, communicating the application frame to the second server, and communicating the desktop frame and redirecting the application frame from the second server to the client.
An embodiment virtual desktop server includes a virtual machine monitor (VMM) configured to create and run at least one virtual machine (VM) for at least one respective client. The embodiment virtual desktop server also includes a VM associated with a client according to the VMM. The VM includes an application frame redirect module configured to receive and redirect an encoded application frame from an application server to the client. The VM also includes an operating system (OS) configured to generate a desktop frame for encoding and communicating to the client.
An embodiment system for serving a virtual desktop to a client includes a virtual desktop server and a virtual application server. The virtual desktop server is configured to operate a VM associated with the client. The virtual application server is configured to execute an application for the client, render an application frame for display on the client, and encode and communicate the application frame to the VM. The VM is configured to cause the virtual desktop server to render a desktop frame that confines the application frame, encode and communicate the desktop frame to the client, and direct the application frame to the client for compositing with the desktop frame.
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
Certain systems utilize both the VDI and application virtualization. Those systems typically include at least one remote server machine serving on or more thin clients, or simply clients. A server is generally a process running on a machine, the implication being that multiple server processes can execute on a single machine. In embodiment systems combining VDI and application virtualization, there is a virtual desktop server and a virtual application server, which can be separate processes executing on separate machines, or separate processes executing on a single machine.
Combining VDI and application virtualization is beneficial in systems that utilize the VDI and also utilize graphics intensive applications. Some virtual desktop server machines lack the graphics processing resources to effectively serve graphics intensive applications to clients, or the system users or administers simply prefer to offload certain graphics processing tasks. A common solution is for the virtual desktop to be served, or hosted, by the virtual desktop server through a VM. The VM is typically dedicated to a particular client and operates an OS. The virtual desktop server then offloads certain processing tasks by utilizing a virtual application server for processing intensive applications. The virtual desktop server then relays the application data from the virtual application server to the client over network connections.
It is realized herein that certain overhead costs are incurred when the virtual desktop server relays application data from the virtual application server to the client. The virtual application server executes a virtual application, thereby generating virtual application data and rendering instructions. The virtual application data and rendering instructions are employed by a graphics processing system local to the virtual application server to render virtual application frames. Virtual application frames include graphics for the virtual application. The rendered application frames are typically encoded and communicated to the virtual desktop server. The virtual desktop server is responsible for the remainder of the virtual desktop. The virtual application graphics are generally contained within a window that is itself contained within the virtual desktop, or confined to the virtual desktop. The virtual application window can be all or a portion of the virtual desktop. Many solutions include the virtual desktop server decoding the rendered application frames and compositing the virtual application frames with the virtual desktop frames. A composite frame that includes the virtual desktop and the virtual application is then encoded and transmitted to the client. The client then decodes and displays the composite frame. It is realized herein the decoding, compositing, and re-encoding carried out by the VM on the virtual desktop server is unnecessary. Rather, it is realized herein, the VM can include a redirect module for redirecting received encoded application frames to the client. The VM executes the OS and generates, encodes, and transmits the virtual desktop frame. The application frame represents a window within the virtual desktop. The virtual desktop frame confines the application frame, but lacks the application frame content, which is the virtual application graphics. It is further realized herein the client can receive the encoded desktop frame and encoded application frame, decode both frames, composite and display a composite frame that includes both the virtual desktop and the virtual application.
Virtual application server 110 includes a CPU 112 configured to execute virtual application 114. Virtual application server 110 also includes a graphics processing subsystem 116, which can include a GPU, dedicated memory, data buses, and video interfaces. CPU 112 executes virtual application 114 to generate virtual application data and rendering instructions. Graphics processing subsystem 116 carries out the rendering instructions on the virtual application data to generate a sequence of application frames. Each of the application frames is encoded and communicated to virtual desktop server 120.
Virtual desktop server 120 includes a CPU 122 configured to operate a VM 124. Virtual desktop server 120 also includes a network interface card (NIC) 126. VM 124 generates virtual desktop data and rendering instructions that are carried out by CPU 122 to render a sequence of desktop frames. CPU 122, in some embodiments, is incapable of processing rendering commands for complex graphics, such as three-dimensional graphics often found in CAD applications and games. Virtual application server 110 provides the high-performance graphics processing demanded by certain applications. In certain embodiments, virtual desktop server 120 can include a graphics processing subsystem. A graphics processing subsystem can include a GPU, dedicated memory, data buses, and video interfaces. In these embodiments the graphics processing subsystem carries out the rendering instructions on the virtual desktop data to render a sequence of desktop frames. Continuing the embodiment of
Thin client 130 includes a NIC 132 that couples it to virtual desktop server 120. Thin client 130 also includes a decoder 134 and a display 136. Thin client 130 receives an encoded application frame and an encoded desktop frame from virtual desktop server 120 through NIC 132. The application frame and desktop frame are decoded by decoder 134. Thin client 130 then composites the two, forming a composite frame that includes both the virtual desktop and the virtual application. The composite frame is then displayed on display 136.
CPU 202 is configured to operate VMM 208. VMM 208 is operable to create VM 210 and assign it to the client. VMM 208 can create and maintain multiple VMs for multiple respective clients. VM 210 executes OS 212, thereby generating virtual desktop data and rendering instructions. In certain embodiments, GPU 204 is not available, is not suited for high-performance graphics processing, or is omitted from virtual desktop server 200 altogether. In those embodiments, CPU 202 is configured to carry out the rendering instructions on the virtual desktop data to generate a sequence of desktop frames. In the embodiment of
Virtual desktop server 200 receives application frame 220 from a virtual application server. Application frame 220 is passed to frame redirect module 216 in VM 210. Frame redirect module 216 is configured to forward the frame to the client. Application frame 220 is not decoded and is not stored in virtual desktop display memory 214 along with the desktop frame.
Virtual application server 310 includes a virtual application 312, a frame controller 314, and a file sandbox 316. Virtual application server is configured to employ graphics processing subsystem 340 to execute virtual application 312, thereby generating an application frame that is communicated to virtual machine 320. Frame controller 314 is operable to monitor the processing load on graphics processing subsystem 340 and adjust the rate at which frames are captured after rendering on graphics processing subsystem 340. The frame rate impacts the computational resources of graphics processing subsystem 340 consumed by virtual application 312. File sandbox 316 is a portion of memory allocated for storing data for virtual application 312 local to virtual application server 310, data that would otherwise be stored on VM 320. File sandbox 316 allows more efficient access to data necessary for virtual application 312.
Hypervisor 350 is configured to create and maintain VM 320, possibly along with one or more other VMs. VM 320 includes a redirect module 324, a VDI display 326, and a file system 328. File system 328 is configured to store client associated data associated with a virtual desktop and any applications running within VM 320, such as virtual application 312. VDI display 326 is the desktop display to be transmitted to and display on thin client 330. VDI display includes the virtual desktop content, but not the application frame content. Frames of VDI display 326 are communicated to thin client 330. Redirect module 324 is configured to receive encoded application frames from virtual application server 310 and forwards them on to thin client 330. Redirect module 324 does not decode the application frames or composite them with VDI display 326.
Thin client 330 includes a redirect client 334 and a VDI display client 336. Redirect client 334 is configured to receive the encoded redirect application frames from redirect module 324 on VM 320. VDI display client 336 is configured to receive encoded desktop frames from VDI display 326 on VM 320. Thin client 330 is configured to decode and composite the application frame and the desktop frame into a composite frame. The composite frame is then displayed.
The bus 420 may be one or more of any type of several bus architectures including a memory bus or memory controller, a peripheral bus, video bus, or the like. The CPU 414 may comprise any type of electronic data processor. The memory 408 may comprise any type of system memory such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), read-only memory (ROM), a combination thereof, or the like. In an embodiment, the memory 408 may include ROM for use at boot-up, and DRAM for program and data storage for use while executing programs.
The mass storage 404 may comprise any type of storage device configured to store data, programs, and other information and to make the data, programs, and other information accessible via the bus 420. The mass storage 404 may comprise, for example, one or more of a solid state drive, hard disk drive, a magnetic disk drive, an optical disk drive, or the like.
The video adapter 410 and the I/O interface 412 provide interfaces to couple external input and output devices to the processing unit 402. As illustrated, examples of input and output devices include a display 418 coupled to the video adapter 410 and a mouse/keyboard/printer 416 coupled to the I/O interface 412. Other devices may be coupled to the processing unit 402, and additional or fewer interface cards may be utilized. For example, a serial interface such as Universal Serial Bus (USB) (not shown) may be used to provide an interface for a printer.
The processing unit 402 also includes one or more network interfaces 406, which may comprise wired links, such as an Ethernet cable or the like, and/or wireless links to access nodes or different networks. The network interfaces 406 allow the processing unit 402 to communicate with remote units via the networks. For example, the network interfaces 406 may provide wireless communication via one or more transmitters/transmit antennas and one or more receivers/receive antennas. In an embodiment, the processing unit 402 is coupled to a local-area network 422 or a wide-area network for data processing and communications with remote devices, such as other processing units, the Internet, remote storage facilities, or the like.
Continuing the embodiment of
The virtual desktop server transmits application frame 610 and desktop frame 620 to a client for decoding, compositing, and display. Composite frame 640 is a composite of application frame 610 and desktop frame 620. Composite frame 640 includes an application window 650 that includes the graphics content of application frame 610.
While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications and combinations of the illustrative embodiments, as well as other embodiments of the invention, will be apparent to persons skilled in the art upon reference to the description. It is therefore intended that the appended claims encompass any such modifications or embodiments.