blob: 5a6ce30241e2d2f72b5cce5f8282cc030b1c669d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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.
|