1. A computer implemented method of gathering performance related data in a multiprocessing environment comprising: executing a program on a processor, wherein the program includes instrumentation code; writing, by the instrumentation code in the program, data to a shared memory in response to events occurring during execution of the program, wherein the data is generated during the execution of the program on the processor uses the shared memory to convey the data to a set of profiling processors; and collecting, by the set of profiling processors, the data in the shared memory written by the instrumentation code.