update
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 7 Apr 2008 16:38:12 +0000 (16:38 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 7 Apr 2008 16:38:12 +0000 (16:38 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@2846 04897980-b3bd-0310-b5e0-8ef037075253

markers-test/runtest.sh
markers-test/test-mark-speed-edit.c
markers-test/test-mark-speed-empty.c
markers-test/test-mark-speed-opt.c
markers-test/test-mark-speed.c

index 1232bc932d936f52b2ea574219f07fc18bf9fc3d..152f41e114b03966d557dbafa218f69556d357f6 100644 (file)
@@ -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
 
index b8249d6964d62e6c3171ee405f12f45b3746f146..adc7f2de5ee33eaa5bf8edadbf71ea7301b2c13c 100644 (file)
@@ -8,6 +8,8 @@
 #include <linux/timex.h>
 #include <linux/marker.h>
 #include <asm/ptrace.h>
+#include <asm/system.h>
+
 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();
index 943af27dfe5cbab1d7265da224766b5614f02aec..20695ca808024135a492d9cffa56823a89d8000b 100644 (file)
@@ -8,6 +8,8 @@
 #include <linux/timex.h>
 #include <linux/marker.h>
 #include <asm/ptrace.h>
+#include <asm/system.h>
+
 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();
index d4098d402131e10b0b8e70db5333e817097e1e4c..e0a26425bbfb4795fec0c1e2c37ff1789afc7708 100644 (file)
@@ -8,6 +8,8 @@
 #include <linux/timex.h>
 #include <linux/marker.h>
 #include <asm/ptrace.h>
+#include <asm/system.h>
+
 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();
index c3c5bc1768745f14b3a169e7046578bfc28883c8..091d1f74803c68a4f3f6301de0f7a4608598b218 100644 (file)
@@ -8,6 +8,8 @@
 #include <linux/timex.h>
 #include <linux/marker.h>
 #include <asm/ptrace.h>
+#include <asm/system.h>
+
 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();
This page took 0.033086 seconds and 4 git commands to generate.