Hill, James H.Upp, Brandon E.Tuceryan, MihranRaje, Rajeev R.2019-07-292019-07-292019-08https://hdl.handle.net/1805/19977http://dx.doi.org/10.7912/C2/2370Indiana University-Purdue University Indianapolis (IUPUI)This thesis investigates techniques for improving real-time software instrumentation techniques of software systems. In particular, this thesis investigates two aspects of this real-time software instrumentation. First, this thesis investigates techniques for achieving different levels of visibility (i.e., ensuring all parts of a system are represented, or visible, in final results) into a software system without compromising software system performance. Secondly, this thesis investigates how using multi-core computing can be used to further reduce instrumentation overhead. The results of this research show that reservoir sampling can be used to reduce instrumentation overhead. Reservoir sampling at a rate of 20%, combined with parallelized disk I/O, added 34.1% additional overhead on a four-core machine, and only 9.9% additional overhead on a sixty-four core machine while also providing the desired system visibility. Additionally, this work can be used to further improve the performance of real-time distributed software instrumentation.en-USAttribution 3.0 United StatesComputer SoftwareSoftware InstrumentationSystem InstrumentationInstrumentationPinPin++Computer Program Instrumentation Using Reservoir Sampling & Pin++Thesis