Automatic bottleneck detection and scaling in virtual time
Reena Nair · Spiral (Imperial College London) · 2020
This thesis addresses two aspects of parallel software performance engineering. The first concerns the automatic detection of bottlenecks in parallel Linux applications. We present GAPP, a profiler which identifies serialization bottlenecks by tracing context-switch events in the OS kernel. GAPP is extremely lightweight, requires no program instrumentation and works for a variety of serialization bottlenecks. GAPP has been evaluated using the Parsec3.0 benchmark suite and two large open-source projects: MySQL and Nektar++. The experiments show that GAPP is able to detect a wide range of performance issues, for example arising from synchronization primitives, busy-wait loops, memory operations, thread imbalance and resource contention. It is also able to pinpoint the exact lines of code in the application that correspond to the bottleneck. The second relates to bottleneck optimization. What performance gain can be expected if the bottleneck code, or any hardware resource associated with that code, were to be optimised? To support this type of ‘what-if’ experimentation, we present VIRBS, which simulates the effect of optimizing a particular section of code, by pausing other threads, whenever that code is executed – a form of virtual-time scaling, where real-time and virtual-time progress at different rates. The idea is similar to that used in the Coz framework [CB15]. Whilst Coz is samplebased, VIRBS works by statically instrumenting scaled functions to insert delays precisely whenever the bottleneck code is executed, and this can substantially reduce the time taken to conduct a ‘what-if’ experiment. In developing VIRBS, the objective has been to build and evaluate a prototype implementation that exhibits Coz-like capabilities, but with reduced overall cost. Experiments with VIRBS has exposed two weaknesses in Coz’s present implementation, one of which relates to inter-thread synchronization, and which is shared by the prototype implementation of VIRBS. These are described in detail and some potential solutions presented as part of future work.