diff options
Diffstat (limited to 'runtime/probes/bench')
-rw-r--r-- | runtime/probes/bench/Makefile | 10 | ||||
-rw-r--r-- | runtime/probes/bench/README | 18 | ||||
-rw-r--r-- | runtime/probes/bench/bench.c | 51 | ||||
-rw-r--r-- | runtime/probes/bench/bench_io1.c | 46 | ||||
-rw-r--r-- | runtime/probes/bench/bench_io2.c | 47 | ||||
-rw-r--r-- | runtime/probes/bench/bench_io3.c | 44 | ||||
-rw-r--r-- | runtime/probes/bench/bench_io4.c | 45 | ||||
-rw-r--r-- | runtime/probes/bench/bench_multi.c | 73 | ||||
-rw-r--r-- | runtime/probes/bench/bench_ret.c | 61 | ||||
-rwxr-xr-x | runtime/probes/bench/build | 2 | ||||
-rwxr-xr-x | runtime/probes/bench/check_modules | 28 | ||||
-rw-r--r-- | runtime/probes/bench/itest.c | 71 | ||||
-rwxr-xr-x | runtime/probes/bench/run_bench | 136 | ||||
-rw-r--r-- | runtime/probes/bench/targets | 7 | ||||
-rwxr-xr-x | runtime/probes/bench/trans_bench | 186 | ||||
-rw-r--r-- | runtime/probes/bench/ttest.c | 74 |
16 files changed, 0 insertions, 899 deletions
diff --git a/runtime/probes/bench/Makefile b/runtime/probes/bench/Makefile deleted file mode 100644 index 9154e3dc..00000000 --- a/runtime/probes/bench/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -all: ttest itest - -ttest: ttest.c - gcc -Wall -O3 -o ttest ttest.c - -itest: itest.c - gcc -Wall -O3 -o itest itest.c - -clean: - /bin/rm -f itest ttest stpd_cpu* xxx* diff --git a/runtime/probes/bench/README b/runtime/probes/bench/README deleted file mode 100644 index 04801a74..00000000 --- a/runtime/probes/bench/README +++ /dev/null @@ -1,18 +0,0 @@ -This is a benchmark program for the SystemTap Runtime. - -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. - -To Start: - -1. Build the test program. -> gcc -O3 -o time time.c - -2. Run the benchmarks -> ./run_bench - - - diff --git a/runtime/probes/bench/bench.c b/runtime/probes/bench/bench.c deleted file mode 100644 index a00efa05..00000000 --- a/runtime/probes/bench/bench.c +++ /dev/null @@ -1,51 +0,0 @@ -#define STP_NETLINK_ONLY -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench"); -MODULE_AUTHOR("Martin Hunt"); - -asmlinkage ssize_t inst_sys_getgid (unsigned int fd, const char __user * buf, size_t count) -{ - jprobe_return(); - return 0; -} - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} - -static struct jprobe jp[] = { - { - .kp.addr = (kprobe_opcode_t *)"sys_getgid", - .entry = (kprobe_opcode_t *) inst_sys_getgid - }, -}; - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid - } -}; - -#define NUM_JPROBES (sizeof(jp)/sizeof(struct jprobe)) -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - int ret = _stp_register_jprobes (jp, NUM_JPROBES); - if (ret >= 0) - if ((ret = _stp_register_kprobes (kp, NUM_KPROBES)) < 0) - _stp_unregister_jprobes (jp, NUM_JPROBES); - return ret; -} - -void probe_exit (void) -{ - _stp_unregister_jprobes (jp, NUM_JPROBES); - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_io1.c b/runtime/probes/bench/bench_io1.c deleted file mode 100644 index 8bdc4018..00000000 --- a/runtime/probes/bench/bench_io1.c +++ /dev/null @@ -1,46 +0,0 @@ -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_io1"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 100 chars */ - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - -static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 100 chars */ - _stp_print_cstr ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid - } -}; - -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - return _stp_register_kprobes (kp, NUM_KPROBES); -} - -void probe_exit (void) -{ - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_io2.c b/runtime/probes/bench/bench_io2.c deleted file mode 100644 index 14216913..00000000 --- a/runtime/probes/bench/bench_io2.c +++ /dev/null @@ -1,47 +0,0 @@ -#define STP_RELAYFS -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_io2"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 100 chars */ - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - -static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 100 chars */ - _stp_print_cstr ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid - } -}; - -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - return _stp_register_kprobes (kp, NUM_KPROBES); -} - -void probe_exit (void) -{ - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_io3.c b/runtime/probes/bench/bench_io3.c deleted file mode 100644 index a491edd9..00000000 --- a/runtime/probes/bench/bench_io3.c +++ /dev/null @@ -1,44 +0,0 @@ -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_io3"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 1000 chars */ - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid - }, -}; - -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - return _stp_register_kprobes (kp, NUM_KPROBES); -} - -void probe_exit (void) -{ - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_io4.c b/runtime/probes/bench/bench_io4.c deleted file mode 100644 index a6b19ab5..00000000 --- a/runtime/probes/bench/bench_io4.c +++ /dev/null @@ -1,45 +0,0 @@ -#define STP_RELAYFS -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_io3"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - /* print 1000 chars */ - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_printf ("123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n"); - _stp_print_flush(); - return 0; -} - - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid - }, -}; - -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - return _stp_register_kprobes (kp, NUM_KPROBES); -} - -void probe_exit (void) -{ - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_multi.c b/runtime/probes/bench/bench_multi.c deleted file mode 100644 index a6dc38a4..00000000 --- a/runtime/probes/bench/bench_multi.c +++ /dev/null @@ -1,73 +0,0 @@ -#define STP_NETLINK_ONLY -#define STP_NUM_STRINGS 1 - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_multi"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid1 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} -static int inst_sys_getuid2 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} - -static int inst_sys_getgid1 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} -static int inst_sys_getgid2 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} -static int inst_sys_getgid3 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} -static int inst_sys_getgid4 (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} - -static struct kprobe kp[] = { - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid1 - }, - { - .addr = "sys_getuid", - .pre_handler = inst_sys_getuid2 - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid1 - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid2 - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid3 - }, - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid4 - } -}; - -#define NUM_KPROBES (sizeof(kp)/sizeof(struct kprobe)) - -int probe_start(void) -{ - return _stp_register_kprobes (kp, NUM_KPROBES); -} - -void probe_exit (void) -{ - _stp_unregister_kprobes (kp, NUM_KPROBES); -} diff --git a/runtime/probes/bench/bench_ret.c b/runtime/probes/bench/bench_ret.c deleted file mode 100644 index 40f2ddad..00000000 --- a/runtime/probes/bench/bench_ret.c +++ /dev/null @@ -1,61 +0,0 @@ -#define STP_NETLINK_ONLY -#define STP_NUM_STRINGS 1 -#define USE_RET_PROBES - -#include "runtime.h" -#include "probes.c" - -MODULE_DESCRIPTION("SystemTap probe: bench_ret"); -MODULE_AUTHOR("Martin Hunt"); - -static int inst_sys_getuid (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} - -static int inst_sys_getgid_ret (struct kretprobe_instance *ri, struct pt_regs *regs) -{ - return 0; -} - -static int inst_sys_getgid (struct kprobe *p, struct pt_regs *regs) -{ - return 0; -} - -static struct kretprobe kpr[] = { - { - .kp.addr = "sys_getuid", - .handler = inst_sys_getuid - }, - { - .kp.addr = "sys_getgid", - .handler = inst_sys_getgid_ret - } -}; - -static struct kprobe kp[] = { - { - .addr = "sys_getgid", - .pre_handler = inst_sys_getgid - } -}; - - -#define NUM_KPROBES (sizeof(kpr)/sizeof(struct kretprobe)) - -int probe_start(void) -{ - int ret = _stp_register_kretprobes (kpr, NUM_KPROBES); - if (ret >= 0) { - if ((ret = _stp_register_kprobes (kp, 1)) < 0) - _stp_unregister_kretprobes (kpr, NUM_KPROBES); - } - return ret; -} - -void probe_exit (void) -{ - _stp_unregister_kretprobes (kpr, NUM_KPROBES); - _stp_unregister_kprobes (kp, 1); -} diff --git a/runtime/probes/bench/build b/runtime/probes/bench/build deleted file mode 100755 index f3e83244..00000000 --- a/runtime/probes/bench/build +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -../build_probe $* diff --git a/runtime/probes/bench/check_modules b/runtime/probes/bench/check_modules deleted file mode 100755 index c3ab9ac3..00000000 --- a/runtime/probes/bench/check_modules +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -RELAYFS=`grep " relayfs_poll" /boot/System.map-\`uname -r\`` -if [ -z "$RELAYFS" ] -then - RELAYFS=`lsmod | grep relayfs` - if [ -z "$RELAYFS" ] - then - /sbin/insmod ../../relayfs/relayfs.ko - fi -fi - -if [ ! -d "/mnt/relay" ] -then - mkdir /mnt/relay -fi - -MOUNT=`mount | grep relayfs |awk '{print $1}'` -if [ "$MOUNT" != "relayfs" ] -then - mount -t relayfs relayfs /mnt/relay -fi - -STP_CONTROL=`lsmod | grep stp_control |awk '{print $1}'` -if [ "$STP_CONTROL" != "stp_control" ] -then - /sbin/insmod ../../transport/stp-control.ko -fi diff --git a/runtime/probes/bench/itest.c b/runtime/probes/bench/itest.c deleted file mode 100644 index 8ac11b8f..00000000 --- a/runtime/probes/bench/itest.c +++ /dev/null @@ -1,71 +0,0 @@ -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <sys/time.h> -#include <stdlib.h> -#include <sys/resource.h> -#include <unistd.h> - -typedef unsigned long long uint64; -struct rusage rstart; -struct timeval tstart, tstop; -uint64 ttime = 0; - -void start() -{ - gettimeofday (&tstart, NULL); - getrusage (RUSAGE_SELF, &rstart); -} - -uint64 usecs (struct timeval *tv) -{ - return tv->tv_sec * 1000000 + tv->tv_usec; -} - -uint64 stop() -{ - struct rusage rend; - getrusage (RUSAGE_SELF, &rend); - gettimeofday (&tstop, NULL); - uint64 utime = usecs(&rend.ru_utime) - usecs(&rstart.ru_utime); - uint64 stime = usecs(&rend.ru_stime) - usecs(&rstart.ru_stime); - ttime = usecs(&tstop) - usecs(&tstart); - return utime + stime; -} - -void usage(char *name) -{ - printf ("Usage %s [time]\nWhere \"time\" is millions of times to loop.\n", name); - exit(1); -} - -int main(int argc, char *argv[]) -{ - int i, n = 1; - uint64 nsecs; - - if (argc > 2) - usage(argv[0]); - - if (argc == 2) { - n = strtol(argv[1], NULL, 10); - if (n == 0) - usage(argv[0]); - } - - - start(); - for (i = 0; i < n * 1000000; i++) - getuid(); - - nsecs = stop() / (n * 1000); - - /* returns - nanosecs per call (user + system time) - elapsed usecs (real time) - */ - printf("%lld %.2f\n", nsecs, ttime/1000000.0); - - return 0; -} diff --git a/runtime/probes/bench/run_bench b/runtime/probes/bench/run_bench deleted file mode 100755 index a9442d3b..00000000 --- a/runtime/probes/bench/run_bench +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/tclsh -# -*- tcl -*- - -proc do_time {module n} { - global Failures - - # start kprobes - if {[catch {exec ../../stpd/staprun -rmq $module.ko > xxx &} pid]} { - puts $pid - exit -1 - } - - exec sleep 2 - - # get the timings while kprobes running - if {[catch {exec ./ttest $n} res2]} { - puts $res2 - exit -1 - } - - # terminate kprobes - if {[catch {exec kill -s SIGINT $pid} res]} { - puts $res - } - - exec sleep 2 - - # look for warnings - exec tail xxx >xxx.tail - if {[catch {open xxx.tail r} fd]} { - puts "Cannot open test output\n" - exit -1 - } - - set Failures 0 - while {[gets $fd line] >= 0} { - if {[regexp {^\033\[33mWARNING: \033\[0mThere were ([0-9]*) transport failures.} $line match var]} { - set Failures $var - break - } - } - close $fd - exec /bin/rm -f xxx xxx.out - return $res2 -} - -######## START HERE ########### - - -set nproc [exec grep ^processor /proc/cpuinfo | wc -l] -if {![catch {exec grep "physical id" /proc/cpuinfo} phyid]} { - foreach phy [split $phyid \n] { - set cpu($phy) 1 - } -} -set model [exec grep "model name" /proc/cpuinfo] -set model [lindex [split $model \n] 0] -set model [string range $model [expr [string first : $model]+1] end] -set model [string trimleft $model] - -puts "STP BENCH for [exec uname -r] on [exec uname -m]" -if {[file exists /etc/redhat-release]} { - puts [exec cat /etc/redhat-release] -} -puts "[exec uname -n]: [exec uptime]" -if {$nproc > 1} { - puts "processors: $nproc ([array size cpu] physical) $model" -} else { - puts "processors: $nproc $model" -} -set mem [split [exec cat /proc/meminfo] \n] -puts "[lindex $mem 0] [lindex $mem 1]" -puts "--------------------------------------" - -# get the timings without kprobes -if {[catch {exec ./ttest 4} res1]} { - puts $res1 - exit -1 -} - -set r_overhead [lindex $res1 0] -set w_overhead [lindex $res1 1] - -puts "function call overhead = $r_overhead ns" -puts "--------------------------------------" - -set res2 [do_time bench 4] -set t_kprobe [expr [lindex $res2 0] - $r_overhead] -set t_jprobe [expr [lindex $res2 1] - $w_overhead] - -puts "Jprobes overhead = $t_jprobe ns" -puts "Kprobes overhead = $t_kprobe ns" -puts "--------------------------------------" - -if {[file exists bench_ret.ko]} { - set res2 [do_time bench_ret 4] - set t_ret [expr [lindex $res2 0] - $r_overhead] - set t_entret [expr [lindex $res2 1] - $w_overhead] - - puts "Return probe overhead = $t_ret ns" - puts "Entry+Return probe overhead = $t_entret ns" - puts "--------------------------------------" -} - -set res2 [do_time bench_multi 4] -set t_k2 [expr [lindex $res2 0] - $r_overhead] -set t_k4 [expr [lindex $res2 1] - $w_overhead] - -puts "2 kprobes on same func = $t_k2 ns" -puts "4 kprobes on same func = $t_k4 ns" -puts "--------------------------------------" - -set res2 [do_time bench_io1 1] -# subtract function call overhead and kprobe overhead -set t_printf [expr [lindex $res2 0] - $r_overhead - $t_kprobe] -set t_print [expr [lindex $res2 1] - $w_overhead - $t_kprobe] - -puts "PROCFS" -puts "_stp_printf on 100 chars = $t_printf ns." -puts "_stp_print on 100 chars = $t_print ns." -puts "Transport failures: $Failures" -puts "--------------------------------------" -exec sleep 4 - -set res2 [do_time bench_io2 1] -# subtract function call overhead and kprobe overhead -set t_printf [expr [lindex $res2 0] - $r_overhead - $t_kprobe] -set t_print [expr [lindex $res2 1] - $w_overhead - $t_kprobe] - -puts "RELAYFS" -puts "_stp_printf on 100 chars = $t_printf ns." -puts "_stp_print on 100 chars = $t_print ns." -puts "Transport failures: $Failures" -puts "--------------------------------------" - -exec /bin/rm -f stpd_cpu* diff --git a/runtime/probes/bench/targets b/runtime/probes/bench/targets deleted file mode 100644 index 6c89c8d7..00000000 --- a/runtime/probes/bench/targets +++ /dev/null @@ -1,7 +0,0 @@ -bench -bench_io1 -bench_io2 -bench_io3 -bench_io4 -bench_ret -bench_multi diff --git a/runtime/probes/bench/trans_bench b/runtime/probes/bench/trans_bench deleted file mode 100755 index 12adbaff..00000000 --- a/runtime/probes/bench/trans_bench +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/tclsh -# -*- tcl -*- - -proc do_time {module n buf} { - global Failures Filesize - - # start kprobes - if {[catch {exec ../../stpd/staprun -b $buf $module.ko > xxx &} pid]} { - puts $pid - exit -1 - } - - exec sleep 2 - - # get the timings while kprobes running - if {[catch {exec ./itest $n} res2]} { - puts "itest failed: $res2" - exit -1 - } - - exec sleep 4 - # terminate kprobes - if {[catch {exec kill -s SIGINT $pid} res]} { - puts "Kill failed: $res" - } - - exec sleep 4 - - # look for warnings - exec tail xxx >xxx.tail - if {[catch {open xxx.tail r} fd]} { - puts "Cannot open test output\n" - exit -1 - } - - set Failures 0 - while {[gets $fd line] >= 0} { - if {[regexp {^\033\[33mWARNING: \033\[0mThere were ([0-9]*) transport failures.} $line match var]} { - set Failures $var - break - } - } - close $fd - - set Filesize [file size xxx] - exec /bin/rm -f xxx xxx.out - return $res2 -} - -######## START HERE ########### - - -set nproc [exec grep ^processor /proc/cpuinfo | wc -l] -if {![catch {exec grep "physical id" /proc/cpuinfo} phyid]} { - foreach phy [split $phyid \n] { - set cpu($phy) 1 - } -} -set model [exec grep "model name" /proc/cpuinfo] -set model [lindex [split $model \n] 0] -set model [string range $model [expr [string first : $model]+1] end] -set model [string trimleft $model] - -puts "TRANS BENCH for [exec uname -r] on [exec uname -m]" -if {[file exists /etc/redhat-release]} { - puts [exec cat /etc/redhat-release] -} -puts "[exec uname -n]: [exec uptime]" -if {$nproc > 1} { - puts "processors: $nproc ([array size cpu] physical) $model" -} else { - puts "processors: $nproc $model" -} -set mem [split [exec cat /proc/meminfo] \n] -puts "[lindex $mem 0] [lindex $mem 1]" -puts "--------------------------------------" - -# load the modules -if {[catch {exec stp_check} res]} { - puts $res - exit -1 -} - -# warmup -exec ./itest 20 > /dev/null - -set res1 [do_time bench 1 1] -set call_overhead [lindex $res1 0] - -puts "Function call plus kprobe overhead = $call_overhead ns per call" -puts "--------------------------------------" - - -set max 5 -set n 1 -set buf 1 -while {$buf <= 64 && $n < $max} { - set Failures 0 - while {!$Failures && $n < $max} { - set res2 [do_time bench_io1 $n $buf] - set t_printf [expr [lindex $res2 0] - $call_overhead] - set total_print [lindex $res2 1] - puts "PROCFS with ${buf}MB buffers" - puts "_stp_printf on 100 chars = $t_printf ns / call system + user time." - if {$t_printf < 0} { - puts "res2=$res2" - exit - } - puts "_stp_printf of [expr $n * 100]MB in $total_print secs real time." - puts "Transfer rate = [format "%6.2f" [expr ($n * 100)/$total_print]] MB/sec" - puts "Transport failures: $Failures" - if {$Filesize != [expr $n * 100000000]} { - puts "WARNING: file size was $Filesize (expected [expr $n * 100000000])." - } - puts "--------------------------------------" - if {$Failures == 0} {incr n} - } - set buf [expr $buf + $buf] -} - -set max 5 -set n 1 -set buf 1 -while {$buf <= 64 && $n < $max} { - set Failures 0 - while {!$Failures && $n < $max} { - set res2 [do_time bench_io2 $n $buf] - set t_printf [expr [lindex $res2 0] - $call_overhead] - set total_print [lindex $res2 1] - puts "RELAYFS with ${buf}MB buffers" - puts "_stp_printf on 100 chars = $t_printf ns / call system + user time." - if {$t_printf < 0} { - puts "res2=$res2" - exit - } - puts "_stp_printf of [expr $n * 100]MB in $total_print secs real time." - puts "Transfer rate = [format "%6.2f" [expr ($n * 100)/$total_print]] MB/sec" - puts "Transport failures: $Failures" - if {$Filesize != [expr $n * 100000000]} { - puts "WARNING: file size was $Filesize (expected [expr $n * 100000000])." - } - puts "--------------------------------------" - if {$Failures == 0} {incr n} - } - set buf [expr $buf + $buf] -} - -set Failures 0 -set buf 1 -set res2 [do_time bench_io3 1 $buf] -set t_printf [expr [lindex $res2 0] - $call_overhead] -set total_print [lindex $res2 1] -puts "PROCFS with ${buf}MB buffers" -puts "_stp_printf on 1000 chars = $t_printf ns / call system + user time." -if {$t_printf < 0} { - puts "res2=$res2" - exit -} -puts "_stp_printf of 1GB in $total_print secs real time." -puts "Transfer rate = [format "%6.2f" [expr 1000/$total_print]] MB/sec" -puts "Transport failures: $Failures" -if {$Filesize != 1000000000} { - puts "WARNING: file size was $Filesize (expected 1000000000)." -} -puts "--------------------------------------" - -set Failures 0 -set buf 1 -set res2 [do_time bench_io4 1 $buf] -set t_printf [expr [lindex $res2 0] - $call_overhead] -set total_print [lindex $res2 1] -puts "RELAYFS with ${buf}MB buffers" -puts "_stp_printf on 1000 chars = $t_printf ns / call system + user time." -if {$t_printf < 0} { - puts "res2=$res2" - exit -} -puts "_stp_printf of 1GB in $total_print secs real time." -puts "Transfer rate = [format "%6.2f" [expr 1000/$total_print]] MB/sec" -puts "Transport failures: $Failures" -if {$Filesize != 1000000000} { - puts "WARNING: file size was $Filesize (expected 1000000000)." -} -puts "--------------------------------------" - -exec /bin/rm -f stpd_cpu* diff --git a/runtime/probes/bench/ttest.c b/runtime/probes/bench/ttest.c deleted file mode 100644 index 93b37c84..00000000 --- a/runtime/probes/bench/ttest.c +++ /dev/null @@ -1,74 +0,0 @@ -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <sys/time.h> -#include <stdlib.h> -#include <sys/resource.h> -#include <unistd.h> - -typedef unsigned long long uint64; -struct rusage rstart; - -void start() -{ - getrusage (RUSAGE_SELF, &rstart); -} - -uint64 usecs (struct timeval *tv) -{ - return tv->tv_sec * 1000000 + tv->tv_usec; -} - -uint64 stop() -{ - struct rusage rend; - getrusage (RUSAGE_SELF, &rend); - uint64 utime = usecs(&rend.ru_utime) - usecs(&rstart.ru_utime); - uint64 stime = usecs(&rend.ru_stime) - usecs(&rstart.ru_stime); - return utime + stime; -} - -void usage(char *name) -{ - printf ("Usage %s [time]\nWhere \"time\" is millions of times to loop.\n", name); - exit(1); -} - -int main(int argc, char *argv[]) -{ - int i, n = 1; - uint64 nsecs; - - if (argc > 2) - usage(argv[0]); - - if (argc == 2) { - n = strtol(argv[1], NULL, 10); - if (n == 0) - usage(argv[0]); - } - - /* large warmup time */ - for (i = 0; i < n * 1000000; i++) { - getuid(); - } - - start(); - for (i = 0; i < n * 1000000; i++) - getuid(); - - nsecs = stop() / (n * 1000); - - printf("%lld ", nsecs); - - start(); - for (i = 0; i < n * 1000000; i++) - getgid(); - - nsecs = stop() / (n * 1000); - - printf("%lld\n", nsecs); - - return 0; -} |