summaryrefslogtreecommitdiff
path: root/source4/torture/nbench/nbio.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-01-10 11:16:11 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:37:24 -0500
commitf6274959ba381b6b5d025cb0cee78665107a72a6 (patch)
tree750d88afc3f88f833162dc7d9ae93d844b61a4e4 /source4/torture/nbench/nbio.c
parent1cd4339b9a2786aa26691ca4f02fa93ab0958b88 (diff)
downloadsamba-f6274959ba381b6b5d025cb0cee78665107a72a6.tar.gz
r20647: add cluster code
(This used to be commit 5870830b99a8d76bda1ff5af3fcf8dda9aba50ec)
Diffstat (limited to 'source4/torture/nbench/nbio.c')
-rw-r--r--source4/torture/nbench/nbio.c36
1 files changed, 33 insertions, 3 deletions
diff --git a/source4/torture/nbench/nbio.c b/source4/torture/nbench/nbio.c
index cd680851690..6335d53c928 100644
--- a/source4/torture/nbench/nbio.c
+++ b/source4/torture/nbench/nbio.c
@@ -53,8 +53,25 @@ static struct {
double bytes, warmup_bytes;
int line;
int done;
+ double max_latency;
+ struct timeval starttime;
} *children;
+void nbio_time_reset(void)
+{
+ children[nbio_id].starttime = timeval_current();
+}
+
+void nbio_time_delay(double targett)
+{
+ double elapsed = timeval_elapsed(&children[nbio_id].starttime);
+ if (targett > elapsed) {
+ msleep(1000*(targett - elapsed));
+ } else if (elapsed - targett > children[nbio_id].max_latency) {
+ children[nbio_id].max_latency = elapsed - targett;
+ }
+}
+
double nbio_result(void)
{
int i;
@@ -65,6 +82,19 @@ double nbio_result(void)
return 1.0e-6 * total / timeval_elapsed2(&tv_start, &tv_end);
}
+double nbio_latency(void)
+{
+ int i;
+ double max_latency = 0;
+ for (i=0;i<nprocs;i++) {
+ if (children[i].max_latency > max_latency) {
+ max_latency = children[i].max_latency;
+ children[i].max_latency = 0;
+ }
+ }
+ return max_latency;
+}
+
BOOL nb_tick(void)
{
return children[nbio_id].done;
@@ -122,9 +152,9 @@ void nb_alarm(int sig)
nprocs, lines/nprocs,
nbio_result(), t);
} else {
- printf("%4d %8d %.2f MB/sec execute %.0f sec \n",
+ printf("%4d %8d %.2f MB/sec execute %.0f sec latency %.2f msec \n",
nprocs, lines/nprocs,
- nbio_result(), t);
+ nbio_result(), t, nbio_latency() * 1.0e3);
}
fflush(stdout);
@@ -443,7 +473,7 @@ void nb_readx(int handle, off_t offset, int size, int ret_size, NTSTATUS status)
io.readx.in.remaining = 0;
io.readx.in.read_for_execute = False;
io.readx.out.data = buf;
-
+
ret = smb_raw_read(c->tree, &io);
free(buf);