To debug and optimize a system, it is necessary to know what is going on inside. Goal of this project is to design and implement a framework for profiling Minix and to export data collected in various parts of the system to the user. Currently, we can statistically profile Minix on a single CPU. It needs to be extended to SMP. However, this just a single data point. It is necessary to know what components are communicating, how often and to log selected communication. For low level optimizations, it is extremely important to know the precise CPU load and to retrieve information from the CPUs by the means of performance counters, for instance, about stall cycles, misses in various types of caches, TLB misses, etc. Due to the distributed nature of a multiserver system, this project presents many technical challenges. Retrieving the information is just the first step. Using the information to identify bottlenecks and to propose solutions to remove them is even more important.