This paper describes ThreadMon, a monitoring tool for improving the performance of multithreaded programs, and how we have used it to examine various aspects of the many-to-many (or two-level) threads implementation model. We run unmodified binary subject code, insert software probes to collect data, and analyze and present the results in real time on another machine. We show that the behavior of multithreaded programs, particularly those running on multiprocessors, often defies intuition when the many-to-many threads implementation model is used.
Bryan Cantrill, Thomas W. Doeppner Jr.