summaryrefslogtreecommitdiff
path: root/source4/torture/nbench/nbench.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/torture/nbench/nbench.c')
-rw-r--r--source4/torture/nbench/nbench.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/source4/torture/nbench/nbench.c b/source4/torture/nbench/nbench.c
index 3da7dedae1..3a5d9bef70 100644
--- a/source4/torture/nbench/nbench.c
+++ b/source4/torture/nbench/nbench.c
@@ -22,6 +22,7 @@
int nbench_line_count = 0;
static int timelimit = 600;
+static int warmup;
static char *loadfile;
#define ival(s) strtol(s, NULL, 0)
@@ -37,7 +38,7 @@ static BOOL run_netbench(struct cli_state *cli, int client)
const char *p;
BOOL correct = True;
- nb_setup(cli, client);
+ nb_setup(cli, client, warmup);
asprintf(&cname, "client%d", client);
@@ -51,6 +52,13 @@ static BOOL run_netbench(struct cli_state *cli, int client)
again:
while (fgets(line, sizeof(line)-1, f)) {
NTSTATUS status;
+ double t = end_timer();
+
+ if (warmup && t >= warmup) {
+ warmup = 0;
+ nb_warmup_done();
+ start_timer();
+ }
if (end_timer() >= timelimit) {
goto done;
@@ -152,7 +160,6 @@ done:
/* run a test that simulates an approximate netbench client load */
BOOL torture_nbench(int dummy)
{
- double t;
BOOL correct = True;
extern int torture_nprocs;
struct cli_state *cli;
@@ -163,6 +170,8 @@ BOOL torture_nbench(int dummy)
timelimit = atoi(p);
}
+ warmup = timelimit / 20;
+
loadfile = lp_parm_string(-1, "torture", "loadfile");
if (!loadfile || !*loadfile) {
loadfile = "client.txt";
@@ -172,19 +181,20 @@ BOOL torture_nbench(int dummy)
return False;
}
- nb_setup(cli, -1);
+ nb_setup(cli, -1, warmup);
nb_deltree("\\clients");
nbio_shmem(torture_nprocs);
- printf("Running for %d seconds with load '%s'\n", timelimit, loadfile);
+ printf("Running for %d seconds with load '%s' and warmup %d secs\n",
+ timelimit, loadfile, warmup);
signal(SIGALRM, SIGNAL_CAST nb_alarm);
alarm(1);
- t = torture_create_procs(run_netbench, &correct);
+ torture_create_procs(run_netbench, &correct);
alarm(0);
printf("\nThroughput %g MB/sec\n",
- 1.0e-6 * nbio_total() / t);
+ 1.0e-6 * nbio_total() / timelimit);
return correct;
}