{'fraction_non_alphanumeric': 0.022376132125732553, 'fraction_numerical': 0.0, 'mean_word_length': 5.589473684210526, '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}}
A dynamic processor allocation policy for multiprogrammed shared-memory multiprocessors

We propose and evaluate empirically the performance of a dynamic processor-scheduling policy for multiprogrammed shared-memory multiprocessors. The policy is dynamic in that it reallocates processors from one parallel job to another based on the currently realized parallelism of those jobs. The policy is suitable for implementation in production systems in that:
—It interacts well with very efficient user-level thread packages, leaving to them many low-level thread operations that do not require kernel intervention.
—It deals with thread blocking due to user I/O and page faults.
—It ensures fairness in delivering resources to jobs.
—Its performance, measured in terms of average job response time, is superior to that of previously proposed schedulers, including those implemented in existing systems.
It provides good performance to very short, sequential (e.g., interactive) requests.
We have evaluated our scheduler and compared it to alternatives using a set of prototype implementations running on a Sequent Symmetry multiprocessor. Using a number of parallel applications with distinct qualitative behaviors, we have both evaluated the policies according to the major criterion of overall performance and examined a number of more general policy issues, including the advantage of “space sharing” over “time sharing” the processors of a multiprocessor, and the importance of cooperation between the kernel and the application in reallocating processors between jobs. We have also compared the policies according to other criteia important in real implementations, in particular, fairness and respone time to short, sequential requests. We conclude that a combination of performance and implementation considerations makes a compelling case for our dynamic scheduling policy.