summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhunt <hunt>2005-07-28 17:33:09 +0000
committerhunt <hunt>2005-07-28 17:33:09 +0000
commit42ee08b55b2f7a12b26f2049d672a1b563f064a4 (patch)
tree080aa7516d0b19de5c606833f98444d252494f51
parent377b88310b59601c0d967c55bd6a46ec024dc2de (diff)
downloadsystemtap-steved-42ee08b55b2f7a12b26f2049d672a1b563f064a4.tar.gz
systemtap-steved-42ee08b55b2f7a12b26f2049d672a1b563f064a4.tar.xz
systemtap-steved-42ee08b55b2f7a12b26f2049d672a1b563f064a4.zip
2005-07-28 Martin Hunt <hunt@redhat.com>
* bench/ALL: Chnage to probe sys_getuid() and sys_getgid() because those aren't used by stpd, unlike sys_read() and sys_write().
-rw-r--r--runtime/probes/bench/README10
-rw-r--r--runtime/probes/bench/bench.c12
-rw-r--r--runtime/probes/bench/bench_io1.c16
-rw-r--r--runtime/probes/bench/bench_io2.c15
-rw-r--r--runtime/probes/bench/bench_multi.c36
-rw-r--r--runtime/probes/bench/bench_ret.c18
-rw-r--r--runtime/probes/bench/ttest.c24
7 files changed, 58 insertions, 73 deletions
diff --git a/runtime/probes/bench/README b/runtime/probes/bench/README
index 5eaded78..04801a74 100644
--- a/runtime/probes/bench/README
+++ b/runtime/probes/bench/README
@@ -1,15 +1,11 @@
This is a benchmark program for the SystemTap Runtime.
-It works by instrumenting sys_read() and sys_write(). It calls each a million
-times and times that. Then it puts an empty kprobe on one and jprobe on the
-other and times that. Subtracting the difference between the two runs gives
+It works by instrumenting sys_uid() and sys_gid(). It calls each a million
+times and measures how long it takes. Then it puts an empty kprobe on one and jprobe on the
+other and measures that. Subtracting the difference between the two runs gives
the kprobe and jprobe overhead. The process is then repeated for more
complicated probes.
-Any system has some background activity going on that will generate sys_read
-and sys_write calls. However, unless some major activity is going on, it
-should be statistically insignificant.
-
To Start:
1. Build the test program.
diff --git a/runtime/probes/bench/bench.c b/runtime/probes/bench/bench.c
index bbdc3170..cc0e81f6 100644
--- a/runtime/probes/bench/bench.c
+++ b/runtime/probes/bench/bench.c
@@ -7,28 +7,28 @@
MODULE_DESCRIPTION("SystemTap probe: bench");
MODULE_AUTHOR("Martin Hunt");
-asmlinkage ssize_t inst_sys_write (unsigned int fd, const char __user * buf, size_t count)
+asmlinkage ssize_t inst_sys_getgid (unsigned int fd, const char __user * buf, size_t count)
{
jprobe_return();
return 0;
}
-static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
static struct jprobe jp[] = {
{
- .kp.addr = (kprobe_opcode_t *)"sys_write",
- .entry = (kprobe_opcode_t *) inst_sys_write
+ .kp.addr = (kprobe_opcode_t *)"sys_getgid",
+ .entry = (kprobe_opcode_t *) inst_sys_getgid
},
};
static struct kprobe kp[] = {
{
- .addr = "sys_read",
- .pre_handler = inst_sys_read
+ .addr = "sys_getuid",
+ .pre_handler = inst_sys_getuid
}
};
diff --git a/runtime/probes/bench/bench_io1.c b/runtime/probes/bench/bench_io1.c
index a0a44d34..89be7f06 100644
--- a/runtime/probes/bench/bench_io1.c
+++ b/runtime/probes/bench/bench_io1.c
@@ -4,10 +4,10 @@
#include "runtime.h"
#include "probes.c"
-MODULE_DESCRIPTION("SystemTap probe: bench_io");
+MODULE_DESCRIPTION("SystemTap probe: bench_io1");
MODULE_AUTHOR("Martin Hunt");
-static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs)
{
/* print 100 chars */
_stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
@@ -15,7 +15,7 @@ static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
return 0;
}
-static int inst_sys_write (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs)
{
/* print 100 chars */
_stp_print_cstr ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
@@ -25,12 +25,12 @@ static int inst_sys_write (struct kprobe *p, struct pt_regs *regs)
static struct kprobe kp[] = {
{
- .addr = "sys_read",
- .pre_handler = inst_sys_read
+ .addr = "sys_getuid",
+ .pre_handler = inst_sys_getuid
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid
}
};
@@ -44,6 +44,4 @@ int probe_start(void)
static void probe_exit (void)
{
_stp_unregister_kprobes (kp, NUM_KPROBES);
- _stp_printf("dropped %d packets\n", atomic_read(&_stp_transport_failures));
- _stp_print_flush();
}
diff --git a/runtime/probes/bench/bench_io2.c b/runtime/probes/bench/bench_io2.c
index 14ef747b..cc31fc85 100644
--- a/runtime/probes/bench/bench_io2.c
+++ b/runtime/probes/bench/bench_io2.c
@@ -4,10 +4,10 @@
#include "runtime.h"
#include "probes.c"
-MODULE_DESCRIPTION("SystemTap probe: bench_io");
+MODULE_DESCRIPTION("SystemTap probe: bench_io2");
MODULE_AUTHOR("Martin Hunt");
-static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs)
{
/* print 100 chars */
_stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
@@ -15,7 +15,7 @@ static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
return 0;
}
-static int inst_sys_write (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs)
{
/* print 100 chars */
_stp_print_cstr ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
@@ -25,12 +25,12 @@ static int inst_sys_write (struct kprobe *p, struct pt_regs *regs)
static struct kprobe kp[] = {
{
- .addr = "sys_read",
- .pre_handler = inst_sys_read
+ .addr = "sys_getuid",
+ .pre_handler = inst_sys_getuid
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid
}
};
@@ -44,5 +44,4 @@ int probe_start(void)
static void probe_exit (void)
{
_stp_unregister_kprobes (kp, NUM_KPROBES);
- _stp_print_flush();
}
diff --git a/runtime/probes/bench/bench_multi.c b/runtime/probes/bench/bench_multi.c
index eab75878..ca7d251f 100644
--- a/runtime/probes/bench/bench_multi.c
+++ b/runtime/probes/bench/bench_multi.c
@@ -7,56 +7,56 @@
MODULE_DESCRIPTION("SystemTap probe: bench_multi");
MODULE_AUTHOR("Martin Hunt");
-static int inst_sys_read1 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid1 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_read2 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid2 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write1 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid1 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write2 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid2 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write3 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid3 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write4 (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid4 (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
static struct kprobe kp[] = {
{
- .addr = "sys_read",
- .pre_handler = inst_sys_read1
+ .addr = "sys_getuid",
+ .pre_handler = inst_sys_getuid1
},
{
- .addr = "sys_read",
- .pre_handler = inst_sys_read2
+ .addr = "sys_getuid",
+ .pre_handler = inst_sys_getuid2
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write1
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid1
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write2
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid2
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write3
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid3
},
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write4
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid4
}
};
diff --git a/runtime/probes/bench/bench_ret.c b/runtime/probes/bench/bench_ret.c
index d70f0ee1..a14548e1 100644
--- a/runtime/probes/bench/bench_ret.c
+++ b/runtime/probes/bench/bench_ret.c
@@ -8,36 +8,36 @@
MODULE_DESCRIPTION("SystemTap probe: bench_ret");
MODULE_AUTHOR("Martin Hunt");
-static int inst_sys_read (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write_ret (struct kretprobe_instance *ri, struct pt_regs *regs)
+static int inst_sys_getgid_ret (struct kretprobe_instance *ri, struct pt_regs *regs)
{
return 0;
}
-static int inst_sys_write (struct kprobe *p, struct pt_regs *regs)
+static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs)
{
return 0;
}
static struct kretprobe kpr[] = {
{
- .kp.addr = "sys_read",
- .handler = inst_sys_read
+ .kp.addr = "sys_getuid",
+ .handler = inst_sys_getuid
},
{
- .kp.addr = "sys_write",
- .handler = inst_sys_write_ret
+ .kp.addr = "sys_getgid",
+ .handler = inst_sys_getgid_ret
}
};
static struct kprobe kp[] = {
{
- .addr = "sys_write",
- .pre_handler = inst_sys_write
+ .addr = "sys_getgid",
+ .pre_handler = inst_sys_getgid
}
};
diff --git a/runtime/probes/bench/ttest.c b/runtime/probes/bench/ttest.c
index eed641da..93b37c84 100644
--- a/runtime/probes/bench/ttest.c
+++ b/runtime/probes/bench/ttest.c
@@ -37,8 +37,7 @@ void usage(char *name)
int main(int argc, char *argv[])
{
- int fd, i, n = 1;
- char buf[1024];
+ int i, n = 1;
uint64 nsecs;
if (argc > 2)
@@ -50,33 +49,26 @@ int main(int argc, char *argv[])
usage(argv[0]);
}
- fd = open ("foo", O_CREAT | O_RDWR);
-
/* large warmup time */
for (i = 0; i < n * 1000000; i++) {
- if (write (fd, buf, 0) < 0)
- perror("write");
+ getuid();
}
start();
- for (i = 0; i < n * 1000000; i++) {
- if (read (fd, buf, 0) < 0)
- perror("read");
- }
+ for (i = 0; i < n * 1000000; i++)
+ getuid();
+
nsecs = stop() / (n * 1000);
printf("%lld ", nsecs);
start();
- for (i = 0; i < n * 1000000; i++) {
- if (write (fd, buf, 0) < 0)
- perror("write");
- }
+ for (i = 0; i < n * 1000000; i++)
+ getgid();
+
nsecs = stop() / (n * 1000);
- close (fd);
printf("%lld\n", nsecs);
- unlink("foo");
return 0;
}