Hill, James H.Meruga, Sai Pavan KumarDurresi, ArjanZheng, Jiang Yu2023-08-312023-08-312023-05https://hdl.handle.net/1805/35280Indiana University-Purdue University Indianapolis (IUPUI)This thesis investigates the overhead added by reservoir sampling algorithm at different levels of granularity in real-time instrumentation of a distributed software systems. Firstly, this thesis not only discusses the inconsistencies found in the implementation of the reservoir sampling pintool in paper [ 1 ] but also provides the correct implementation. Secondly, this thesis provides the design and implementation of pintools for different level of granularities i.e., thread level, image level and routine level. Additionally, we provide quantitative comparison of performance for different sampling techniques (including reservoir sampling) at different levels of granularity. Based on the insights obtained from the empirical results, to enable real time instrumentation, we need to scale and manage the resources in the best way possible. To scale the reservoir sampling algorithm on a real time software system we integrate the traditional bin packing approach with the instrumentation in such a way that there is a decrease in the memory usage and improve the performance. The results of this research show that percentage difference between overhead added by Reservoir and Constant Sampling at a Image level granularity is 1.74%, at a Routine level granularity is 0.3% percent, at a Thread level granularity is 0.035%. Additionally, when we use bin packing technique along with reservoir sampling it normalizes the memory usage/performance runtime for Reservoir Sampling across multiple threads and different system visibility levels.en-USReservoir samplingBin packingSoftware instrumentationEnabling Real Time Instrumentation Using Reservoir Sampling and BinpackingThesis