distributed video rendering using blender, virtualbox, and boinc. christopher j. reynolds

14
Distributed Video Rendering using Blender, VirtualBox, and BOINC. Christopher J. Reynolds. Centre for Parallel Computing, University of Westminster.

Upload: remy

Post on 05-Feb-2016

55 views

Category:

Documents


1 download

DESCRIPTION

Distributed Video Rendering using Blender, VirtualBox, and BOINC. Christopher J. Reynolds. Centre for Parallel Computing, University of Westminster. Material:. The general concept and motivations. Choosing a system virtualization technology. Interactions with the hypervisor. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Distributed Video Rendering using Blender, VirtualBox,and BOINC. Christopher J. Reynolds.Centre for Parallel Computing,University of Westminster.

Page 2: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Material:

• The general concept and motivations.

• Choosing a system virtualization technology.

• Interactions with the hypervisor.

• Final comments.

Page 3: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Background: University of Westminster

• Approx 1600 node Windows & BOINC based DG.

• Runs applications from Enabling Desktop Grids for E-Science (EDGeS).

• 20 node GPU cluster under construction to run further EDGeS/DEGISCO applications.

• For most of 2009 we ran a public video/animation rendering service on a dedicated cluster (~256 Nodes).

Page 4: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Blender: http://www.blender.org

• Rastorization based rendering of frames; a Bag of Tasks (BoT).

• Fits the DG model so move from cluster to DG.

• Uses Blender, a well known animation/image rendering suite.

• Q: What are Blender’s requirements? • A: Python.

• Q: What other considerations are required for a public service?• A: Python scripts can be embedded within Blender input files (Security)

• Q: How to address these issues?• A: Virtualization

Page 5: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Existing Virtualization Solutions

• Existing solutions use either process virtualization or system virtualization.

• Process virtualization (using Entropia VM) proposed by Calder et al [1] is tied to Windows as the host OS.

• VM Wrapper: Generic but more complex and incomplete (Windows Host Support).

• Marosi et al described proof of concept using QEMU based on features [2] .

• Q: QEMU/KQEMU now obsolete on Windows, so what next? • A: Look at latest feature set and choose something else for a

Lightweight solution.

Page 6: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

QEMU/KQEMU vs VirtualBox

Feature VirtualBox QEMU KQEMU

X86 guest only. Yes No Yes

Requires admin privileges to run.

No – Add user to allow execution of

VBox DCOM service.

No No

Requires admin to install.

Yes No Yes

CPU performance overhead (x86) [3]

20%(SP)10%(FP)

Huge (emulation) 100%(SP)30%(FP)

Supports disk overlay/cow images.

Yes Yes Yes

Guest to Host File I/O (Without Network)

Yes (Guest Additions)

No No

Monitor/Hypervisor interface.

COM Sockets Sockets

Windows support Yes Yes (Partial) Obsolete

Page 7: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Solution: A Lightweight VM Controller.

Host/DG Node

DG (BOINC) Server

BOINC Core Client

VM (Guest)

Disk image (guest OS), VM config file, inputs.

Instantiate VMand transfer

inputs

React to messages: suspend, resume,

abort

Transfer outputs

VM Controller (standard BOINC job)

Start

1

2

3

45

6

VBox Hypervisor

Transfer outputs

Page 8: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

VirtualBox Hypervisor/Monitor ControlVM Controller (C++ Boinc application)

• Win32 CreateProcess() or fork() to VboxManage cmdln tool.

• COM preferable.

(COM)

Page 9: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

VM Controller

• Two Threads.• Worker launches unzipper (lzma), prepares VM config files, creates I/O

shared directories, polls for Job completion.• Monitor thread deals with messages and VM control.

VM Controller (C++ Boinc application)

Page 10: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Worker Thread

Page 11: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Monitor Thread

Page 12: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

VM Worker Script: Blender

echo 15 > /proc/$$/oom_adjecho "Setting oom_adj to 15 for PID=$$"

case "$1" in start)

mkdir /mnt/sharemount -t vboxsf Shared /mnt/share

mkdir /mnt/share/Outputs

swapon /dev/sdaswapon /dev/sdb

START_FRAME=`cat /mnt/share/input.txt | head -1 `END_FRAME=`cat /mnt/share/input.txt | head -2 |tail -1 `

sudo –u blender_user sh -c "blender -b /mnt/share/input.blend -o /mnt/share/Outputs/Frame-# -F PNG -x 0 -s $START_FRAME -e $END_FRAME –a”

echo $? > /mnt/share/Outputs/blender_return.log

echo "Finished Rendering Application";;

Page 13: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

Further Comments

• We adhere to the “one VM per Workunit” model.

• Our BOINC user account has restricted permissions.

• This means VirtualBox.xml and MachineDefinition.xml are loaded from C:\Windows\system32\config\systemprofile\.VirtualBox

• Single xml file location restricts us to one WU per node.

• Proof of concept, though proposed roll out soon (late 2010).

Page 14: Distributed Video Rendering using Blender, VirtualBox, and BOINC.  Christopher J. Reynolds

References

[1] Calder, B., Chien, A., & Yang, J. W. D. (2005). The entropia virtual machine for desktop grids. In VEE ’05: Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments (pp. 186–196).

[2] Marosi, A., Kacsuk, P., Fedak, G., & Lodygensky, O. (2010). Sandboxing for Desktop Grids using Virtualization. In The 18th Euromicro International Conference on Parallel, Distributed and Network-Based Computing.

[3] P. Domingues and F. Araujo and L. Silva. (2009) Evaluating the performance and intrusiveness of virtual machines for desktop grid computing. In IPDPS '09:Proceedings of the 2009 IEEE International Symposium on Parallel & Distributed Processing.

Questions?