blink 3d display multiplexing for virtualized applications
play

Blink: 3D Display Multiplexing for Virtualized Applications Jacob - PowerPoint PPT Presentation

Outline Introduction History: The Tahoma Project Blink Evaluation Demo Blink: 3D Display Multiplexing for Virtualized Applications Jacob Gorm Hansen, University of Copenhagen January 20, 2006 Jacob Gorm Hansen, University of Copenhagen


  1. Outline Introduction History: The Tahoma Project Blink Evaluation Demo Blink: 3D Display Multiplexing for Virtualized Applications Jacob Gorm Hansen, University of Copenhagen January 20, 2006 Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  2. Outline Introduction History: The Tahoma Project Blink Evaluation Demo Introduction Motivation History: The Tahoma Project Sprites and Tiles Lessons Learned Blink GL in, GL out Communication Protocol JIT Compiler for OpenGL Stored Procedures Safety Checks Evaluation Compiler Graphics Throughput Demo Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  3. Outline Introduction History: The Tahoma Project Motivation Blink Evaluation Demo Why VM’s need Graphic Acceleration Virtual Machines are not only for data centers: ◮ VMWare now ships a free Firefox VM ◮ The Stanford Collective “Virtual Appliance” Application Bundles ◮ The CMU Internet Suspend Resume project ◮ Some distro installers need graphics ◮ We should be able to do better than VNC Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  4. Outline Introduction History: The Tahoma Project Sprites and Tiles Blink Lessons Learned Evaluation Demo Project Background ◮ Blink started as part of the “Tahoma” Browser OS ◮ First developed at the University of Washington, early 2005 ◮ For Tiled 2D graphics ◮ Idea: Treat 4kB pages as 32x32 tiles, track updates with MMU ◮ Backend draws tile-grids ( Sprites ) to the screen with OpenGL Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  5. Outline Introduction History: The Tahoma Project Sprites and Tiles Blink Lessons Learned Evaluation Demo Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  6. Outline Introduction History: The Tahoma Project Sprites and Tiles Blink Lessons Learned Evaluation Demo Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  7. Outline Introduction History: The Tahoma Project Sprites and Tiles Blink Lessons Learned Evaluation Demo Lessons Learned ◮ Modern GPU’s are extremely fast ◮ Tiles make update tracking easy, thus reduces bus traffic ◮ But most software expects a linear framebuffer ◮ And porting QT embedded to tiles was quite painful Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  8. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo A Natural Thought So... ◮ If we are going to output OpenGL anyway... ◮ Why not just take OpenGL as input as well? ◮ Read serialized from Client ◮ Interpret it ◮ Check that it’s safe ◮ Execute it ◮ (Then we can always do the tiling in the client if we want) Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  9. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo Serialize OpenGL in Client Turn: glBegin(n); into: op->code=GL_Begin; op->args[0]=n; Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  10. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo And Interpret it in the Server switch(op->code) { case GL_Begin: glBegin(op->args.integers[0]); break; ... } (turns in to a rather large switch() statement) Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  11. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo Versioned Shared Objects VSO array (1,17,sp) (2,5,tex) Machine Page Frames Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  12. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo Client Client Client Versioned Shared Objects Blink GL multiplexer GL Command Streams Vertex and Fragment Shaders Textures, Vertex Buffers GPU Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  13. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo A Couple of Improvements ◮ Turn the Interpreter into a JIT Compiler ◮ Add virtual registers, arithmetic, conditionals ◮ Call client code as Stored Procedure callbacks ◮ Results: Native speed asynchronous execution Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  14. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo List of Callbacks Callback Name Executed init() At first display update() On client VM request reshape() On window move or resize redraw() For each display On user input input() Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  15. Outline GL in, GL out Introduction Communication Protocol History: The Tahoma Project JIT Compiler for OpenGL Blink Stored Procedures Evaluation Safety Checks Demo Static Verification Safety: ◮ We need to check certain properties during compilation... ◮ Not all callbacks are allowed to draw to screen ◮ Client should not exceed its scissor rectangle, or disable scissor Performance: ◮ Advance knowledge of client actions can also be used for optimizing display ◮ E.g. if client does not enable Z-buffer, there is no need to clear it first ◮ If client does not use transparency, we do not have to draw windows behind it Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  16. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo Evaluation Test Machine: ◮ 2GHz single-threaded Intel Pentium4 CPU ◮ 1024MB SDRAM ◮ 2+ years old ◮ ATI Radeon 9600SE 4xAGP graphics card with 128MB DDR RAM ($70). Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  17. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo JIT Performance Type of input #Instr. Compile Execute OpenGL-mix 8,034 102 (41) cpi 41 cpi Arith-mix 8,192 99 (55) cpi 50 cpi Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  18. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo Quality of JIT’ed Code Scenario Execute OpenGL-mix Native 552 cpi OpenGL-mix Blink 554 cpi OpenGL-mix Blink + JIT 656 cpi Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  19. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  20. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo MPlayer VM’s 0.11 Update and Redraw intervals Rate for redraw() 0.1 Rate for update() 0.09 0.08 Update rate (s) 0.07 0.06 0.05 0.04 0.03 0.02 2 4 6 8 10 12 Number of MPlayer VMs Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  21. Outline Introduction History: The Tahoma Project Compiler Blink Graphics Throughput Evaluation Demo Gears VM’s 0.055 Screen redraw rate GearsBSP 0.05 GearsSwitch 0.045 0.04 Update rate (s) 0.035 0.03 0.025 0.02 0.015 5 10 15 20 25 30 35 Number of GLGears VMs Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

  22. Outline Introduction History: The Tahoma Project Blink Evaluation Demo Demo Linux Linux Linux BlinkGL multiplexer BlinkGL Client BlinkGL Client + + BlinkGL library BlinkGL library OpenGL shared libraries ATI fglrx BlinkGL BlinkGL driver module driver module driver module Xen Jacob Gorm Hansen, University of Copenhagen Blink: 3D Display Multiplexing for Virtualized Applications

Recommend


More recommend