Virtualization and cloud computing has further increased the relevance of remote desktopping. Often, a server is implemented as a virtual machine (VM) and a remote desktopping client is used to access it. Another promising cloud computing paradigm, called ``Virtual Desktop Infrastructure'' (VDI), advocates running user desktops as VMs on a consolidated server and allows user access through remote desktopping tools. VDI has manageability, security, and cost advantages over traditional desktop computing, and improvements in remote desktopping directly impact the practicability of VDI.
All current remote desktopping tools work by streaming the display from the remote server to the user's client computer. The network bandwidth requirement of this display stream is usually the Achilles' heel of these tools. Although these tools use image/video compression, viewing high resolution videos or playing graphics-intensive games over a remote desktopping session is often impractical, due to network bandwidth constraints. Further, these tools require significant CPU usage at the server to compress and stream the display buffer. Our work alleviates these limitations.
We optimize remote desktopping tools to consume less bandwidth and server-side CPU while accessing a virtual remote server (i.e., the remote server is running as a VM) at the expense of higher client-side CPU consumption. (In Section 6, we discuss some remote desktopping applications where this tradeoff is favourable). We propose the use of VM Record/Replay technology to achieve this objective. In our scheme, instead of streaming the screen of the server, we stream the state of the server to client. The state of the server is captured using VM Record/Replay technology and consists of an initial snapshot and a record log.
To implement remote desktopping using VM record/replay, the server's hypervisor begins recording the state of the server VM by snapshotting it, and then continuously generates a record log. The client's hypervisor replays the server VM using its initial snapshot and the generated record log. The initial snapshot is made available to the client through demand paging over network. The generated record log is streamed continuously from server to client. This allows the client to reconstruct server's state (and hence its screen) continuously over time. All keyboard/mouse input at the client is simulated at the server to provide the illusion of a remote desktopping session.
The aforementioned mechanism is useful because for many important applications, the size of the streamed record log (including the partial transfer of the initial snapshot using demand paging) is often less than the size of the streamed screen contents. In this paper, we demonstrate this (somewhat counter-intuitive) result through many experiments.
Our work provides evidence of the practicability of using VM record/replay technology to reduce network bandwidth consumption and server-side CPU usage of remote desktopping tools. We also show many practical situations where this optimization can result in significant performance/usability improvements. We have implemented our techniques in a tool based on Qemu/KVM [6] and VNC [11]. We achieve up to 9x bandwidth improvements and 56% improvement in server's CPU utilization over current tools for popular applications, while consuming 30% more CPU at the client. We think this is a welcome tradeoff in most cases.
The paper is organized as follows: Section 2 provides background on streaming VM record/replay and discusses our remote desktopping scheme, Section 3 discusses the challenges in our design and their solutions, Section 4 discusses our implementation, Section 5 discusses our experiments and results, Section 6 discusses the applications of our approach, Section 7 discusses related work, and Section 8 concludes.
sbansal 2014-01-22