PACMan: Coordinated Memory Caching for Parallel Jobs

USENIX NSDI |

Data-intensive analytics on large clusters is important for modern Internet services. As machines in these clusters have large memories, in-memory caching of inputs is an ešffective way to speed up these analytics jobs. The key challenge, however, is that these jobs run multiple tasks in parallel and a job is sped up only when inputs of all such parallel tasks are cached. Indeed, a single task whose input is not cached can slow down the entire job. To meet this “all-or-nothing” property, we have built PACMan, a caching service that coordinates access to the distributed caches. is coordination is essential to improve job completion times and cluster effi›ciency. To this end, we have implemented two cache replacement policies on top of PACMan’s coordinated infrastructure–LIFE that minimizes average completion time by evicting large incomplete inputs, and LFU-F that maximizes cluster effi›ciency by evicting less frequently accessed inputs. Evaluations on production workloads from Facebook andŸ Bing show that PACMan reduces average completion time of jobs by 53% and 51% (small interactive jobs improve by 77%), and improves e›fficiency of the cluster by 47% and 54%, respectively.