This is a framework for profiling systemtap scripts and the
underlying runtime functions.

To try the tests, first build the "itest" driver.
> make

Then try out some of the example tests.
./run_bench
./stap_bench
./print_bench

You will need ruby installed. "yum install ruby" or "up2date ruby" to get it.


HOW IT WORKS

"itest"  by default calls getuid() 2 million times and
reports the time in nanoseconds per call. It can divide the work 
across a number of threads if requested.

> ./itest --help
Usage ./itest [num_threads] [total_iterations]
./itest will call sys_getuid() total_iterations [default 2,000,000]
times divided across num_threads [default 1].

getuid() is used because it is an existing system call with very little
overhead and is not often used. Any background calls going on in the system
will not have measurable impact compared to the millions of calls from itest.

bench.rb is a Ruby test class that runs itest without any kprobes then with kprobes.
It reports on the additional overhead it measures.

To create a test object, you do either
>test = Bench.new("description") OR
>test = Stapbench.new("description")

"test" is a variable name that will be your object.

"Bench" is a class for raw kprobes. It is useful for measuring 
runtime function performance or kprobe overhead.

"Stapbench" is a systemtap test class. You probably want to use it.

Next, give the class some code. This is the code that will be executed 
every time sys_getuid() is hit. 

>test.code = 'printf("Hello World\n")'

Then run it and print the results.
>test.run
>test.print

There are some options. Set these before running the test.

>test.outfile="/dev/null"
This will write discard any output. This is useful to measure the
transport performance because output goes to userspace but is not
written to disk.

> test.trans=BULK
Use bulk transport.  Default is STREAM

---- FILES ----
a.st - sample script test file
b.st - sample script test file

itest.c - used by tests. Type "make" to build

Makefile - makefile for itest

run_bench - test driver with some test scripts. Tests may
be supplied in files (as in a.st and b.st) or in strings, as
in this example.

stap_bench - test driver that tests all files ending in ".st"

bench.rb - bench classes used by drivers.

results.txt - Some results of "run_bench" on different machines.
