{'fraction_non_alphanumeric': 0.01456726649528706, 'fraction_numerical': 0.0, 'mean_word_length': 5.5251396648044695, '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 method and framework for fetching software runtime state

Software runtime state provides rich information to do various analysis of the system. However, the current runtime monitoring techniques entangle state fetching logic and corresponding processing logic, which limits the use of the state information and doesn't support information synthesizing either. We propose a runtime state fetching method which separates them. We designed a State Fetching Description language (SFDL) to describe state monitoring requirement, and implemented a compiling framework to compile the SFDL into monitor probes, gather runtime state information and store them in a general form for future use. Such design separates the state fetching logic from information processing logic, liberates the runtime state information from specific usage and makes it possible to synthesize runtime state information which is important for distributed system to get the overall state. In the end, we applied our approach to performance tuning on a distributed system. Based on the obtained detailed running state, we are able to identify some performance bottlenecks and improve the software.