Skip to content

ShareRender is a cloud gaming system that enables fine-grained resource sharing at the frame-level. Existing cloud gaming systems suffer from low GPU utilization in the virtualized environment. Moreover, GPU resources are scheduled in units of virtual machines (VMs) and this kind of coarse-grained scheduling at the VM-level fails to fully exploi…

License

Notifications You must be signed in to change notification settings

alanzw/sharerender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShareRender manual

ShareRender is a cloud gaming system that enables fine-grained resource sharing at the frame-level.

Existing cloud gaming systems suffer from low GPU utilization in the virtualized environment. Moreover, GPU resources are scheduled in units of virtual machines (VMs) and this kind of coarse-grained scheduling at the VM-level fails to fully exploit GPU processing capacity. ShareRender offloads graphics workloads within VMs directly to GPUs, bypassing GPU virtualization. For each game running in a VM, ShareRender starts a graphics wrapper to intercept frame rendering requests and assign them to render agents responsible for frame rendering on GPUs. Thanks to the flexible workload assignment among multiple render agents, ShareRender enables fine-grained resource sharing at the frame-level to significantly improve GPU utilization.

If you want to know more about ShareRender, please refer to our paper in Multimedia 2017. Wei Zhang, Xiaofei Liao, Peng Li, Hai Jin, Li Lin, "ShareRender: Bypassing GPU Virtualization to Enable Fine-grained Resource Sharing for Cloud Gaming". In Proceedings of ACM International Conference on Multimedia (MM'17), Mountain View, CA, 2017.

Set up

Prerequisites

DirectX SDK

Microsoft Visual Studio (c++) 2010 (If you want to quick start, you can install Microsoft Visual C++ 2010 Redistributable Package, http://www.microsoft.com/en-us/download/details.aspx?id=5555)

DirectX SDK 9.0 c (Recommended: DXSDK_Jun10 version, the version released in June 2010, http://www.microsoft.com/en-us/download/details.aspx?id=6812)

CUDA SDK

To use NVCUVENC encoding library, CUDA 6.0 is required. And for lastest GPU such maxwell, we can use NVENC instead.

Configuration

Add DirectX install path to System Environment as "DXSDK_DIR" and add CUDA 6.0 install path to "CUDA_PATH".

Build

Start to build the soluation in VS2010, if gets warnings about missing libraries, add them to linker input.

Quick Start

You can start with our pre-compiled exe files for Windows X86(with visual studio c++ 2010, the reason is that some other dependency library was compiled with VS2010, if using other version, you need to re-compile all libraries).

  1. you need to write the configure file which named gamemap.txt in default. The configure file includes exe file for game, the path, support D3D or not, the interception dll to use(use LogicServer.dll in default)

  2. install the compiled files, double click DebugCopyToBin.bat when use debug version and double click ReleaseCopyToBin.bat when use release version.

  3. copy all files in bin to game directory for simple(These files are dependecies, copy to game dirctory is the easiest way to make it work).

  4. Start DisManager.exe, which act as scheduler and accept the regiesteration of gameloader and render proxy.

  5. Start gameloader.exe with IP of DisManager in VM. Gameloader waill load game and inject LogicServer.dll to game process.

  6. Start RenderProxy.exe with IP of DisManager in any physic server.

  7. Start client with request of RTSP and rqeust of game. (e.g. client config/client.rel.conf rtsp:://127.0.0.1:8554/Trine )

  8. Some other functions is integrated to system for convenience to query performance data. Please contact author for detailed information.

Game test cases

SprillRitchie: http://sprill-ritchie-abenteuerliche-zeitreise.software.informer.com/1.0/

Shadowrun returns: http://harebrained-schemes.com/shadowrun/

CastleStorm: http://www.castlestormgame.com/

Trine: http://trine-thegame.com/site/

Unity Angry Bots: http://unity3d.com/showcase/live-demos#angrybots

ShareRender architecture

System Commparison

image

Graphic Task example

image

Retrieving Geometry Data

image

Context Sync

image

About

ShareRender is a cloud gaming system that enables fine-grained resource sharing at the frame-level. Existing cloud gaming systems suffer from low GPU utilization in the virtualized environment. Moreover, GPU resources are scheduled in units of virtual machines (VMs) and this kind of coarse-grained scheduling at the VM-level fails to fully exploi…

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages