Interrupt Latency Timer
Using Myrinet
Introduction
ITimer will time how long it takes for an interrupt to get serviced, from the point it
is first generated to the point where execution reaches the interrupt handler routine. A
myrinet card is used to generate the interrupt, so one
is obviously required to use this tool.
The concept is simple: the Myrinet Control Program (MCP) running on the NIC starts a timer and
immediately generates an interrupt. When the interrupt handler routine in the driver is
called, it tells the MCP that it got the interrupt through shared memory on the card. The
MCP then stops the timer and reports the latency back to the driver and the user.
Usage
The tool is currently only available for x86 and compatible machines running Linux. The first step is to
install a Myrinet card into a PCI slot on your machine. Then, download the two files below.
The first is the driver module and the second is a simple script to perform a few routine
installation tasks.
Place these files in the same directory. You will probably have to change the permissions
of the install script to make it executeable, so execute the command "chmod 700 ITIMER_INSTALL".
The module must be inserted by root, so do an "su" if you're not already root. Now, simply
type "./ITIMER_INSTALL". The interrupt timing routine is executed as soon as the MCP is loaded,
so you should see the results immediately. Just repeat the last command ("./ITIMER_INSTALL") to
run it again. If you want to remove the module when you're finished, type "/sbin/rmmod itimer"
(while still root).
Future Plans
A fully functional GM implementation, modified and developed by
Edgar León, was used as a basis for
construction, so a lot of extra functionality is still present. Future plans include
cutting out as much unnecessary functionality as possible, making it a much simpler and
smaller tool that only times interrupt latencies. During this downsizing, try to remove
most or all of the machine dependant code, so the tool can easily be run on all architectures.
Results
Riley Wilson