csatblogspotdotcom

Monday, April 14, 2008

读《Blink: 3D Display Multiplexing for Virtualized Applications》[1]

这篇文章主要介绍了作者研究的针对虚拟化应用的3D显示的多路复用技术。他们开发了一个虚拟机的显示系统:Blink。该系统比传统的C/S模式所需的上下文切换次数要少,能消除冗余的图像缓存的复制与清空。同时Blink也比直接使用物理显卡的设备更安全。

Blink不允许客户端直接操作物理的网卡设备,而是给每个客户端一个虚拟处理器VPVirtual Processor),客户端可以对它进行编程。最后BlinkJIT编译技术和对VP程序的简单静态分析,把它们进行复合。

为了减小开销,Blink使用了Blink存储过程。与运行在GPU上的显示列表不同,一个Blink存储过程就是一个运行在显示服务端CPU上的BlinkGL程序。存储过程就是一系列OpenGL命令,每条命令都包括一个操作码和一个参数集。Blink服务端包括一个JITJust In Time)编译器,这个即时编译器的作用就是把BlinkGL转换为CPU机器码。这一过程很快,因为BlinkGL很简单。

OpenGL来共享显示器有这样一个坏处:针对每一个更新,整个显示器上的图像都要重画。而Blink可以在一定程度上避免这个问题:每一个客户端只能对屏幕的一个子区域进行操作,在规定的区域之外,客户端是无法进行操作的。这样就可以在原来的基础上对系统性能进行提升。



Blink运行在Xen之上。Blink server端运行在Domain0上,它直接操作物理显卡,Blink server实质上是一个普通的OpenGL应用程序;Blink客户端运行在Domain U上,由Blink server上的BlinkGL复用器合成。

相应的性能测试表明,在同样的性能下Blink能支持更多的VM,而在同样的条件下Blink的性能明显好。

最后得出的结论是虚拟机间好的隔离性并非一定要牺牲图形图像处理性能。用JIT编译技术和共享内存协议,服务端和客户端的通信开销减少了。最后让多个应用程序在同一个屏幕上显示而不需要off-screen缓冲区。

参考文献

  1. J. G. Hansen. Blink: 3d display multiplexing for virtualized applications. Technical Report 06/06, DIKU – University of Copenhagen, Jan. 2006. http://www.diku.dk/jacobg/pubs/blink-techreport.pdf.

Labels:

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home