“Workload Characterization of a First Person Shooter” Luka Spoljaric Jeff Kwiat
The Problem Problem: Today’s games consume enormous amounts of CPU resources. –Complex graphics and faster movement require greater rendering speeds Can anything be done about this??
Solution We must form a better understanding of the workload generated by one these games –Increase efficiency within the game –Relieve the machine of excess burden to allow other processes more CPU resources
Presentation Overview Introduction to Games Methodology Data Analysis Implications, Conclusions, and Future Research
Introduction Several genres of video games –First Person Shooter Fast-paced, graphically enhanced Focus of this presentation –Role-Playing Games (RPGs) Lower graphics and slower play –Board Games Just plain boring
Methodology Hardware TLAB setup –Dell Dimension 4100 –800 MHz Pentium III processor –256 MB DRAM –Video Card: NVIDIA_GLX Software –Instrumented version of Linux Doom –Running on Redhat Linux release 6.2
Testing Phase 20 real-world tests were conducted using the Doom instrumentation Each run lasted for 180 seconds Each player started at the same point in the game –Shareware version - “Knee-deep in the Dead” Skill level was set to “Ultimate Violence” –Player could interact with more enemies
Doom Instrumentation Incoming Data (3 Blocks) –Doom Loop wraps all of these –GetEvents() X Windows events Doom Events –ProcessEvents() Process Doom Events –DisplayEvents() Update Sounds Display Submit Sounds
Task Sizes Represent the amount of CPU time needed to perform a specific task. We measured task sizes of each event block: –GetEvents() –ProcessEvents() –DisplayEvents Empty Tasks Blocks where no events occurred –~98.5% !!
GetEvents() Block Task Size –With empty tasks Mean: seconds STD: seconds Range: 0.1 – 0.4 seconds –Without empty tasks Mean: seconds STD: seconds Range: 0.1 – 0.4 seconds
Task Sizes With Empty Tasks Many cycles without events
Task Sizes Without Empty Tasks
Inter-arrival Times Inter-arrival times show multi-modal distributions Divided data into separate bins (short intervals and long intervals) Plotted each separately to present more effectively
GetEvents() Block Inter-arrival times –Mean: –STD: –Distribution: Tri-modal Distribution STD > Mean!! – Relates to multi- modal distribution
Inter-arrival Times vs. Percent
Inter-arrival Times (Short)
Inter-arrival Times (Long)
ProcessEvents() Block Task Size –With empty tasks Mean: STD: –Without empty task Mean: STD:
Task Sizes with Empty Tasks
Task Sizes without Empty Tasks
ProcessEvents() Inter-arrival times –Mean: s –STD: s –Distribution: Multi-Modal distribution Longer intervals are more popular than in the GetEvents() blocks
Inter-arrival Times vs. Percent
Inter-arrival Times (Short)
Inter-arrival Times (Long)
Display() Block Task Size –With empty tasks Mean: STD: –Without empty tasks Mean: STD:
Task Sizes with Empty Tasks
Task Sizes without Empty Tasks
Display() Block Inter-arrival Times –Mean: –STD: –Distribution: Multi-modal
Inter-arrival Times vs. Percent
Inter-arrival Times (Short)
Inter-arrival Times (Long)
Display() Events Event 1: “UpdateSounds”
Display() Events Event 2: “Display”
Display() Events Event 3: “SubmitSounds”
Future Work Extend workload characterization to other games (especially first person shooters) Participants with varying skill levels –Differences in task sizes –Differences in inter-arrival times Develop software to dynamically decide how much resources are necessary at a given point in the game
Conclusions The task sizes of event blocks range from 0.0 – 0.4 CPU seconds with a large number of empty tasks The inter-arrival times can be modeled as a multi-modal distribution
Thanks