Graphics On Demand (G.O.D.)

Year 2012. Cloud based high load solution for on-demand provisioning of "heavy" applications.

In 2010 there was no corporate or personal tool to stream "heavy" applications with OpenGL or DirectX requirements, to be clear for everybody - no way to stream Computer Games. So CAD software and other engineering systems were left overboard by the VDI solutions - that was the main reason to bring this project in life.

Description

Games. Main idea was to deliver ANY application to the user using web browser. Make a low-end PC to run "heavy" CAD software or even latest games. Computer games are the perfect example of "heavy" applications, that is why they were used to test the system on all stages. Upon launch games deliver constant load on server and client sides due to non-stop animation. So using games allows to test everything - codecs, data transmission mechanism, decoders and overall load. Name of the projects evolved to "Games On Demand" or "G.O.D." acronym during implementation.

GPU. Key point of implementing the SaaS (Software-as-a-Service) model was not to make a constant 1-to-1 matching of the client and virtual host with dedicated GPU. Key point was to make a scalable solution which allows to SHARE ONE GPU between a number of users - so we can manage the service loads very nicely without DOS (Deny Of Service) for users due to oversell. This point would allow the service go to B2C market and provide SaaS services to millions of people. In corporate infrastructure we could use 1-to-1 matching for provisioning of better sustainability, but for real B2C market it was impossible.

Situation. At the 2010 all the PaaS, IaaS and SaaS solutions or global vendors like AWS, Digital Ocean and others were on very start of delivering vast amount of services we have nowadays. So there was a need to make customized hypervisor (or take existing one and modify it). XEN was the solution was selected due to its prevalence and stability. Market was introducing powerful GPU's from AMD and NVIDIA. NVIDIA was our choice due to more open core software like drivers, functioning architecture and sustainability on the market.

Competitors. On the B2C markets there were competitors with piecewise solutions and some "lions" like Citrix, XEN integrators. From "computer games" perspective there were some players just founded in USA like ONLIVE and Gaikai - these companies offered real good service for computer games in the browser delivery. We assumed that ONLIVE and Gaikai are our main competitors on the market - to have a dynamic revolutionary company from USA with potentially unlimited resources as a main competitor will keep us motivated like nothing else.

Challenge. Create custom hypervisor + modify drivers of the NVIDIA GPU's to gain the ability to share a single GPU between a number of virtual OS + Create a high load web portal for serving potentially millions of users.

Implementation

Architecture. Check the image below. Three main components client (web browser), web service "engine" and web portal, virtual private cloud with customized hypervisor with GPU sharing technology, On each virtual OS some customized drivers and other components including AV (audio-video) codecs. GPU sharing was done with some DirectX magic on the operating system level.

Data transmission. For delivering HD quality stream we reached the goal of 10 mbit/s as an OnLive. Managed to adopt H.264 AV codec to our needs. Sometime stream was a little broken for a second due to packet loss, but we were ready to make it better with FEC (Forward Error Correction) on UDP adoption, i-frame and p-frame parameters and other means were possible. 99% of time spent streaming was nice.

Java. We used a special Java applet to deliver a cross-OS solution for web browsers. There was a native Windows OS client available also, we used it for test purposes.

Results. We delivered a service for provisioning "heavy" applications to the web browsers using video streaming, so it was possible to use service even on weak computers or some smartphones. The best way to show our results is to demonstrate the service. No online servers launched nowadays, but please be happy to watch these videos with demo. First video is example of G.O.D. service usage and second comparison with OnLive on the same PC at the same time

Concerns. As a project was ready to roll out like a business our competitors showed some interesting fats. Onlive and Gaikai slowed their pace of growing like reached the market limit or by some other reason. We tried to analize it, but it was a lack of information open on the web. So we decided to wait some months before lauching live business or wait for a strong partner.

What's next?

What was going on? Market is not ready? Moore's law is coming to the limits of physics? Our competitors got struggle with loosing clients. If companies from CA USA could not push the market nor we can make it, we really do not have enough resources to push the market. Talking about computer games and game publishers like Steam, Battle.net ecosystem, Sony and others. They slowly captured the market of computer games with their PaaS solutions. It was wierd from my point of view.

Hardware part. NVIDIA announced GRID solution in 2012. GRID is a corporate level GPU cluster which can be shared by some means for complex tasks. Key word "shared", so NVIDIA made a software with functionality we developed. Claiming "corporate" level of quality means they devoted huge amount of resources for making it running clear. With this hardware from NVIDIA we could change the architecture of the service and make even better in terms of power consumption and overall performance.

Highlights

Some pictures of creation process