dpdk: accelerate remote rendering of cloud gaming · 2019-07-09 · games to pcs, consoles, and...

18
DPDK: Accelerate Remote Rendering of Cloud Gaming Jingjing Wu & Owen Zhang - Intel DPDK Summit - China - 2019

Upload: others

Post on 31-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

DPDK: Accelerate Remote Rendering of

Cloud Gaming

Jingjing Wu & Owen Zhang - Intel

DPDK Summit - China - 2019

Page 2: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Agenda

Cloud Gaming Background

Data Path for remote rendering

Solution & work status

Future work

Page 3: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Background - Cloud Gaming

Cloud Gaming: A Fast-Evolving Ecosystem.

Streamed frames, files or commands from cloud/edge to device.

$1B business in 2017, projected to grow at 26%

1 Zion Market Research, “Cloud Gaming Market by Cloud Type (Public, Private, and

Hybrid), by Streaming Type (Video and File), and by Device (Smart Phones, Tablets, Gaming Consoles, and PCs): Global Industry Perspective, Comprehensive Analysis, and

Forecast, 2018—2026”

Here’s the evidence Amazon is building a cloud gaming service

The VergeJan 10, 2019

Google’s Project Stream

is a working preview of

the future of game

streaming The VergeOct 8, 2018

Microsoft’s xCloudservice streams Xbox games to PCs, consoles, and mobile devices

The VergeOct 8, 2018

Page 4: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Background - VCA 2 introduction

• Add-in card for Intel® Xeon Processor-based Server Systems.

• Powered by the Intel® Xeon Processor E3-1500 v5 with Intel® Iris Pro Graphics

P580 and Intel® Quick Sync Video

• Outstanding TCO for media transcoding & rendering applications.

• Learn more: intel.com/accelerators

Page 5: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Android Cloud Gaming Overview

E5 Server

......+

Cloud Gaming Services

deployed in

Data Center or Edge Server

VCA2 (3x E3 SKL)or

Future GPU card

Video Stream

User Input E5 Server

Game Server in

DataCenterCommunication between

game clients and servers

End User : Easy to play new game Developer : Easy to make better game

Operator : Easy to gain more users

Page 6: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Software Stack

Client App

Media Player

Input

Android In Container (AIC)

Android Framework

Game App

Remote Render frontend

Stream server

Remote Render backend

Mesa(GLX +

OpenGL)

App

UMD

drm_drv

Linux Kernel

Intel I915 KMD

Client Device E5 Server in DataCenter or Edge Visual Cloud Acceleration Card -VCA2

VCA driver

Linux KernelVCA

drviver

......

Input

Video

Cmd stream

Video

Virtual machine

Page 7: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Characteristics of remote rendering data path

Game frame from Server to Accelerator Card

Video stream from Accelerator Card to Server

Stream-based socket-like interface

Isolate flow transaction between Server and Accelerator from data center networking

Scale to support mutil-VM

Last but not least - Performance obsessed

Page 8: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Stream type socket w/o IP

Android In Container (AIC)

Remote Render frontend

Stream server

Remote Render backend

App

Virtual machine

Graphic

Stream type Socket

VCA2 node

video

Socket Family Device IP

AF_INET PF passthrough N/A

AF_INET virtio_net Yes

AF_VSOCK virtio_vsock No

Device

Page 9: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Scale for multiple VMs

Device

Virtual machine

VCA2 node

DeviceDevice

Device

?

Socket Family Device IP Multi-VM

AF_INET PF passthrough N/A No

AF_INET virtio_net Yes Yes (Switch/Router)

AF_VSOCK virtio_vsock No Yes

Page 10: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Data Path solution

INTEL CONFIDENTIAL Doc #xxxxx

AF_VSOCK

Classic sockets API

QEMU+KVM compatible (virtio-vsock device)

Bi-directional between hypervisor and VMs (context id + port)

Lightweight transport layer

Page 11: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Data Path Traffic Flow

Game frame->video stream data path

1. IRR client receives game frame and push to VM kernel vsock to transmit.

2. User space driver who emulates virtiobackend ring Rx/Tx for virtio vsock, receives packet from VM vsock device.

3. Forwarding traffic between vhost user device and virtio vsock backend driver for VCA VOP vsock device.

4. User space driver who uses NTB to emulate virtio backend ring Rx/Tx for vca virtio vsock, sends packet to VOP device.

5. IRR server receives the render the frame and encoded into video streams using OpenGL, UMD and so on.

[VOP vsock control NTB and map remote resource according to designed ring format (virtio likely).]

DPDK

Kernel space

User Space

Host-E5

VM

User Space

Remote Render Server

Kernel space

User Space

AF_VSOCK

Virtio vsock driver

Android

Container

Remote Render Client

1

Kernel space

Vhost vsock PMD

Virtio vsock NTB PMD

VOP Vsock

VOP vsock driver

VCA2

2

virtio vsock dev

VOP device

r i n g

3

Memory mapping done by control path

5

4

AF_VSOCK

Page 12: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Workflow

1. Bring up VCA2 card, and configure the context ID for the node on card.

2. Set up DPDK environment as usual.

3. Start DPDK applications with two ports: ./examples/vsock_fwd -l 21-24 -n 4 --socket-mem 1024,1024 --vdev="net_vsock0,iface=/tmp/dpdk-vca0.sock,dequeue-zero-copy=1" --vdev="vop_user0,path=/dev/vop_virtio00,iface=vop"

4. Bring up VM with virtio vsock user: -chardev socket,id=vus0,path=/tmp/dpdk-vca.sock -device vhost-user-vsock-pci,chardev=vus0,id=vsock-pci0,guest-cid=8

5. Run applications/Iperf in VM and accelerator.

VM

User Space

AF_VSOCK

Container/Iperf

Kernel space

User SpaceAF_VSOCK

Virtio vsock driver

Container/Iperf

Kernel space

VOP vsock driver

VCA2

virtio vsock devVOP device

DPDK

Page 13: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Result

INTEL CONFIDENTIAL Doc #xxxxx

15x Games @ one node run successfully as expected

Page 14: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Future Work

INTEL CONFIDENTIAL Doc #xxxxx

Further Cloud Gaming stack integration and tuning

Optimization

Remote memory access optimization

Enlarger buffer to improve efficiency

Enable DMA/CBDMA for buffer moving

Zero-copy in receive side

Page 16: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Backup

Page 17: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Components (VM <->Host)

INTEL CONFIDENTIAL Doc #xxxxx

Qemu - vhost vsock user support.

DPDK - Polling mode driver of vhost vsock ring.

Tools - Enable AF_VSOCK on Iperf

DPDK app: Fwd without dropping

DPDK

Media IRR

Virtio vsock DevVM

…..

Kernel

User Space

Media IRR

AF_VSOCK

Virtio vsock driver

Vhost vsock PMD

Page 18: DPDK: Accelerate Remote Rendering of Cloud Gaming · 2019-07-09 · games to PCs, consoles, and mobile devices The Verge Oct 8, 2018. Background - VCA 2 introduction ... Remote Render

Components (Host <-> Accelerator)

Doc #xxxxx

DPDK

Host-E5

VCA2 AF_VSOCK

NTB PCIeVop vsock

IRR Server

DPDK

Polling mode driver of vop vsock ring based on NTB.

VCA kernel driver

Virtio vsock driver based on NTB (VCA2 side)

Interface provided user space to map NTB BAR and trigger event.

Virtio vsock NTB PMD

VOP vsock driver