Concurrency is a programming tool that is widely used in applications.Concurrent user-level threadscan be used to structure the execution of a program in a uniprocessor environment and/or speed up itsexecution in a multiprocessor setting.Unfortunately, threads may interact with each other inunpredictable ways, often leading to performance problems that are nonexistent in the sequentialdomain.
A profiler can be used to help locate performance problems in sequential and concurrent programs.Aprofiler is a tool that monitors, analyzes, and visualizes the execution performance of a program tohelp users verify its expected behaviour, and locate its bottlenecks and hotspots.One of theimportant tools a profiler has at its disposal is a set of hardware counters, which are specializedCPU registers that count the occurrences of hardware events as a program executes.Hardware-eventcounts provide extremely precise insight into the execution behaviour of a program, and can be usedto pinpoint portions of code where performance is suboptimal.
This thesis describes the design and implementation of µProfiler, which is a profiler forsequential and concurrent programs written in a concurrent dialect of the C++ programming languagecalled µC++.µC++ offers user-level concurrency in a uniprocessor or multiprocessorshared-memory environment.A new architecture-abstraction layer is developed, which allowsµProfiler to access hardware counters on multiple CPU types.As well, two new profiling metricsare presented, which use the architecture-abstraction layer to gather hardware-event counts forµC++ programs.These metrics offer performance information about µC++ programs that isunavailable by any other means.
【 预 览 】
附件列表
Files
Size
Format
View
Profiling Concurrent Programs Using Hardware Counters