Code and Tools


Using a VNC session allows you to use your Unix desktop from any remote client, Unix or Windows. This is very convenient, because you can log off your working system without killing your shells and closing your applications. Learn how to configure and use your own VNC server.


Simics is a hardware simulator used for research in computer architecture and systems. SFU has a Simics license, so you can begin using it right away!

Performance Monitoring

You can monitor performance on Solaris using cputrack, a performance monitoring tool that runs outside your process or via the instrumentation of your program.

Cputrack has a small performance overhead (I measured about 3% on Sparc T2000 when samples were taken every second).

The overhead could be reduced if you instrument your program to measure performance via cpc library. (Click here for an example code counting data cache misses. To compile this code, type: "cc -o trycpc trycpc.c -lcpc". This will work on Solaris10/Niagara only.

If you want to do fancy performance instrumentation, such as taking a sample ever N instructions, you will also need to do your own instrumentation. This code sample shows how to sample counters at instruction-based intervals. (Thanks to Hossein Maserrat for the sample.)

On Linux/x86 performance counters can be sampled using perfmon2 library. Here are instructions on how to install the library and the required kernel patches. We've tried unsuccessfully to install the patches on Ubuntu. On Fedora the installation succeeded.

Binding threads/processes to processors

When you run experiments, you'd often want to bind a thread or a process to a particular processor, core or a thread context. Here is the explanation of how this can be done along with some code samples.

© Copyright 2007 Simon Fraser University