{'fraction_non_alphanumeric': 0.0260347129506008, 'fraction_numerical': 0.0, 'mean_word_length': 5.2719665271966525, '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}}
User-level Process towards Exascale Systems

The process oversubscription, which binds multiple parallel processes to one CPU core, can hide the communication latency and reduce CPU idle time. However, the lightweight OS kernels for Exascale systems may no longer support OS task scheduling. Without OS task scheduling, only one parallel process per CPU core is allowed, and then the process oversubscription is impossible. Even if the OS task scheduling is supported, the overhead of the context switch between parallel processes decreases the application performance and prevents the process oversubscription from being utilized. By assigning a role of a parallel process to a user-level thread, high-performance process oversubscription can be achieved without OS task scheduling. However, the process oversubscription utilizing the user-level thread dramatically changes the programming model of the parallel application. In this paper, we propose user-level process. The user-level process is a ”process”, which can be scheduled in the user-space. The user-level process has the beneficial features of the user-level thread. Meanwhile, it has its own program code and data like a traditional process. By assigning a role of a parallel process to an user-level process, high-performance process oversubscription can be achieved without OS task scheduling. Moreover, the process oversubscription utilizing the user-level process does not change the programming model of the parallel application.