THINC: A Virtual Display Architecture for Thin-Client Computing

Ricardo Baratto, Leonard Kim, Jason Nieh

Proceedings of the 20th ACM Symposium on Operating Systems Principles (SOSP 2005), Brighton, United Kingdom, October 23-26, 2005, pp. 277-290

Abstract

Rapid improvements in network bandwidth, cost, and ubiq- uity combined with the security hazards and high total cost of ownership of personal computers have created a growing market for thin-client computing. We introduce THINC, a virtual display architecture for high-performance thin-client computing in both LAN and WAN environments. THINC virtualizes the display at the device driver interface to trans- parently intercept application display commands and trans- late them into a few simple low-level commands that can be easily supported by widely used client hardware. THINC’s translation mechanism efficiently leverages display semantic information through novel optimizations such as offscreen drawing awareness, native video support, and server-side screen scaling. This is integrated with an update delivery ar- chitecture that uses shortest command first scheduling and non-blocking operation. THINC leverages existing display system functionality and works seamlessly with unmodified applications, window systems, and operating systems. We have implemented THINC in an X/Linux environ- ment and compared its performance against widely used commercial approaches, including Citrix MetaFrame, Mi- crosoft RDP, GoToMyPC, X, NX, VNC, and Sun Ray. Our experimental results on web and audio/video applications demonstrate that THINC can provide up to 4.8 times faster web browsing performance and two orders of magnitude bet- ter audio/video performance. THINC is the only thin client capable of transparently playing full-screen video and au- dio at full frame rate in both LAN and WAN environments. Our results also show for the first time that thin clients can even provide good performance using remote clients located in other countries around the world.

PDF

sosp2005:fordist

Columbia University Department of Computer Science