Modern Microprocessors like the Intel Pentium Series offer special registers to count specific events like cache accesses or floating point operations. With these it is easier to determine why an application has a bad performance in some occasions. This is a precondition for a later optimization.
In a previous semester project a library has been implemented which permits easy access to these performance counting registers from programs. Although the library is easy to use and offers a uniform interface under Linux and Windows NT, it unfortunately allows the monitoring of just a single processor, even when the PC has two processors inside.
In this project, we have implemented an extention of this library in order to make the independent monitoring of multiple processors possible. Another new feature of the library is the possibility to monitor a specific process. This has involved changes in the library, and inside the kernel. We have investigated and implemented the required changes. Once the library has been extended, we have validated the new tool by means of some performance measurements.