{'fraction_non_alphanumeric': 0.02201524132091448, 'fraction_numerical': 0.0, 'mean_word_length': 5.545706371191136, '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 methodology for performance modeling of distributed systems based on client-server protocols

This dissertation is concerned with modeling the performance of distributed systems based on client-server protocols, focusing particularly on the performance of distributed file systems and the protocols upon which they are built. The framework developed in this dissertation consists of a methodology for decomposing a protocol or application into logically separate pieces, based on the natural boundaries between protocol layers, which can then be modeled independently (vertical decomposition), combined with a methodology for decomposing a network into physically separate pieces which can also be modeled independently (horizontal decomposition). 
This methodology is applied to the AFS distributed file system, producing a vertical decomposition into the physical/link layer, network layer, transport/RPC layer, and application layer. A tool is described which addresses link and network layer modeling of large scale networks made up of interconnected local networks, using the method of horizontal decomposition, making it possible to model the performance of large networks quickly. The application of this tool to a simple file transfer problem is described, and the results are compared to experimental measurements. The performance of transport layer mechanisms is investigated, focusing on the performance of AFS's RPC transport over low-speed and high-latency links, and some experimental results are presented. 
Three approaches to application layer modeling are presented. In the first, the load characteristics (packets/second, bits/packet) of the application are measured and used as input to lower layer models. This is useful for assessing the suitability of a network topology for supporting a known population using applications whose internal details may be unknown but whose characteristics have been measured. In the second, an application whose protocol on the network is known, but whose implementation on the client and server (end-systems) is not, is modeled using a combination of analytic results and measurement of end-system performance, based on lower layer modeling results. In the third, models of end-system performance of the application are combined with models of its network performance and models of lower-layer protocols.