Overview of Keys to Scalability

The first thing that really matters in achieving scalability is having abundant parallelism in an application. Games do have abundant parallelism. At least 60 times per second, everything could change and need to be recomputed. And with relatively few dependencies, it could all be computed in parallel. So, we describe the general places to look to avoid losing performance. Recalling Amdahl’s Law (Chapter 2), the speedup can decrease rapidly with small performance losses.

One thing to be cautious of in highly parallel applications is that to get computations to run in parallel, you may need to add some extra computations. You have to measure performance carefully to make sure that any added computation is not slowing down the serial computation, giving extra credit for making the game faster. We will identify added computation shortly.

The second thing that really matters is that the overhead of threading on a multi-core processor stays low. Three dimensions must be reviewed:

  • Task setup and scheduling

  • Synchronization

  • Cache and shared memory efficiency

These three are largely orthogonal issues. You can attack each one. Conversely, improving the program structure strategically, you can improve more than one at a time. For these three areas a qualitative four-point rating of importance is given. To give you an idea, there will be comments on overhead, characterized from not-good (1 out of 4 on the overhead scale), to bad (2), to terrible (3), to worst (4). ...

Get Intel Threading Building Blocks now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.