From db68aac5383a982a3f81bc60bacffff550bc7031 Mon Sep 17 00:00:00 2001 From: compudj Date: Mon, 7 Apr 2008 16:38:12 +0000 Subject: [PATCH] update git-svn-id: http://ltt.polymtl.ca/svn@2846 04897980-b3bd-0310-b5e0-8ef037075253 --- markers-test/runtest.sh | 32 ++++++++++++++++------------ markers-test/test-mark-speed-edit.c | 5 ++++- markers-test/test-mark-speed-empty.c | 5 ++++- markers-test/test-mark-speed-opt.c | 5 ++++- markers-test/test-mark-speed.c | 5 ++++- 5 files changed, 34 insertions(+), 18 deletions(-) diff --git a/markers-test/runtest.sh b/markers-test/runtest.sh index 1232bc93..152f41e1 100644 --- a/markers-test/runtest.sh +++ b/markers-test/runtest.sh @@ -1,54 +1,58 @@ #!/bin/sh +ITER=10 +LOOPS=2000 + insmod test-mark-speed-empty.ko -for a in `seq 1 10`; do cat /proc/testmark;done +for a in `seq 1 $ITER`; do cat /proc/testmark;done rmmod test-mark-speed-empty RESEMP=`dmesg |tail -n 10 |sed 's/^\[.*\] //'| sed 's/cycles : \(.*\)$/\1/'` insmod test-mark-speed.ko -for a in `seq 1 10`; do cat /proc/testmark;done +for a in `seq 1 $ITER`; do cat /proc/testmark;done rmmod test-mark-speed RESSTD=`dmesg |tail -n 10 |sed 's/^\[.*\] //'| sed 's/cycles : \(.*\)$/\1/'` insmod test-mark-speed-opt.ko -for a in `seq 1 10`; do cat /proc/testmark;done +for a in `seq 1 $ITER`; do cat /proc/testmark;done rmmod test-mark-speed-opt RESOPT=`dmesg |tail -n 10 |sed 's/^\[.*\] //'| sed 's/cycles : \(.*\)$/\1/'` insmod test-mark-speed-edit.ko #Patch with nops -for a in `seq 1 10`; do cat /proc/testmark;done -for a in `seq 1 10`; do cat /proc/testmark;done +cat /proc/testmark + +for a in `seq 1 $ITER`; do cat /proc/testmark;done rmmod test-mark-speed-edit RESNOP=`dmesg |tail -n 10 |sed 's/^\[.*\] //'| sed 's/cycles : \(.*\)$/\1/'` -echo "20000 iterations" +echo "Results in cycles per loop" -echo "Numbers for empty loop" +echo "Cycles for wbinvd() loop (will be substracted from following results)" SUM="0" for a in $RESEMP; do SUM=$[$SUM + $a]; done -RESEMP=$[$SUM / 10] +RESEMP=`echo $SUM/$ITER/$LOOPS | bc -l /dev/stdin` echo $RESEMP -echo "Numbers for normal marker" +echo "Added cycles for normal marker" SUM="0" for a in $RESSTD; do SUM=$[$SUM + $a]; done -RESSTD=$[$SUM / 10] +RESSTD=`echo $SUM/$ITER/$LOOPS - $RESEMP | bc -l /dev/stdin` echo $RESSTD -echo "Numbers for optimized marker" +echo "Added cycles for optimized marker" SUM="0" for a in $RESOPT; do SUM=$[$SUM + $a]; done -RESOPT=$[$SUM / 10] +RESOPT=`echo $SUM/$ITER/$LOOPS - $RESEMP | bc -l /dev/stdin` echo $RESOPT -echo "Numbers for NOP replacement of function call" +echo "Added cycles for NOP replacement of function call" SUM="0" for a in $RESNOP; do SUM=$[$SUM + $a]; done -RESNOP=$[$SUM / 10] +RESNOP=`echo $SUM/$ITER/$LOOPS - $RESEMP | bc -l /dev/stdin` echo $RESNOP diff --git a/markers-test/test-mark-speed-edit.c b/markers-test/test-mark-speed-edit.c index b8249d69..adc7f2de 100644 --- a/markers-test/test-mark-speed-edit.c +++ b/markers-test/test-mark-speed-edit.c @@ -8,6 +8,8 @@ #include #include #include +#include + static void noinline test2(const struct marker *mdata, void *call_private, ...) { @@ -62,6 +64,7 @@ struct proc_dir_entry *pentry = NULL; static inline void test(unsigned long arg, unsigned long arg2) { + wbinvd(); //asm volatile (""); //__my_trace_mark(1, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); test2(NULL, NULL, 2, current->pid, arg, arg2); @@ -78,7 +81,7 @@ static int my_open(struct inode *inode, struct file *file) rdtsc_barrier(); cycles1 = get_cycles(); rdtsc_barrier(); - for(i=0; i<20000; i++) { + for(i=0; i<2000; i++) { test(i, i); } rdtsc_barrier(); diff --git a/markers-test/test-mark-speed-empty.c b/markers-test/test-mark-speed-empty.c index 943af27d..20695ca8 100644 --- a/markers-test/test-mark-speed-empty.c +++ b/markers-test/test-mark-speed-empty.c @@ -8,6 +8,8 @@ #include #include #include +#include + static void noinline test2(const struct marker *mdata, void *call_private, ...) { @@ -52,6 +54,7 @@ struct proc_dir_entry *pentry = NULL; static inline void test(unsigned long arg, unsigned long arg2) { + wbinvd(); asm volatile (""); //__my_trace_mark(1, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); //__my_trace_mark(0, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); @@ -67,7 +70,7 @@ static int my_open(struct inode *inode, struct file *file) rdtsc_barrier(); cycles1 = get_cycles(); rdtsc_barrier(); - for(i=0; i<20000; i++) { + for(i=0; i<2000; i++) { test(i, i); } rdtsc_barrier(); diff --git a/markers-test/test-mark-speed-opt.c b/markers-test/test-mark-speed-opt.c index d4098d40..e0a26425 100644 --- a/markers-test/test-mark-speed-opt.c +++ b/markers-test/test-mark-speed-opt.c @@ -8,6 +8,8 @@ #include #include #include +#include + static void noinline test2(const struct marker *mdata, void *call_private, ...) { @@ -52,6 +54,7 @@ struct proc_dir_entry *pentry = NULL; static inline void test(unsigned long arg, unsigned long arg2) { + wbinvd(); //asm volatile (""); //__my_trace_mark(1, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); __my_trace_mark(0, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); @@ -67,7 +70,7 @@ static int my_open(struct inode *inode, struct file *file) rdtsc_barrier(); cycles1 = get_cycles(); rdtsc_barrier(); - for(i=0; i<20000; i++) { + for(i=0; i<2000; i++) { test(i, i); } rdtsc_barrier(); diff --git a/markers-test/test-mark-speed.c b/markers-test/test-mark-speed.c index c3c5bc17..091d1f74 100644 --- a/markers-test/test-mark-speed.c +++ b/markers-test/test-mark-speed.c @@ -8,6 +8,8 @@ #include #include #include +#include + static void noinline test2(const struct marker *mdata, void *call_private, ...) { @@ -52,6 +54,7 @@ struct proc_dir_entry *pentry = NULL; static inline void test(unsigned long arg, unsigned long arg2) { + wbinvd(); //asm volatile (""); __my_trace_mark(1, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); //__my_trace_mark(0, kernel_debug_test, NULL, "%d %d %ld %ld", 2, current->pid, arg, arg2); @@ -67,7 +70,7 @@ static int my_open(struct inode *inode, struct file *file) rdtsc_barrier(); cycles1 = get_cycles(); rdtsc_barrier(); - for(i=0; i<20000; i++) { + for(i=0; i<2000; i++) { test(i, i); } rdtsc_barrier(); -- 2.34.1