{'fraction_non_alphanumeric': 0.017543859649122806, 'fraction_numerical': 0.007017543859649123, 'mean_word_length': 5.873493975903615, '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}}
Improving Performance and Energy through Multithreaded Program Scheduling

Multithreaded programs can deliver higher throughput than single-threaded programs on the chip multiprocessors that have become the industry standard. However, increasing numbers of threads may not improve performance when memory speed and bandwidth cannot increase proportionally with the number of cores. We investigate scaling properties of high-performance, multithreaded programs, and study how they can be scheduled concurrently on CMPs to provide both higher throughput and performance. By design, multithreaded programs should finish fastest by using the maximum number of threads, but we find results to the contrary. We derive analytic metrics and use local search heuristics for creating efficient multiprogrammed, multithreaded workload schedules. Our schedulesdividecoresamong programsbased on application scaling properties, achieving an average 19% performance gain over separately running programs at the maximum number of threads. In so doing, we reduce total energy consumption by 20%. We verify our approach via experiments on an AMD Phenom 9500.