You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(33) |
Nov
(15) |
Dec
(28) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(13) |
Feb
(61) |
Mar
(5) |
Apr
|
May
(19) |
Jun
(22) |
Jul
|
Aug
(17) |
Sep
(7) |
Oct
|
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2010 |
Jan
|
Feb
(48) |
Mar
(10) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Peter C. <pc...@us...> - 2014-05-20 00:21:14
|
Update of /cvsroot/ipbench/ipbench2/src/tests/cpu_target In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv24883/src/tests/cpu_target Modified Files: cpu_target.c Log Message: Bumped version to 2.0.1-8, added Sean Peter's patch for SMP cpu usage Index: cpu_target.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/cpu_target/cpu_target.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** cpu_target.c 16 Nov 2007 05:35:00 -0000 1.13 --- cpu_target.c 20 May 2014 00:21:12 -0000 1.14 *************** *** 9,15 **** * */ #define IPBENCH_TEST_TARGET #include "plugin.h" - #include "ipbench.h" --- 9,18 ---- * */ + /* For SMP */ + #define _GNU_SOURCE + #include <sched.h> + #define IPBENCH_TEST_TARGET #include "plugin.h" #include "ipbench.h" *************** *** 26,37 **** static int do_calibrate = 0; static int calibrate_state = 0; ! static long int nr_cpus = 1; ! static unsigned long calibrated_loops_per_sec = 0; static struct timeval alarm_time; ! static unsigned long counts_per_sec; ! static double d_counts_per_sec; ! static char *busyloop_buf; static unsigned long busyloop_size = 1000000; ! static unsigned long *busyloop_progress; static long int period_secs = 1; static int rw_ratio = 5; --- 29,41 ---- static int do_calibrate = 0; static int calibrate_state = 0; ! static long int nr_cpus; ! static unsigned long calibrated_loops_per_sec[N_CPUS]; ! static unsigned int calibration_complete = 0; static struct timeval alarm_time; ! static unsigned long counts_per_sec[N_CPUS]; ! static double d_counts_per_sec[N_CPUS]; ! static char* busyloop_buf; static unsigned long busyloop_size = 1000000; ! static unsigned long* busyloop_progress; static long int period_secs = 1; static int rw_ratio = 5; *************** *** 39,43 **** static unsigned long sum; static unsigned long twiddle = 1000; ! static int do_bonding; static pid_t kids[N_CPUS]; --- 43,47 ---- static unsigned long sum; static unsigned long twiddle = 1000; ! static int do_bonding = 1; static pid_t kids[N_CPUS]; *************** *** 62,65 **** --- 66,93 ---- #define CPS_FILE "counts_per_sec" + static long int + count_cpus(void) + { + FILE *fp; + long int n = -1UL; + char nr_cpus_str[8]; + + + fp = popen("cat /proc/cpuinfo | grep processor | wc -l", "r"); + if (fp == NULL || fgets(nr_cpus_str, sizeof(nr_cpus_str)-1, fp) == NULL) + dbprintf("Failed to count number of processors. Not performing bonding.\n" ); + else { + n = strtol(nr_cpus_str, NULL, 10); + dbprintf("%d cpus found\n", nr_cpus); + } + pclose(fp); + + if (n > N_CPUS) { + dbprintf("Recompile with more than %d N_CPU --- too many for test\n", N_CPUS); + return -1L; + } + return n; + } + static double average_cpu(void) { *************** *** 125,128 **** --- 153,157 ---- unsigned long long blp_snapshot[N_CPUS]; static unsigned long long old_blp[N_CPUS]; + char print_out [256]; int i; *************** *** 148,186 **** if (do_calibrate) { if (calibrate_state++ == 3) { ! calibrated_loops_per_sec = total_blp; } ! dbprintf("calibrating: %llu loops/sec\n", total_blp); } else { ! double this_cpu_load, d_blp; ! d_blp = total_blp; ! this_cpu_load = 1.0 - (d_blp / d_counts_per_sec); ! /* round up */ ! if (this_cpu_load < 0) this_cpu_load = 0; if (warmup_samples * period_secs < warmup_time) ! { ! if (cpu_samples % 5) ! dbprintf("Warmup period:%5.1f%%\n", this_cpu_load * 100.0); ! warmup_samples++; ! } else ! { ! cpu_load[cpu_samples % n_samples] = this_cpu_load; ! cpu_samples++; ! if (cpu_samples % 5) ! dbprintf("[%d] System load:%5.1f%%\n", getpid(), this_cpu_load * 100.0); ! } ! if (do_bonding) { ! printf(" || Free:"); ! for (i = 0; i < nr_cpus; i++) { ! d_blp = blp[i]; ! this_cpu_load = (d_blp / (d_counts_per_sec / nr_cpus)); ! printf(" %5.1f%%(%d)", this_cpu_load * 100.0, i); } } - } } --- 177,228 ---- if (do_calibrate) { if (calibrate_state++ == 3) { ! for(i = 0; i < nr_cpus; i++) { ! calibrated_loops_per_sec[i] = blp[i]; ! } ! calibration_complete = 1; } ! sprintf(print_out, "Calibrating -- total: %llu loops/sec", total_blp); ! if (do_bonding) { ! for(i = 0; i < nr_cpus; i++) { ! sprintf(print_out + strlen(print_out), ! " || CPU%d: %llu loops/sec", i, blp[i]); ! } ! } ! dbprintf("%s\n", print_out); ! } else { ! double this_cpu_load[N_CPUS]; ! double d_blp[N_CPUS]; ! double total_cpu_load = 0; ! for (i = 0; i < nr_cpus; i++) { ! d_blp[i] = blp[i]; ! this_cpu_load[i] = 1.0 - (d_blp[i] / d_counts_per_sec[i]); ! /* round up */ ! if (this_cpu_load[i] < 0) this_cpu_load[i] = 0; ! total_cpu_load += this_cpu_load[i] / nr_cpus; ! } if (warmup_samples * period_secs < warmup_time) ! { ! if (cpu_samples % 5) ! dbprintf("Warmup period:%5.1f%%\n", total_cpu_load * 100.0); ! warmup_samples++; ! } else ! { ! cpu_load[cpu_samples % n_samples] = total_cpu_load; ! cpu_samples++; ! if (cpu_samples % 5) { ! sprintf(print_out, "[%d] System load:%5.1f%%", getpid(), total_cpu_load * 100.0); ! if (do_bonding) { ! for (i = 0; i < nr_cpus; i++) ! sprintf(print_out + strlen(print_out), " || CPU%d: %5.1f%%", i, this_cpu_load[i] * 100.0); ! } ! dbprintf("%s\n", print_out); } } } } *************** *** 195,198 **** --- 237,242 ---- char buf[80]; int cpu; + cpu_set_t cpu_set; + int i; if (!do_calibrate) { *************** *** 202,216 **** exit(1); } ! if (fgets(buf, sizeof(buf), f) == 0) { ! fprintf(stderr, "fgets failed!\n"); ! exit(1); } fclose(f); - counts_per_sec = strtoul(buf, 0, 10); - if (counts_per_sec == 0) { - fprintf(stderr, "something went wrong\n"); - exit(1); - } - d_counts_per_sec = counts_per_sec; } --- 246,263 ---- exit(1); } ! ! for (i = 0; i < nr_cpus; i++) { ! if (fgets(buf, sizeof(buf), f) == 0) { ! fprintf(stderr, "Reading calibration file failed!\n"); ! exit(1); ! } ! counts_per_sec[i] = strtoul(buf, 0, 10); ! if (counts_per_sec[i] == 0) { ! fprintf(stderr, "Calibration implies 0 idle time. Likely a bug.\n"); ! exit(1); ! } ! d_counts_per_sec[i] = counts_per_sec[i]; } fclose(f); } *************** *** 234,241 **** exit(1); } ! /* XXX : no SMP support, yet. ! if (do_bonding) ! bond_to_cpu(cpu); ! */ busyloop(cpu); } --- 281,289 ---- exit(1); } ! if (do_bonding) { ! CPU_ZERO(&cpu_set); ! CPU_SET(cpu, &cpu_set); ! sched_setaffinity(kids[cpu], sizeof(cpu_set), &cpu_set); ! } busyloop(cpu); } *************** *** 253,260 **** static void calibrate(void) { prep_cyclesoak(); for ( ; ; ) { sleep(10); ! if (calibrated_loops_per_sec) { FILE *f = fopen(CPS_FILE, "w"); if (f == 0) { --- 301,311 ---- static void calibrate(void) { + int i; + prep_cyclesoak(); + for ( ; ; ) { sleep(10); ! if (calibration_complete) { FILE *f = fopen(CPS_FILE, "w"); if (f == 0) { *************** *** 263,267 **** exit(1); } ! fprintf(f, "%lu\n", calibrated_loops_per_sec); fclose(f); return; --- 314,320 ---- exit(1); } ! for (i = 0; i < nr_cpus; i++) { ! fprintf(f, "%lu\n", calibrated_loops_per_sec[i]); ! } fclose(f); return; *************** *** 346,350 **** return -1; ! /* XXX : get_cpus() (no SMP support) */ /* --- 399,405 ---- return -1; ! nr_cpus = count_cpus(); ! if (nr_cpus < 0) ! return -1; /* *************** *** 353,357 **** * period, take 3600 samples (i.e. one hour at one per second) */ ! if ( cooldown_time ) n_samples = (2 * ((cooldown_time + 1) / period_secs)); else --- 408,412 ---- * period, take 3600 samples (i.e. one hour at one per second) */ ! if (cooldown_time) n_samples = (2 * ((cooldown_time + 1) / period_secs)); else *************** *** 364,368 **** calibrate(); do_calibrate = 0; ! dbprintf("calibrated OK. %lu loops/sec\n", calibrated_loops_per_sec); exit_handler(); --- 419,423 ---- calibrate(); do_calibrate = 0; ! dbprintf("calibrated OK. %lu loops/sec\n", calibrated_loops_per_sec[0]); exit_handler(); |
From: Peter C. <pc...@us...> - 2014-02-10 00:40:46
|
Update of /cvsroot/ipbench/ipbench2/src/pymod In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25220/src/pymod Modified Files: ipbench.c Log Message: Update to compile against Wheezy Index: ipbench.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/pymod/ipbench.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ipbench.c 28 Aug 2006 01:35:23 -0000 1.15 --- ipbench.c 10 Feb 2014 00:40:44 -0000 1.16 *************** *** 28,33 **** --- 28,35 ---- #endif + #ifdef IPBENCH_TEST_CLIENT /* number of clients */ static int nclients; + #endif /* number of seconds between start() and stop() timestamping */ static double run_secs; |
From: Peter C. <pc...@us...> - 2010-03-25 03:19:28
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv29986/src/tests/nfs_latency Modified Files: nfs_glue.c nfs_latency.c Log Message: Fix absolute deviation calculation Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** nfs_latency.c 12 Mar 2010 03:03:46 -0000 1.20 --- nfs_latency.c 25 Mar 2010 03:19:20 -0000 1.21 *************** *** 421,434 **** static double ! absolute_deviation_uint64(uint64_t samples, unsigned n, uint64_t median) { unsigned i; int64_t d; ! double deviation; for (i = 0; i < n; i++) { d = *samples++ - median; deviation += d > 0 ? d : -d; } ! return d / n; } --- 421,434 ---- static double ! absolute_deviation_uint64(uint64_t *samples, unsigned n, uint64_t median) { unsigned i; int64_t d; ! double deviation = 0.0; for (i = 0; i < n; i++) { d = *samples++ - median; deviation += d > 0 ? d : -d; } ! return deviation / n; } Index: nfs_glue.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** nfs_glue.c 12 Mar 2010 03:03:45 -0000 1.11 --- nfs_glue.c 25 Mar 2010 03:19:20 -0000 1.12 *************** *** 315,318 **** --- 315,319 ---- if (initialised < 0){ + printf("Can't initialise: got %d\n", initialised); return -1; } |
From: Peter C. <pc...@us...> - 2010-03-12 03:04:00
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16353 Modified Files: nfs_glue.c nfs_latency.c Log Message: added standard deviation, and absulte deviation from median stats Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** nfs_latency.c 10 Feb 2010 03:56:28 -0000 1.19 --- nfs_latency.c 12 Mar 2010 03:03:46 -0000 1.20 *************** *** 2,5 **** --- 2,6 ---- #include "nfs_latency.h" #include "nfs_glue.h" + #include <math.h> /* *************** *** 42,47 **** /* set up default values */ ! nfs_options.path = "/tmp"; ! nfs_options.filename = "bench.file"; nfs_options.rate = 10000; /* per second */ nfs_options.cooldown = 0; --- 43,48 ---- /* set up default values */ ! nfs_options.path = strdup("/tmp/%h"); ! nfs_options.filename = strdup("bench.file"); nfs_options.rate = 10000; /* per second */ nfs_options.cooldown = 0; *************** *** 49,58 **** nfs_options.samples = 20000; /* parse parameters */ ! while (next_token(&arg, cmd, " \t,")){ if ((p = strchr(cmd, '='))) { *p = '\0'; val = p+1; ! }else{ val = NULL; } --- 50,60 ---- nfs_options.samples = 20000; + dbprintf("parse_arg(%s)\n", arg); /* parse parameters */ ! while (arg && next_token(&arg, cmd, " \t,")){ if ((p = strchr(cmd, '='))) { *p = '\0'; val = p+1; ! } else { val = NULL; } *************** *** 62,69 **** --- 64,73 ---- if (!strcmp(cmd, "path")){ + free(nfs_options.path); nfs_options.path = strdup(val); continue; } if (!strcmp(cmd, "filename")){ + free(nfs_options.filename); nfs_options.filename = strdup(val); continue; *************** *** 91,94 **** --- 95,124 ---- } + + dbprintf("Scanning path %s for %%h\n", nfs_options.path); + if ((p = strchr(nfs_options.path, '%'))) { + if (*++p == 'h') { + char name[200]; + *p='s'; + gethostname(name, sizeof name); + snprintf(cmd, sizeof cmd, nfs_options.path, name); + dbprintf("Expanded to %s\n", cmd); + free(nfs_options.path); + nfs_options.path = strdup(cmd); + } + } + dbprintf("Scanning path %s for %%h\n", nfs_options.filename); + if ((p = strchr(nfs_options.filename, '%'))) { + if (*++p == 'h') { + char name[200]; + dbprintf("Found %%h at %d\n", p-nfs_options.filename); + *p='s'; + gethostname(name, sizeof name); + snprintf(cmd, sizeof cmd, nfs_options.filename, name); + free(nfs_options.filename); + nfs_options.filename = strdup(cmd); + } + } + dbprintf("parse_arg: using: path=%s,filename=%s,rate=%lld\n", nfs_options.path, *************** *** 121,127 **** /* configure nfs options */ ! if (strlen(arg) != 0) ! if (parse_arg(arg)) ! return -1; x = init_and_open(hostname, nfs_options.path, nfs_options.filename); --- 151,159 ---- /* configure nfs options */ ! dbprintf("Calling parse_arg(%s)\n", arg); ! if (parse_arg(arg)) { ! dbprintf("parse_arg returned non-zero\n"); ! return -1; ! } x = init_and_open(hostname, nfs_options.path, nfs_options.filename); *************** *** 350,362 **** static int compare_uint64(const void *a, const void *b){ ! uint64_t *x, *y; ! x = (uint64_t*)a; ! y = (uint64_t*)b; ! if(*x < *y) return -1; ! if(*x > *y) return 1; --- 382,394 ---- static int compare_uint64(const void *a, const void *b){ ! uint64_t x, y; ! x = *(uint64_t *)a; ! y = *(uint64_t *)b; ! if (x < y) return -1; ! if (x > y) return 1; *************** *** 365,384 **** static uint64_t ! average_uint64(uint64_t *x, uint64_t n){ ! uint64_t i, total, new_total; ! assert(n>0); total = 0; ! for (i = 0; i < n; i++){ new_total = total + x[i]; assert(new_total >= total); total = new_total; } return (total / n); } /* * data[] is an array that has whatever was passed back from each --- 397,436 ---- static uint64_t ! average_uint64(uint64_t *x, unsigned n, double *stddevp){ ! double sumsqr; ! uint64_t total, new_total; ! unsigned i; ! double stddev; ! assert(n>1); total = 0; ! sumsqr = 0.0; for (i = 0; i < n; i++){ + /* guard against overflow */ new_total = total + x[i]; + sumsqr += x[i] * x[i]; assert(new_total >= total); total = new_total; } + stddev = sqrt((sumsqr - (double)(total*total)/n)/(n-1)); + *stddevp = stddev; return (total / n); } + static double + absolute_deviation_uint64(uint64_t samples, unsigned n, uint64_t median) + { + unsigned i; + int64_t d; + double deviation; + for (i = 0; i < n; i++) { + d = *samples++ - median; + deviation += d > 0 ? d : -d; + } + return d / n; + } + /* * data[] is an array that has whatever was passed back from each *************** *** 398,401 **** --- 450,454 ---- uint64_t avg_latency, avg_runtime; uint64_t tot_requests=0, tot_replies=0; + double stddevR, stddevL; dbprintf("NFS_LATENCY OUTPUT (nelem %d)\n", nelem); *************** *** 409,413 **** --- 462,468 ---- printf("Min latency,"); printf("Average latency,"); + printf("Stddeviation,"); printf("Median latency,"); + printf("Average abs. deviation,"); printf("Max latency,"); printf("Samples,"); *************** *** 415,418 **** --- 470,474 ---- printf("Average runtime,"); printf("Median runtime,"); + printf("Std dev runtime,"); printf("Max runtime"); printf("\n"); *************** *** 456,476 **** } - /* sort the runtimes */ - qsort(runtime, nelem, sizeof(uint64_t), compare_uint64); - avg_runtime = average_uint64(runtime, nelem); /* sort the samples */ qsort(aggregate, aggregate_count, sizeof(uint64_t), compare_uint64); ! avg_latency = average_uint64(aggregate, aggregate_count); printf("%" PRIu64 ",", (tot_requests*1000000) / avg_runtime); printf("%" PRIu64 ",", (tot_replies*1000000) / avg_runtime); printf("%" PRIu64 ",", aggregate[0]); printf("%" PRIu64 ",", avg_latency); printf("%" PRIu64 ",", aggregate[aggregate_count/2]); printf("%" PRIu64 ",", aggregate[aggregate_count-1]); printf("%" PRIu64 ",", aggregate_count); printf("%" PRIu64 ",", runtime[0]); printf("%" PRIu64 ",", avg_runtime); printf("%" PRIu64 ",", runtime[nelem/2]); printf("%" PRIu64, runtime[nelem-1]); --- 512,551 ---- } /* sort the samples */ + qsort(aggregate, aggregate_count, sizeof(uint64_t), compare_uint64); ! /* Discard 0-length samples */ ! for (i = 0; i < aggregate_count && aggregate[i] == 0; i++) ! ; ! ! aggregate += i; ! aggregate_count -= i; ! avg_latency = average_uint64(aggregate, aggregate_count, &stddevL); ! ! /* sort the runtimes */ ! qsort(runtime, nelem, sizeof(uint64_t), compare_uint64); ! /* Discard 0-length samples */ ! for (i = 0; i < nelem && runtime[i] == 0; i++) ! ; ! ! runtime += i; ! nelem -= i; ! avg_runtime = average_uint64(runtime, nelem, &stddevR); printf("%" PRIu64 ",", (tot_requests*1000000) / avg_runtime); printf("%" PRIu64 ",", (tot_replies*1000000) / avg_runtime); + printf("%" PRIu64 ",", aggregate[0]); printf("%" PRIu64 ",", avg_latency); + printf("%g,", stddevL); printf("%" PRIu64 ",", aggregate[aggregate_count/2]); + printf("%g,", absolute_deviation_uint64(aggregate, aggregate_count, aggregate[aggregate_count/2])); printf("%" PRIu64 ",", aggregate[aggregate_count-1]); printf("%" PRIu64 ",", aggregate_count); + printf("%" PRIu64 ",", runtime[0]); printf("%" PRIu64 ",", avg_runtime); + printf("%g,", stddevR); printf("%" PRIu64 ",", runtime[nelem/2]); printf("%" PRIu64, runtime[nelem-1]); Index: nfs_glue.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** nfs_glue.c 10 Feb 2010 01:35:57 -0000 1.10 --- nfs_glue.c 12 Mar 2010 03:03:45 -0000 1.11 *************** *** 219,222 **** --- 219,223 ---- } + struct lookup_dir { char *tail; *************** *** 227,231 **** static void ! dir_cb(uintptr_t token, int status, struct cookie *fh, fattr_t *pattrs){ struct lookup_dir *ldp = (struct lookup_dir *)token; --- 228,233 ---- static void ! dir_cb(uintptr_t token, int status, struct cookie *fh, fattr_t *pattrs) ! { struct lookup_dir *ldp = (struct lookup_dir *)token; *************** *** 234,238 **** ldp->ok = 1; } else { ! ldp->ok = -11; } } --- 236,242 ---- ldp->ok = 1; } else { ! dbprintf("Directory %s open failed: %d\n", ! ldp->linkname, status); ! ldp->ok = -1; } } *************** *** 249,252 **** --- 253,257 ---- s = ld.tail = strdup(name); ld.cwd = *cwd; + do { ld.ok = 0; *************** *** 256,260 **** slashp = strchr(ld.linkname, '/'); if (slashp) { ! *slashp= '\0'; ld.tail = slashp + 1; dbprintf("Looking up %s\n", ld.linkname); --- 261,265 ---- slashp = strchr(ld.linkname, '/'); if (slashp) { ! *slashp = '\0'; ld.tail = slashp + 1; dbprintf("Looking up %s\n", ld.linkname); *************** *** 298,302 **** mnt_get_export_list(); if (mnt_mount(mountpoint, &pfh)) { ! printf("Can't mount\n"); return -1; } --- 303,307 ---- mnt_get_export_list(); if (mnt_mount(mountpoint, &pfh)) { ! dbprintf("Can't mount\n"); return -1; } |
From: Peter C. <pc...@us...> - 2010-03-12 03:04:00
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16353/libnfs Modified Files: nfs.c nfsrpc.h Log Message: added standard deviation, and absulte deviation from median stats Index: nfsrpc.h =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/nfsrpc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nfsrpc.h 21 Jun 2005 02:57:38 -0000 1.1 --- nfsrpc.h 12 Mar 2010 03:03:47 -0000 1.2 *************** *** 268,281 **** struct nfs_filename { - int size; ! ! const char *file; ! }; #define COOKIE_START 0 - typedef int nfscookie_t; --- 268,277 ---- struct nfs_filename { int size; ! const char *file; }; #define COOKIE_START 0 typedef int nfscookie_t; *************** *** 284,295 **** typedef struct readdirargs { - struct cookie dir; ! ! nfscookie_t cookie; ! unsigned int count; ! ! } readdirargs_t; --- 280,287 ---- typedef struct readdirargs { struct cookie dir; ! nfscookie_t cookie; unsigned int count; ! } readdirargs_t; *************** *** 311,316 **** struct { ! fhandle ! * file; fattr attributes; } diropok; --- 303,307 ---- struct { ! fhandle * file; fattr attributes; } diropok; *************** *** 323,327 **** typedef enum ftype { - NFNON = 0, NFREG = 1, --- 314,317 ---- *************** *** 391,405 **** typedef struct readargs { - struct cookie file; - unsigned offset; - unsigned count; - unsigned totalcount; ! ! ! } readargs_t; --- 381,389 ---- typedef struct readargs { struct cookie file; unsigned offset; unsigned count; unsigned totalcount; ! } readargs_t; *************** *** 408,416 **** union readres switch (stat status) { ! case NFS_OK: ! fattr attributes; ! * fsdata data; ! default: ! void; }; */ --- 392,400 ---- union readres switch (stat status) { ! case NFS_OK: ! fattr attributes; ! * fsdata data; ! default: ! void; }; */ *************** *** 422,438 **** typedef struct writeargs { - struct cookie file; - int beginoffset; - int offset; - int totalcount; - - /* nfsdata data; */ ! } writeargs_t; ! /* attrstat NFSPROC_WRITE(writeargs) = 8; */ --- 406,415 ---- typedef struct writeargs { struct cookie file; int beginoffset; int offset; int totalcount; /* nfsdata data; */ ! } writeargs_t; /* attrstat NFSPROC_WRITE(writeargs) = 8; */ Index: nfs.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/nfs.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** nfs.c 10 Feb 2010 01:35:57 -0000 1.4 --- nfs.c 12 Mar 2010 03:03:47 -0000 1.5 *************** *** 48,51 **** --- 48,52 ---- if ((nfs_fd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { + dbprintf("socket failed: %s\n", strerror(errno)); return -1; } *************** *** 54,57 **** --- 55,60 ---- if (connect(nfs_fd, (struct sockaddr *) & s, sizeof(struct sockaddr_in)) < 0) { + dbprintf("connect failed: %s\n", strerror(errno)); + close(nfs_fd); return -1; |
From: Peter C. <pc...@us...> - 2010-03-07 22:24:58
|
Update of /cvsroot/ipbench/ipbench2/src/tests/http In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv24810/src/tests/http Removed Files: Makefile.orig Log Message: Remove file that was included by mistake. --- Makefile.orig DELETED --- |
From: Peter C. <pc...@us...> - 2010-03-04 00:19:30
|
Update of /cvsroot/ipbench/ipbench2/debian In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14583/debian Modified Files: .cvsignore Log Message: Ignore more generated files. Index: .cvsignore =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** .cvsignore 7 Feb 2010 23:08:24 -0000 1.2 --- .cvsignore 4 Mar 2010 00:19:23 -0000 1.3 *************** *** 9,19 **** --- 9,23 ---- ipbench-controller ipbench-controller.debhelper.log + ipbench-controller.substvars ipbench-daemon ipbench-daemon.debhelper.log ipbench-daemon.dirs + ipbench-daemon.substvars ipbench-dev ipbench-dev.debhelper.log + ipbench-dev.substvars ipbench-docs ipbench-docs.debhelper.log + ipbench-docs.substvars ipbench-plugins ipbench-plugins.debhelper.log *************** *** 31,34 **** --- 35,39 ---- libipbench1.postrm.debhelper libipbench1.substvars + stamp-autotools-configure stamp-autotools-files stamp-makefile-build |
From: Peter C. <pc...@us...> - 2010-03-04 00:19:30
|
Update of /cvsroot/ipbench/ipbench2 In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14583 Modified Files: .cvsignore Log Message: Ignore more generated files. Index: .cvsignore =================================================================== RCS file: /cvsroot/ipbench/ipbench2/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** .cvsignore 7 Feb 2010 23:08:10 -0000 1.2 --- .cvsignore 4 Mar 2010 00:19:23 -0000 1.3 *************** *** 3,6 **** --- 3,7 ---- aclocal.m4 autom4te.cache + compile config.guess config.guess.cdbs-orig |
From: Peter C. <pc...@us...> - 2010-03-04 00:19:04
|
Update of /cvsroot/ipbench/ipbench2/debian In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14456/debian Modified Files: changelog control Log Message: New version: nfsstone should now work, and I've actually tested the XML parsing this time... Index: control =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/control,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** control 3 Feb 2010 01:26:51 -0000 1.8 --- control 4 Mar 2010 00:18:41 -0000 1.9 *************** *** 64,68 **** Package: ipbench-controller Architecture: all ! Depends: ${shlibs:Depends}, python, ipbench-client, ipbench-target Description: Controller script for ipbench2 ipbench is a distributed networking suite with a variety of tests and --- 64,68 ---- Package: ipbench-controller Architecture: all ! Depends: ${shlibs:Depends}, python, ipbench-client, ipbench-target, python-lxml Description: Controller script for ipbench2 ipbench is a distributed networking suite with a variety of tests and Index: changelog =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/changelog,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** changelog 10 Feb 2010 04:02:51 -0000 1.7 --- changelog 4 Mar 2010 00:18:41 -0000 1.8 *************** *** 1,2 **** --- 1,9 ---- + ipbench (2.0.1-6) unstable; urgency=low + + * Fixes to nfsstone: no longer dumps core on exit + * Use python-lxml to get full XPATH support in controller script. + + -- Peter Chubb <pe...@ge...> Thu, 04 Mar 2010 11:17:49 +1100 + ipbench (2.0.1-5) unstable; urgency=low |
From: Peter C. <pc...@us...> - 2010-03-04 00:19:02
|
Update of /cvsroot/ipbench/ipbench2 In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14456 Modified Files: ChangeLog Log Message: New version: nfsstone should now work, and I've actually tested the XML parsing this time... Index: ChangeLog =================================================================== RCS file: /cvsroot/ipbench/ipbench2/ChangeLog,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** ChangeLog 10 Feb 2010 04:02:51 -0000 1.25 --- ChangeLog 4 Mar 2010 00:18:41 -0000 1.26 *************** *** 1,2 **** --- 1,9 ---- + 2010-03-04 Peter Chubb <pe...@ge...> + + * Depend on python-lxml to get full XPATH support for ipbench + controller. + * nfsstone fixes. Used to dump core in ipbenchd when used. + + 2010-02-10 Peter Chubb <pe...@ge...> |
From: Peter C. <pc...@us...> - 2010-03-04 00:19:02
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfsstone In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14456/src/tests/nfsstone Modified Files: nfsstones.c Log Message: New version: nfsstone should now work, and I've actually tested the XML parsing this time... Index: nfsstones.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfsstone/nfsstones.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** nfsstones.c 3 Feb 2010 01:26:51 -0000 1.15 --- nfsstones.c 4 Mar 2010 00:18:41 -0000 1.16 *************** *** 12,16 **** #include <sys/utsname.h> ! /* * This program has been modified to extend the ipbench, benchmark * framework. The original code base has been kept and resturctured --- 12,16 ---- #include <sys/utsname.h> ! /* * This program has been modified to extend the ipbench, benchmark * framework. The original code base has been kept and resturctured *************** *** 20,24 **** * main()->nfsstone_start() */ ! /* * This program takes two arguments. The first one is the directory to --- 20,24 ---- * main()->nfsstone_start() */ ! /* * This program takes two arguments. The first one is the directory to *************** *** 99,103 **** double ustos(uint64_t usec) ! { double tmp = usec/1000000.0; return tmp; --- 99,103 ---- double ustos(uint64_t usec) ! { double tmp = usec/1000000.0; return tmp; *************** *** 147,151 **** char *tmp_top_dirs, *tmp_bot_dirs; char *err_buf; /* error buffer for strtol() */ ! if(strncmp(version,"1.0", 256) == 0){ fprintf(stderr, "/****************************************************/\n"); --- 147,151 ---- char *tmp_top_dirs, *tmp_bot_dirs; char *err_buf; /* error buffer for strtol() */ ! if(strncmp(version,"1.0", 256) == 0){ fprintf(stderr, "/****************************************************/\n"); *************** *** 167,180 **** } strncpy(tmp,arg,STR_LEN); ! if (hostname == NULL){ fprintf(stderr, "nfsstone_setup called with hostname = NULL\n"); } dbprintf("[%d][nfsstone_setup] called with: hostname[%s], port[%d], arg[%s]\n", ! __LINE__,hostname, port, tmp); ! strncpy(path,strtok(tmp, " \t\n"),STR_LEN); strncpy(lock,strtok(NULL, " \t\n"),STR_LEN); ! if( (tmp_top_dirs=strtok(NULL," \t\n")) != NULL ){ top_dirs=strtol(tmp_top_dirs,&err_buf,0); --- 167,180 ---- } strncpy(tmp,arg,STR_LEN); ! if (hostname == NULL){ fprintf(stderr, "nfsstone_setup called with hostname = NULL\n"); } dbprintf("[%d][nfsstone_setup] called with: hostname[%s], port[%d], arg[%s]\n", ! __LINE__,hostname, port, tmp); ! strncpy(path,strtok(tmp, " \t\n"),STR_LEN); strncpy(lock,strtok(NULL, " \t\n"),STR_LEN); ! if( (tmp_top_dirs=strtok(NULL," \t\n")) != NULL ){ top_dirs=strtol(tmp_top_dirs,&err_buf,0); *************** *** 185,189 **** } } ! if( (tmp_bot_dirs=strtok(NULL," \t\n")) != NULL ){ bot_dirs=strtol(tmp_bot_dirs,&err_buf,0); --- 185,189 ---- } } ! if( (tmp_bot_dirs=strtok(NULL," \t\n")) != NULL ){ bot_dirs=strtol(tmp_bot_dirs,&err_buf,0); *************** *** 194,198 **** } } ! dbprintf("[%d][nfsstone_setup]path[%s] lock [%s]\n\tTOP_DIRS[%ld], BOT_DIRS[%ld]\n", __LINE__,path, lock, top_dirs, bot_dirs); --- 194,198 ---- } } ! dbprintf("[%d][nfsstone_setup]path[%s] lock [%s]\n\tTOP_DIRS[%ld], BOT_DIRS[%ld]\n", __LINE__,path, lock, top_dirs, bot_dirs); *************** *** 223,227 **** return FAIL; } ! /* * Now we go get the lock to synchronise with the other clients --- 223,227 ---- return FAIL; } ! /* * Now we go get the lock to synchronise with the other clients *************** *** 247,253 **** struct stat stat_buf; int error=OK; ! gettimeofday(stop,NULL); ! if (stat(path, &stat_buf) != OK) { perror("path_prefix"); --- 247,253 ---- struct stat stat_buf; int error=OK; ! gettimeofday(stop,NULL); ! if (stat(path, &stat_buf) != OK) { perror("path_prefix"); *************** *** 276,282 **** int nfsstone_marshall(char **data, int *size, double running_time) { ! data = malloc(sizeof(results)); ! memcpy(data, &results, sizeof(results)); *size = sizeof(results) + 1; return OK; } --- 276,286 ---- int nfsstone_marshall(char **data, int *size, double running_time) { ! *data = malloc(sizeof(results)); ! ! // ASSERT(*data); ! ! memcpy(*data, &results, sizeof(results)); *size = sizeof(results) + 1; + return OK; } *************** *** 291,305 **** char *res = malloc(input_len); dbprintf("[%d][nfsstone_unmarshall]\n",__LINE__); - ! if(res!=NULL){ ! *data = res; ! memcpy(res, input, input_len); ! *data_len = input_len; ! } ! else{ fprintf(stderr,"[%d][nfsstone_unmarshall]Received bad data oops.\n", __LINE__); return FAIL; } return OK; } --- 295,308 ---- char *res = malloc(input_len); dbprintf("[%d][nfsstone_unmarshall]\n",__LINE__); ! if (res == NULL){ fprintf(stderr,"[%d][nfsstone_unmarshall]Received bad data oops.\n", __LINE__); return FAIL; } + + *data = res; + memcpy(res, input, input_len); + *data_len = input_len; + return OK; } *************** *** 310,313 **** --- 313,317 ---- return; } + int nfsstone_output(struct client_data data[], int nelem) { *************** *** 317,333 **** uint64_t stones_equal[nelem]; /* make sure the work loads were equal */ uint64_t avg_total_time=0; ! ! for(i=0; i < nelem; i++){ ! res=(struct nfsstone_results *)(data[i].data); ! if(res != NULL){ int j; uint64_t c_stones, c_run_time; ! ! for(j=0;j<i;j++){ ! /* * here we check to see that the loads are equal * I see no point in benchmarking unequal loads. */ ! if( stones_equal[j] != ntohll(res->total_stones) ){ struct nfsstone_results *tmp=(struct nfsstone_results *)(data[j].data); printf("========= Invalid results =========\n"); --- 321,337 ---- uint64_t stones_equal[nelem]; /* make sure the work loads were equal */ uint64_t avg_total_time=0; ! ! for (i=0; i < nelem; i++){ ! res = (struct nfsstone_results *)(data[i].data); ! if (res != NULL) { int j; uint64_t c_stones, c_run_time; ! ! for (j=0; j<i; j++){ ! /* * here we check to see that the loads are equal * I see no point in benchmarking unequal loads. */ ! if (stones_equal[j] != ntohll(res->total_stones)) { struct nfsstone_results *tmp=(struct nfsstone_results *)(data[j].data); printf("========= Invalid results =========\n"); *************** *** 336,351 **** } } ! c_stones = ntohll(res->total_stones); c_run_time = ntohll(res->usec); stones_equal[i] = c_stones; avg_total_time += c_run_time; ! printf("Nfsstone results for: %s\n", res->host); printf("Total Nfsstones Total Time Seconds Nfsstone/Second\n"); printf("%15"PRIu64"%22.5f%19.5f\n", c_stones, ustos(c_run_time), c_stones/ustos(c_run_time) ); ! } ! else{ printf("nfsstone client data results are NULL\n"); } --- 340,354 ---- } } ! c_stones = ntohll(res->total_stones); c_run_time = ntohll(res->usec); stones_equal[i] = c_stones; avg_total_time += c_run_time; ! printf("Nfsstone results for: %s\n", res->host); printf("Total Nfsstones Total Time Seconds Nfsstone/Second\n"); printf("%15"PRIu64"%22.5f%19.5f\n", c_stones, ustos(c_run_time), c_stones/ustos(c_run_time) ); ! } else { printf("nfsstone client data results are NULL\n"); } *************** *** 357,360 **** --- 360,364 ---- printf(" Std. Dev.\n"); printf( "%20.5f\n", ustos(std_dev(data,avg_total_time,nelem)) ); + return OK; } *************** *** 364,368 **** struct timeval end_time; int error = 0; ! error = nfsstone_run(start, &end_time); dbprintf("[%d][nfsstone_start] returning error[%d]\n", __LINE__, error); --- 368,372 ---- struct timeval end_time; int error = 0; ! error = nfsstone_run(start, &end_time); dbprintf("[%d][nfsstone_start] returning error[%d]\n", __LINE__, error); *************** *** 371,375 **** /* ! * This level of indirection is required due to the fact the we fork. * Ipbench only expects ONE return value not a whole bunch so just * return once from here after all children or errors are accounted for. --- 375,379 ---- /* ! * This level of indirection is because we fork. * Ipbench only expects ONE return value not a whole bunch so just * return once from here after all children or errors are accounted for. *************** *** 377,389 **** int nfsstone_run(struct timeval *start, struct timeval *end_time) { ! struct timezone dummy; char hostname[BUFSIZ]; ! int i, j, num = 0, status; pid_t pid=0; char s[BUFSIZ], t[BUFSIZ], u[BUFSIZ]; int error = OK; ! /* Do not include getting host name in * timming calcs, this would be wrong!!! --- 381,393 ---- int nfsstone_run(struct timeval *start, struct timeval *end_time) { ! struct timezone dummy; char hostname[BUFSIZ]; ! int i, j, num = 0, status; pid_t pid=0; char s[BUFSIZ], t[BUFSIZ], u[BUFSIZ]; int error = OK; ! /* Do not include getting host name in * timming calcs, this would be wrong!!! *************** *** 395,401 **** error += FAIL; } ! dbprintf("Using hostname[%s]\n", hostname); ! /* * Start Timing --- 399,405 ---- error += FAIL; } ! dbprintf("Using hostname[%s]\n", hostname); ! /* * Start Timing *************** *** 405,414 **** error += FAIL; } ! for (i = 0; i < TOP_DIRS; i++) { /* dont even think of starting if already in error */ if(error) break; ! (void)sprintf(u, "%8d-%s", ++num, hostname); dbprintf("[%d][nfsstone_run]Makeing directory '%s'\n", __LINE__, u); --- 409,418 ---- error += FAIL; } ! for (i = 0; i < TOP_DIRS; i++) { /* dont even think of starting if already in error */ if(error) break; ! (void)sprintf(u, "%8d-%s", ++num, hostname); dbprintf("[%d][nfsstone_run]Makeing directory '%s'\n", __LINE__, u); *************** *** 441,445 **** } } ! while( (pid=wait(&status)) != -1) if (WEXITSTATUS(status) != OK) --- 445,449 ---- } } ! while( (pid=wait(&status)) != -1) if (WEXITSTATUS(status) != OK) *************** *** 481,485 **** strncpy(results.host, hostname, STR_LEN); results.total_stones=htonll((long)TOTAL_OPS); ! results.usec = htonll(stous((end_time->tv_sec - start->tv_sec)) + (end_time->tv_usec - start->tv_usec)); dbprintf("usec[%"PRIu64"]\n", results.usec); --- 485,489 ---- strncpy(results.host, hostname, STR_LEN); results.total_stones=htonll((long)TOTAL_OPS); ! results.usec = htonll(stous((end_time->tv_sec - start->tv_sec)) + (end_time->tv_usec - start->tv_usec)); dbprintf("usec[%"PRIu64"]\n", results.usec); *************** *** 496,500 **** dbprintf("[%d][nfsstone do_child]\n", __LINE__); ! if (chdir(dir) != OK) { dbprintf("Could not chdir(%s)\n", dir); --- 500,504 ---- dbprintf("[%d][nfsstone do_child]\n", __LINE__); ! if (chdir(dir) != OK) { dbprintf("Could not chdir(%s)\n", dir); *************** *** 517,521 **** * Now lets through in some readlink calls */ ! if (symlink("/aaa/bbb/ccc/ddd/eee/fff", "Test_link") != OK) { perror("symlink"); --- 521,525 ---- * Now lets through in some readlink calls */ ! if (symlink("/aaa/bbb/ccc/ddd/eee/fff", "Test_link") != OK) { perror("symlink"); |
From: Peter C. <pc...@us...> - 2010-03-03 04:02:11
|
Update of /cvsroot/ipbench/ipbench2/src In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16889/src Modified Files: ipbench.py Log Message: Use lxml instead of xml, to get more XPATH syntax. Index: ipbench.py =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/ipbench.py,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** ipbench.py 8 Feb 2010 23:40:37 -0000 1.36 --- ipbench.py 3 Mar 2010 04:01:53 -0000 1.37 *************** *** 9,13 **** import select from optparse import OptionParser ! from xml.etree.ElementTree import parse options = None --- 9,13 ---- import select from optparse import OptionParser ! from lxml.etree import parse options = None *************** *** 288,292 **** ! tests = doc.findAll('/ipbench/test') if (len(tests) > 1): print "Error in config: please only have one <test> section" --- 288,292 ---- ! tests = doc.findall('test') if (len(tests) > 1): print "Error in config: please only have one <test> section" *************** *** 308,312 **** # go through each <client>, override default values from attributes and add it to the # clients[] list ! data = doc.findAll('/ipbench/test/client') for cclients in data: newclient = { --- 308,312 ---- # go through each <client>, override default values from attributes and add it to the # clients[] list ! data = tests[0].findall('./client') for cclients in data: newclient = { *************** *** 329,337 **** #now look for the <target_test> section, add to the targets list ! target_tests = doc.FindAll("/ipbench/target_test") for target_test in target_tests: ! target_test_name = test.get('name') ! options.target_test_args = test.get('args') ! options.target_controller_args = str(test.get('controller_args')) # it is possible that there will be multiple <target_test> --- 329,337 ---- #now look for the <target_test> section, add to the targets list ! target_tests = doc.findall("target_test") for target_test in target_tests: ! target_test_name = target_test.get('name') ! options.target_test_args = target_test.get('args') ! options.target_controller_args = str(target_test.get('controller_args')) # it is possible that there will be multiple <target_test> *************** *** 339,345 **** # make sure we only select those targets for the target # test we are currently looking at. ! tclients = doc.findAll("/ipbench/target_test[@name=\'"+target_test_name+"\']/target") if (not (len(tclients) > 0)): ! print "Please specifiy some targets in the <target_test> section!" sys.exit(1) for tclient in tclients: --- 339,345 ---- # make sure we only select those targets for the target # test we are currently looking at. ! tclients = doc.findall("target_test[@name=\'"+target_test_name+"\']/target") if (not (len(tclients) > 0)): ! print "Please specify some targets in the <target_test> section!" sys.exit(1) for tclient in tclients: *************** *** 353,361 **** newtarget["hostname"] = tclient.get('hostname', options.target_test_hostname) ! newtarget["port"] = int(tclient.get(port, options.target_test_port)) newtarget["test_args"] = str(tclient.get('test_args', options.target_test_args)) if (newtarget["hostname"] == None): ! print "Please specifiy a hostname for the target!" sys.exit(1) --- 353,361 ---- newtarget["hostname"] = tclient.get('hostname', options.target_test_hostname) ! newtarget["port"] = int(tclient.get('port', options.target_test_port)) newtarget["test_args"] = str(tclient.get('test_args', options.target_test_args)) if (newtarget["hostname"] == None): ! print "Please specify a hostname for the target!" sys.exit(1) |
From: Peter C. <pc...@us...> - 2010-02-10 04:02:59
|
Update of /cvsroot/ipbench/ipbench2 In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20779 Modified Files: ChangeLog Log Message: Update changelogs, new Debian revision. Index: ChangeLog =================================================================== RCS file: /cvsroot/ipbench/ipbench2/ChangeLog,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ChangeLog 3 Feb 2010 01:26:50 -0000 1.24 --- ChangeLog 10 Feb 2010 04:02:51 -0000 1.25 *************** *** 1,2 **** --- 1,8 ---- + 2010-02-10 Peter Chubb <pe...@ge...> + + * nfs_latency fixes -- now obeys similar arguments to the latency + test (warmup, cooldown in seconds, samples=) + * Updated manual. + 2010-02-02 Peter Chubb <pe...@ge...> |
From: Peter C. <pc...@us...> - 2010-02-10 04:02:59
|
Update of /cvsroot/ipbench/ipbench2/debian In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20779/debian Modified Files: changelog Log Message: Update changelogs, new Debian revision. Index: changelog =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/changelog,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** changelog 9 Feb 2010 03:34:39 -0000 1.6 --- changelog 10 Feb 2010 04:02:51 -0000 1.7 *************** *** 1,2 **** --- 1,9 ---- + ipbench (2.0.1-5) unstable; urgency=low + + * More fixes to nfs_latency: now obeys warmup, cooldown + and samples arguments. + + -- Peter Chubb <pe...@ge...> Wed, 10 Feb 2010 14:59:24 +1100 + ipbench (2.0.1-4) unstable; urgency=low |
From: Peter C. <pc...@us...> - 2010-02-10 03:56:41
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv26623/src/tests/nfs_latency Modified Files: nfs_latency.c Log Message: Fix end-test condition. Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** nfs_latency.c 10 Feb 2010 02:02:50 -0000 1.18 --- nfs_latency.c 10 Feb 2010 03:56:28 -0000 1.19 *************** *** 182,185 **** --- 182,186 ---- delta = tick_to_usec(now - start_time); predicted_requests = (delta * nfs_options.rate) / US_PER_S; + if (predicted_requests > requests){ r = generate_request(now); *************** *** 191,195 **** } ! if (process_reply(&then) == 0 && now > warmup_time && cooldown_time == 0){ if (offset == 0) { dbprintf("Warmup done, start test\n"); --- 192,196 ---- } ! if ((process_reply(&then) == 0) && (now > warmup_time) && (cooldown_time == 0)){ if (offset == 0) { dbprintf("Warmup done, start test\n"); *************** *** 201,212 **** } ! if (replies >= target) { cooldown_time = now; result.sends = requests - offset; ! end_time = cooldown_time + cooldown; } } - end_time = time_stamp(); result.microseconds = tick_to_usec(cooldown_time - warmup_time); result.recvs = replies; --- 202,214 ---- } ! if (replies == target && cooldown_time == 0) { cooldown_time = now; result.sends = requests - offset; ! end_time = now + cooldown; ! dbprintf("Starting cooldown; now=%lld, end=%lld\n", ! now, end_time); } } result.microseconds = tick_to_usec(cooldown_time - warmup_time); result.recvs = replies; |
From: Peter C. <pc...@us...> - 2010-02-10 02:03:03
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv1078/src/tests/nfs_latency Modified Files: nfs_latency.c Log Message: Fix off-by-10000000 error in counting samples. Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** nfs_latency.c 10 Feb 2010 01:35:57 -0000 1.17 --- nfs_latency.c 10 Feb 2010 02:02:50 -0000 1.18 *************** *** 83,87 **** } if (!strcmp(cmd, "samples")) { ! nfs_options.samples = strtoll(val, (char**)NULL, 10) * US_PER_S; continue; } --- 83,87 ---- } if (!strcmp(cmd, "samples")) { ! nfs_options.samples = strtoll(val, (char**)NULL, 10); continue; } *************** *** 192,197 **** if (process_reply(&then) == 0 && now > warmup_time && cooldown_time == 0){ ! if (offset == 0) offset = requests; replies++; sample[i] = now - then; --- 192,199 ---- if (process_reply(&then) == 0 && now > warmup_time && cooldown_time == 0){ ! if (offset == 0) { ! dbprintf("Warmup done, start test\n"); offset = requests; + } replies++; sample[i] = now - then; |
From: Peter C. <pc...@us...> - 2010-02-10 01:36:06
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22962/src/tests/nfs_latency Modified Files: nfs_latency.c nfs_glue.h nfs_glue.c Log Message: Get rid of some fd leaks. Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** nfs_latency.c 10 Feb 2010 00:55:34 -0000 1.16 --- nfs_latency.c 10 Feb 2010 01:35:57 -0000 1.17 *************** *** 225,228 **** --- 225,229 ---- gettimeofday (stop, NULL); dbprintf ("NFS_LATENCY STOP\n"); + nfs_lat_cleanup(); return 0; } Index: nfs_glue.h =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nfs_glue.h 23 Jun 2005 04:27:33 -0000 1.1 --- nfs_glue.h 10 Feb 2010 01:35:57 -0000 1.2 *************** *** 2,3 **** --- 2,4 ---- int generate_request(); int process_reply(uint64_t *timestamp); + void nfs_lat_cleanup(void); Index: nfs_glue.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** nfs_glue.c 10 Feb 2010 01:04:15 -0000 1.9 --- nfs_glue.c 10 Feb 2010 01:35:57 -0000 1.10 *************** *** 281,284 **** --- 281,287 ---- microuptime_calibrate(); calibrated = 1; + + /* XXX these should be dynamically controlled */ + callback_init(10,100000); } *************** *** 288,293 **** } - /* XXX these should be dynamically controlled */ - callback_init(10,100000); map_init(&addr); --- 291,294 ---- *************** *** 302,305 **** --- 303,307 ---- recursive_lookup(&pfh, filename, open_cb, 0); + initialised = 0; while (initialised == 0){ struct pbuf buf; *************** *** 315,316 **** --- 317,326 ---- return 0; } + + void + nfs_lat_cleanup(void) + { + nfs_cleanup(); + mnt_cleanup(); + map_cleanup(); + } |
From: Peter C. <pc...@us...> - 2010-02-10 01:36:05
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22962/src/tests/nfs_latency/libnfs Modified Files: portmap.c nfs.h nfs.c mount.c Log Message: Get rid of some fd leaks. Index: portmap.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/portmap.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** portmap.c 9 Feb 2010 01:04:23 -0000 1.2 --- portmap.c 10 Feb 2010 01:35:57 -0000 1.3 *************** *** 87,88 **** --- 87,94 ---- return 0; } + + void + map_cleanup(void) + { + close(map_fd); + } Index: nfs.h =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/nfs.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** nfs.h 21 Jun 2005 02:57:38 -0000 1.1 --- nfs.h 10 Feb 2010 01:35:57 -0000 1.2 *************** *** 19,22 **** --- 19,26 ---- int nfs_init(struct sockaddr_in * name); + /* And to clean up again */ + void map_cleanup(void); + void mnt_cleanup(void); + void nfs_cleanup(void); /* mount functions */ Index: mount.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/mount.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** mount.c 9 Feb 2010 02:52:50 -0000 1.4 --- mount.c 10 Feb 2010 01:35:57 -0000 1.5 *************** *** 130,131 **** --- 130,137 ---- return 0; } + + void + mnt_cleanup(void) + { + close(mount_fd); + } Index: nfs.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/libnfs/nfs.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** nfs.c 9 Feb 2010 00:24:20 -0000 1.3 --- nfs.c 10 Feb 2010 01:35:57 -0000 1.4 *************** *** 536,537 **** --- 536,543 ---- return ERR_FAILURE; } + + void + nfs_cleanup(void) + { + close(nfs_fd); + } |
From: Peter C. <pc...@us...> - 2010-02-10 01:04:28
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv11510 Modified Files: nfs_glue.c Log Message: Only run microuptime_calibrate once. Index: nfs_glue.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** nfs_glue.c 9 Feb 2010 02:52:46 -0000 1.8 --- nfs_glue.c 10 Feb 2010 01:04:15 -0000 1.9 *************** *** 276,281 **** struct sockaddr_in addr; struct cookie pfh; ! microuptime_calibrate(); if (resolve(hostname, &addr) < 0){ --- 276,285 ---- struct sockaddr_in addr; struct cookie pfh; + static int calibrated = 0; ! if (!calibrated) { ! microuptime_calibrate(); ! calibrated = 1; ! } if (resolve(hostname, &addr) < 0){ |
From: Peter C. <pc...@us...> - 2010-02-10 00:55:55
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10959/src/tests/nfs_latency Modified Files: nfs_latency.c Log Message: Attempt to add warmup/cooldown to nfs_latency test. Index: nfs_latency.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_latency.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** nfs_latency.c 9 Feb 2010 00:24:16 -0000 1.15 --- nfs_latency.c 10 Feb 2010 00:55:34 -0000 1.16 *************** *** 32,35 **** --- 32,38 ---- char *filename; uint64_t rate; + uint64_t warmup; /* usec */ + uint64_t cooldown; /* usec */ + uint64_t samples; /* count */ } nfs_options; *************** *** 41,45 **** nfs_options.path = "/tmp"; nfs_options.filename = "bench.file"; ! nfs_options.rate = 10000; /* parse parameters */ --- 44,51 ---- nfs_options.path = "/tmp"; nfs_options.filename = "bench.file"; ! nfs_options.rate = 10000; /* per second */ ! nfs_options.cooldown = 0; ! nfs_options.warmup = 0; ! nfs_options.samples = 20000; /* parse parameters */ *************** *** 68,71 **** --- 74,91 ---- } + if (!strcmp(cmd, "warmup")) { + nfs_options.warmup = strtoll(val, (char**)NULL, 10) * US_PER_S; + continue; + } + if (!strcmp(cmd, "cooldown")) { + nfs_options.cooldown = strtoll(val, (char**)NULL, 10) * US_PER_S; + continue; + } + if (!strcmp(cmd, "samples")) { + nfs_options.samples = strtoll(val, (char**)NULL, 10) * US_PER_S; + continue; + } + + dbprintf("Invalid argument %s=%s.\n", cmd, val); } *************** *** 75,78 **** --- 95,102 ---- nfs_options.filename, nfs_options.rate); + dbprintf("parse_arg: using: warmup = %lld, cooldown = %lld, nsamples = %lld\n", + nfs_options.warmup, + nfs_options.cooldown, + nfs_options.samples); return 0; *************** *** 102,106 **** x = init_and_open(hostname, nfs_options.path, nfs_options.filename); - return x; --- 126,129 ---- *************** *** 127,142 **** { int i=0; ! int target=200000; int r; ! uint64_t now, then, delta; ! uint64_t start_time, end_time; uint64_t requests, replies; uint64_t predicted_requests; dbprintf("NFS_LATENCY START\n"); gettimeofday(start, NULL); ! dbprintf("NFS latency start,\n"); ! if(nfs_latency_finished==0){ /* allocate memory for samples */ samples = target; --- 150,167 ---- { int i=0; ! int target=nfs_options.samples; int r; ! uint64_t now, then, delta, cooldown; ! uint64_t start_time, warmup_time, cooldown_time, end_time; ! /* start_time < warmup_time < cooldown_time < end_time */ uint64_t requests, replies; uint64_t predicted_requests; + uint64_t offset; dbprintf("NFS_LATENCY START\n"); gettimeofday(start, NULL); ! dbprintf("NFS latency start warmup,\n"); ! if (nfs_latency_finished==0){ /* allocate memory for samples */ samples = target; *************** *** 148,179 **** start_time = time_stamp(); ! requests = replies = 0; - while(i<target){ - now = time_stamp(); - delta = tick_to_usec(now - start_time); predicted_requests = (delta * nfs_options.rate) / US_PER_S; ! ! if(predicted_requests > requests){ r = generate_request(now); ! if(r>0){ requests++; ! }else{ //dbprintf("generate request failed\n"); } } ! if(process_reply(&then)==0){ replies++; sample[i] = now - then; i++; } } end_time = time_stamp(); ! ! result.microseconds = tick_to_usec(end_time - start_time); ! result.sends = requests; result.recvs = replies; --- 173,211 ---- start_time = time_stamp(); ! offset = requests = replies = 0; ! warmup_time = start_time + usec_to_tick(nfs_options.warmup); ! cooldown_time = end_time = 0; /* calculated later */ ! cooldown = usec_to_tick(nfs_options.cooldown); ! ! while ((now = time_stamp()) && (end_time == 0 || now < end_time)) { delta = tick_to_usec(now - start_time); predicted_requests = (delta * nfs_options.rate) / US_PER_S; ! if (predicted_requests > requests){ r = generate_request(now); ! if (r > 0){ requests++; ! } else { //dbprintf("generate request failed\n"); } } ! if (process_reply(&then) == 0 && now > warmup_time && cooldown_time == 0){ ! if (offset == 0) ! offset = requests; replies++; sample[i] = now - then; i++; } + + if (replies >= target) { + cooldown_time = now; + result.sends = requests - offset; + end_time = cooldown_time + cooldown; + } } end_time = time_stamp(); ! result.microseconds = tick_to_usec(cooldown_time - warmup_time); result.recvs = replies; *************** *** 225,230 **** } ! for(i=0; i<samples; i++){ ! /* XXX is sample[i] in uS? */ tosend->data[i] = htonll(tick_to_usec(sample[i])); } --- 257,261 ---- } ! for (i = 0; i < samples; i++){ tosend->data[i] = htonll(tick_to_usec(sample[i])); } *************** *** 282,286 **** #endif ! for(i=0; i<theresult->samples; i++){ theresult->data[i] = ntohll(theresult->data[i]); } --- 313,317 ---- #endif ! for (i = 0; i < theresult->samples; i++){ theresult->data[i] = ntohll(theresult->data[i]); } *************** *** 294,298 **** } ! assert(input_len==*data_len); memcpy(*data, input, input_len); --- 325,329 ---- } ! assert(input_len == *data_len); memcpy(*data, input, input_len); *************** *** 336,340 **** total = 0; ! for(i=0; i<n; i++){ new_total = total + x[i]; assert(new_total >= total); --- 367,371 ---- total = 0; ! for (i = 0; i < n; i++){ new_total = total + x[i]; assert(new_total >= total); |
From: Peter C. <pc...@us...> - 2010-02-09 03:34:47
|
Update of /cvsroot/ipbench/ipbench2/debian In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4842/debian Modified Files: changelog Log Message: add rule for building manual.pdf New debian package version. Index: changelog =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/changelog,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** changelog 3 Feb 2010 01:56:57 -0000 1.5 --- changelog 9 Feb 2010 03:34:39 -0000 1.6 *************** *** 1,2 **** --- 1,10 ---- + ipbench (2.0.1-4) unstable; urgency=low + + * Fix nfs_latency test + * Add documentation for nfs_latency + * Fix some lintian warnings --- man pages etc are now compressed. + + -- Peter Chubb <pe...@ge...> Tue, 09 Feb 2010 14:32:03 +1100 + ipbench (2.0.1-3) unstable; urgency=low |
From: Peter C. <pc...@us...> - 2010-02-09 03:34:47
|
Update of /cvsroot/ipbench/ipbench2/doc/manual In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4842/doc/manual Modified Files: Makefile.am Log Message: add rule for building manual.pdf New debian package version. Index: Makefile.am =================================================================== RCS file: /cvsroot/ipbench/ipbench2/doc/manual/Makefile.am,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Makefile.am 28 Jun 2004 05:19:13 -0000 1.1.1.1 --- Makefile.am 9 Feb 2010 03:34:39 -0000 1.2 *************** *** 1,2 **** --- 1,4 ---- EXTRA_DIST=manual.sgml + %.pdf: %.sgml + docbook2pdf $< \ No newline at end of file |
From: Peter C. <pc...@us...> - 2010-02-09 03:31:52
|
Update of /cvsroot/ipbench/ipbench2/doc/manual In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv4277 Modified Files: manual.sgml Log Message: Add nfs_latency test, fix spelling. Index: manual.sgml =================================================================== RCS file: /cvsroot/ipbench/ipbench2/doc/manual/manual.sgml,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** manual.sgml 28 Jun 2004 05:19:13 -0000 1.1.1.1 --- manual.sgml 9 Feb 2010 03:31:40 -0000 1.2 *************** *** 16,20 **** <copyright> ! <year>2004</year> <holder role='mailto:ia...@ge...'>Ian Wienand</holder> </copyright> --- 16,20 ---- <copyright> ! <year>2004, 2010</year> <holder role='mailto:ia...@ge...'>Ian Wienand</holder> </copyright> *************** *** 39,48 **** <sect1> <title>Test setup</title> <para>To run an &ipbench; test you ! will require several components to be working together. Firstly, the <emphasis>controller</emphasis> machine is that machine that you are assumed to be sitting at, wanting a set of benchmarking results. You will farm your work out to ! a/some/many <emphasis>client</emphasis> machines that will run ! the benchmark at a specific <emphasis>target</emphasis>. Possibly, you at the controller require some information from the target, for example, how much CPU time it used, so may --- 39,48 ---- <sect1> <title>Test setup</title> <para>To run an &ipbench; test you ! need several components working together. Firstly, the <emphasis>controller</emphasis> machine is that machine that you are assumed to be sitting at, wanting a set of benchmarking results. You will farm your work out to ! a/some/many <emphasis>client</emphasis> machines that will ! generate load for a specific <emphasis>target</emphasis>. Possibly, you at the controller require some information from the target, for example, how much CPU time it used, so may *************** *** 51,56 **** <para>In the above situation, each of the client machines will be running an instance of <literal>ipbenchd</literal>. Your ! target machine may be running an instance of ! <literal>ipbenchtd</literal> and you will control the test via the <literal>ipbench</literal> program on your local machine. </para> --- 51,58 ---- <para>In the above situation, each of the client machines will be running an instance of <literal>ipbenchd</literal>. Your ! target machine may also be running an instance of ! <literal>ipbenchd</literal> (in <emphasis>target</emphasis> ! mode) ! and you will control the test via the <literal>ipbench</literal> program on your local machine. </para> *************** *** 63,67 **** <para>The options should be fairly self explanatory. Each ! test has a number of arguments it can be passed via it's <command>--test-args</command> flag; see the test specific information below for listings and explanations. If you --- 65,69 ---- <para>The options should be fairly self explanatory. Each ! test has a number of arguments it can be passed via its <command>--test-args</command> flag; see the test specific information below for listings and explanations. If you *************** *** 70,73 **** --- 72,83 ---- (arguments can be passed with <command>--target-args</command>).</para> + + <para>One possible gotcha is that the + <command>--target</command> argument should take the name or IP address + of the target on the test network, which ideally should be + isolated from other networks. Some of the benchmark tests can + generate enough ethernet traffic to saturate multi-gigabit + links, so it is important that this not be allowed onto your + main network.</para> </sect1> *************** *** 95,101 **** <para> There are a number of options that can be passed to ! the test. The options should be passed with the <userinput>--test-args</userinput> ! command line paramater in a simple ! <userinput>"command=value,command1=value1"</userinput> format (note no whitespace). The test options are </para> --- 105,113 ---- <para> There are a number of options that can be passed to ! the test. The options should be passed with the ! <userinput>--test-args</userinput> ! command line parameter in a simple ! <userinput>"command=value,command1=value1"</userinput> ! format (note no white-space). The test options are </para> *************** *** 181,185 **** <entry><para>If you specify the <literal>socktype</literal> as ! <literal>raw</literal> then you must passs the <literal>ipbench</literal> the <literal>--target</literal> command as a --- 193,197 ---- <entry><para>If you specify the <literal>socktype</literal> as ! <literal>raw</literal> then you must pass the <literal>ipbench</literal> the <literal>--target</literal> command as a *************** *** 230,234 **** <entry><para>(The number of packets received * the packet size) / (test time)</para></entry> <entry><para><literal>bits per second</literal></para></entry> ! <entry><para>Each client works out it's achieved throughput, the total shown is the sum of each clients individal throughput</para></entry> </row> <row> --- 242,246 ---- <entry><para>(The number of packets received * the packet size) / (test time)</para></entry> <entry><para><literal>bits per second</literal></para></entry> ! <entry><para>Each client works out its achieved throughput, the total shown is the sum of each clients individual throughput</para></entry> </row> <row> *************** *** 241,251 **** <entry><para>(The number of packets sent * the packet size) / (test time)</para></entry> <entry><para><literal>bits per second</literal></para></entry> ! <entry><para>This should not differ from achieved throughput unless many packets are sent but not received (ie. dropped)</para></entry> </row> <row> <entry><para><computeroutput>Min</computeroutput></para></entry> ! <entry><para>Miniumum latency</para></entry> <entry><para><literal>microseconds</literal></para></entry> ! <entry morerows='4'><para>Each client returns all of it's data to the controller where these figures are calculated.</para></entry> </row> <row> --- 253,263 ---- <entry><para>(The number of packets sent * the packet size) / (test time)</para></entry> <entry><para><literal>bits per second</literal></para></entry> ! <entry><para>This should not differ from achieved throughput unless many packets are sent but not received (i.e.,. dropped)</para></entry> </row> <row> <entry><para><computeroutput>Min</computeroutput></para></entry> ! <entry><para>Minimum latency</para></entry> <entry><para><literal>microseconds</literal></para></entry> ! <entry morerows='4'><para>Each client returns all of its data to the controller where these figures are calculated.</para></entry> </row> <row> *************** *** 256,265 **** <row> <entry><para><computeroutput>Max</computeroutput></para></entry> ! <entry><para>Maxiumum latency</para></entry> <entry><para><literal>microseconds</literal></para></entry> </row> <row> <entry><para><computeroutput>Standard Deviation</computeroutput></para></entry> ! <entry><para>Standard devation of results</para></entry> <entry><para><literal>microseconds</literal></para></entry> <row> --- 268,277 ---- <row> <entry><para><computeroutput>Max</computeroutput></para></entry> ! <entry><para>Maximum latency</para></entry> <entry><para><literal>microseconds</literal></para></entry> </row> <row> <entry><para><computeroutput>Standard Deviation</computeroutput></para></entry> ! <entry><para>Standard deviation of results</para></entry> <entry><para><literal>microseconds</literal></para></entry> <row> *************** *** 281,285 **** <sect1 id="tbench-about"><title>About</title> <para>The Tbench ! test is an implementation of Andrew Trdigells Tbench test. The test simulates a heavy load on a Samba server; but instead of the target machine going to the disk it simply echos the --- 293,297 ---- <sect1 id="tbench-about"><title>About</title> <para>The Tbench ! test is an implementation of Andrew Tridgell's Tbench test. The test simulates a heavy load on a Samba server; but instead of the target machine going to the disk it simply echos the *************** *** 293,297 **** <literal>ipbenchd</literal>. The target machine has some work to do with this test, so will need to be running the ! <command>ipbenchtd</command> daemon.</para> </sect2> --- 305,309 ---- <literal>ipbenchd</literal>. The target machine has some work to do with this test, so will need to be running the ! <command>ipbenchd</command> daemon.</para> </sect2> *************** *** 303,308 **** <para> There are a number of options that can be passed to the test. The options should be passed with the <userinput>--test-args</userinput> ! command line paramater in a simple ! <userinput>"command=value,command1=value1"</userinput> format (note no whitespace). The test options are </para> --- 315,320 ---- <para> There are a number of options that can be passed to the test. The options should be passed with the <userinput>--test-args</userinput> ! command line parameter in a simple ! <userinput>"command=value,command1=value1"</userinput> format (note no white-space). The test options are </para> *************** *** 333,337 **** <sect3><title>Test output</title> <para>The output of the ! test is presented in Mbps of acheived throughput. </sect3> --- 345,349 ---- <sect3><title>Test output</title> <para>The output of the ! test is presented in Mbps of achieved throughput. </sect3> *************** *** 340,345 **** </chapter> </part> - - </book> \ No newline at end of file --- 352,535 ---- </chapter> + <chapter id="nfslatency"><title>NFS Latency</title> + <sect1 id="nfslatency-about"><title>About</title> + <para>The NFS Latency test is way to measure NFS performance. + It is not a full NFS performance suite, but allows measurement + of reads per second from an NFS server.</para> + </sect1> + <sect1 id="nfslatency-running"><title>Running the NFS Latency + test</title> + <sect2><title>Setting up the server and clients</title> + <para> + To run this test the target must export a filesystem (or + part of one) to all the clients. If you don't want to run + <command>ipbenchd</command> as root on the clients, you + will need to give the <command>insecure</command> option + to <command>exportfs</command>. + </para> + <para> + Assuming that your test network is 192.168.0.0/24, your + <command>/etc/exports</command> file could comtain: + <literal> + /tmp 192.168.0.0/24(insecure,async,rw) + </literal> + </para> + <para> + Create a file in the exported directory somewhere: + <userinput> + > /tmp/nfstestfile + chmod a=rw /tmp/nfstestfile + </userinput> + </para> + <para>You should check that the clients can mount and + unmount the directory, as <literal>ipbench</literal> does + not always give useful error messages. + </para> + </sect2> + <sect2><title>Running the test</title> + <para> + You need to know the name or IP address of the target + on the test network, the name of the exported + directory, and the name of the file on that directory. + </para> + <para> + The test options are </para> + + <table frame='all'><title>nfs_latency Test Options</title> + <tgroup cols='5' align='left' colsep='1' rowsep='1'> + <thead> + <row> + <entry>Argument</entry> + <entry>Description</entry> + <entry>Example</entry> + <entry>Default</entry> + <entry>Notes</entry> + </row> + </thead> + <tbody> + <row> + <entry><userinput>path</userinput></entry> + <entry><para>Name of exported directory, as in + <literal>/etc/exports</literal> on the + target</para></entry> + <entry><para><userinput>path=/tmp</userinput></para></entry> + <entry><para><userinput>/tmp</userinput></para></entry> + <entry></entry> + </row> + <row> + <entry><userinput>filename</userinput></entry> + <entry><para>Name of a file relative to + <literal>path</literal></para></entry> + <entry><userinput>filename=foo/bah</userinput></entry> + <entry><userinput>file.bench</userinput></entry> + <entry><para>In early versions of + <literal>ipbench</literal> the filename could not contain slashes.</para></entry> + </row> + <row> + <entry><userinput>rate</userinput></entry> + <entry><para>Requested operations per + second.</para></entry> + <entry><userinput>rate=1000</userinput></entry> + <entry>10000</entry> + <entry></entry> + </row> + </tbody> + </tgroup> + </table> + </sect2> + <sect2><title>Example</title> + <para> + <userinput> + ipbench --client=tinny3 --client=tinny4 \ + --test-args=path=/,filename=tmp/bench.file --test=nfs_latency + --test-target=192.168.0.5 + </userinput> + <literal> + #Achieved request rate,Achieved reply rate,Min latency,Average latency,Median latency,Max latency,Samples,Min runtime,Average runtime,Median runtime,Max runtime + 19999,6212,414,640020,664212,706549,400000,63175592,64383842,65592092,65592092 + </literal> + + Output is a comma-separated set of fields, with times in microseconds. + <table frame='all'><title>nfs_latency output fields</title> + <tgroup cols='3' align='left' colsep='1' rowsep='1'> + <thead> + <row> + <entry>Field</entry> + <entry>Units</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + <row> + <entry>Achieved rate</entry> + <entry>operations per second</entry> + <entry><para>Achieved rate aggregated across all + the clients. This may differ from the requested rate if too high a + rate is requested, and the clients can't keep up.</para></entry> + </row> + <row><entry>Reply rate</entry> + <entry>operations/sec</entry> + <entry>Read replies per second from the target</entry> + </row> + <row> + <entry>Minimum Latency</entry> + <entry>microseconds</entry> + <entry><para>the fastest time for a reply from an RPC + read request.</para></entry> + </row> + <row> + <entry>Mean Latency</entry> + <entry>microseconds </entry> + <entry></entry> + </row> + <row> + <entry>Median Latency</entry> + <entry>microseconds </entry> + <entry></entry> + </row> + <row> + <entry>maximum latency Latency</entry> + <entry>microseconds </entry> + <entry></entry> + </row> + <row> + <entry>samples</entry> + <entry>read rpcs</entry> + <entry><para> the number of replies sampled to + generate the latency averages</para></entry> + </row> + <row> + <entry>Min Runtime</entry> + <entry>microseconds</entry> + <entry>The minimum time taken to perform 20000 + read/writes, across all clients</entry> + </row> + <row><entry>mean runtime</entry> + <entry> + <entry>microseconds</entry> + <entry>The average time taken to perform 20000 + read/writes, across all clients</entry> + </row> + <row><entry>median runtime</entry> + <entry> + <entry>microseconds</entry> + <entry>A different average time taken to perform 20000 + read/writes, across all clients</entry> + </row> + <row><entry>maximum runtime</entry> + <entry> + <entry>microseconds</entry> + <entry>The maximum time taken to perform 20000 + read/writes, across all clients</entry> + </row> + </tbody> + </tgroup> + </table> + <para> + For sanity, you should check that the runtimes are all very similar, + and that the achieved request rate is what you asked for.</para> + </sect2> + </sect1> + </chapter> </part> </book> \ No newline at end of file |
From: Peter C. <pc...@us...> - 2010-02-09 02:54:11
|
Update of /cvsroot/ipbench/ipbench2/debian In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27976/debian Modified Files: rules Log Message: Compress man pages and debian manuals. Index: rules =================================================================== RCS file: /cvsroot/ipbench/ipbench2/debian/rules,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rules 22 Dec 2004 03:30:17 -0000 1.3 --- rules 9 Feb 2010 02:54:02 -0000 1.4 *************** *** 7,11 **** DEB_INSTALL_CHANGELOGS_ALL := ChangeLog ! DEB_COMPRESS_EXCLUDE := .* DEB_INSTALL_DOCS_ALL := doc/README --- 7,11 ---- DEB_INSTALL_CHANGELOGS_ALL := ChangeLog ! #DEB_COMPRESS_EXCLUDE := .* DEB_INSTALL_DOCS_ALL := doc/README |
From: Peter C. <pc...@us...> - 2010-02-09 02:53:01
|
Update of /cvsroot/ipbench/ipbench2/src/tests/nfs_latency In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv27701/src/tests/nfs_latency Modified Files: nfs_glue.c Log Message: xGet rid of yet more ad-hoc debugging. Index: nfs_glue.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/nfs_latency/nfs_glue.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** nfs_glue.c 9 Feb 2010 00:24:16 -0000 1.7 --- nfs_glue.c 9 Feb 2010 02:52:46 -0000 1.8 *************** *** 107,115 **** - printf("generating write data...\n"); for(i=0; i<READ_SIZE; i++){ wr.request->w.data[i] = (uint8_t)(random() & 0xFF); } - printf("generating write data done.\n"); /* set up buffer */ --- 107,113 ---- |