{'fraction_non_alphanumeric': 0.023237800154918668, 'fraction_numerical': 0.0023237800154918666, 'mean_word_length': 5.492462311557789, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Addressing Memory Pressure in Data-intensive Parallel Programs via Container Based Virtualization

Out-of-memory (OOM) errors and excessive garbage collection (GC) activities are common issues in dataintensive parallel programs, which cause not only poor performance but also execution failures. A recent study [1] proposed a new programming model to address the memory pressure in data-parallel programs. The proposed iTask proactively reclaims memory to avoid OOM errors and reduce GC time. Although effective, it requires extensive changes to the parallel program.In this paper, we show that lightweight virtualization, such as OS containers, can address the memory pressure in data-parallel programs with much less effort. Virtualization provides two key benefits: 1) tasks running in a container can set a large heap size to avoid OOM errors without worrying about thrashing the physical host; 2) tasks that are under memory pressure and incur significant GC activities can be temporarily “suspended” by depriving the hosting containers of resources, and can be resumed later when other tasks complete and release their resources. Experimental results using Docker containers and Hadoop benchmarks show that this simple approach effectively avoids OOM errors and suppresses wasteful GC.