Atomic quake: using transactional memory in an interactive mulitplayer game Server
Document typeConference report
Rights accessOpen Access
Transactional Memory (TM) is being studied widely as a new technique for synchronizing concurrent accesses to shared memory data structures for use in multi-core systems. Much of the initial work on TM has been evaluated using microbenchmarks and application kernels; it is not clear whether conclusions drawn from these workloads will apply to larger systems. In this work we make the first attempt to develop a large, complex, application that uses TM for all of its synchronization. We describe how we have taken an existing parallel implementation of the Quake game server and restructured it to use transactions. In doing so we have encountered examples where transactions simplify the structure of the program. We have also encountered cases where using transactions occludes the structure of the existing code. Compared with existing TM benchmarks, our workload exhibits non-block-structured transactions within which there are I/O operations and system call invocations. There are long and short running transactions (200– 1.3M cycles) with small and large read and write sets (a few bytes to 1.5MB). There are nested transactions reaching up to 9 levels at runtime. There are examples where error handling and recovery occurs inside transactions. There are also examples where data changes between being accessed transactionally and accessed nontransactionally. However, we did not see examples where the kind of access to one piece of data depended on the value of another.
CitationZyulkyarov, F. [et al.]. Atomic quake: using transactional memory in an interactive mulitplayer game Server. A: ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. "14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming". Raligh, North Carolina: 2009. p. 25-34.