summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>2012-12-27 09:15:21 +0000
committerluigi <luigi@FreeBSD.org>2012-12-27 09:15:21 +0000
commiteb65fddc451a58d32c98d3e1509e2700f2a58386 (patch)
tree2b3d95ffcc16985dddcc442f1480d62a85a7715d /tools
parentc79f40629654ae3ef02f2fef0b10a633b5895593 (diff)
downloadFreeBSD-src-eb65fddc451a58d32c98d3e1509e2700f2a58386.zip
FreeBSD-src-eb65fddc451a58d32c98d3e1509e2700f2a58386.tar.gz
use nanosecond resolution, make sure gettimeofday
is called at most every 100 packets.
Diffstat (limited to 'tools')
-rw-r--r--tools/tools/netrate/netsend/netsend.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/tools/tools/netrate/netsend/netsend.c b/tools/tools/netrate/netsend/netsend.c
index 0558253..683c823 100644
--- a/tools/tools/netrate/netsend/netsend.c
+++ b/tools/tools/netrate/netsend/netsend.c
@@ -144,7 +144,7 @@ timing_loop(struct _a *a)
long finishtime;
long send_errors, send_calls;
/* do not call gettimeofday more than every 20us */
- long minres_ns = 20000;
+ long minres_ns = 200000;
int ic, gettimeofday_cycles;
int cur_port;
uint64_t n, ns;
@@ -154,17 +154,22 @@ timing_loop(struct _a *a)
return (-1);
}
+ ns = a->interval.tv_nsec;
if (timespec_ge(&tmptime, &a->interval))
fprintf(stderr,
"warning: interval (%jd.%09ld) less than resolution (%jd.%09ld)\n",
(intmax_t)a->interval.tv_sec, a->interval.tv_nsec,
(intmax_t)tmptime.tv_sec, tmptime.tv_nsec);
- if (a->interval.tv_nsec < minres_ns) {
- gettimeofday_cycles = minres_ns/(tmptime.tv_nsec + 1);
- fprintf(stderr,
- "calling time every %d cycles\n", gettimeofday_cycles);
- } else
- gettimeofday_cycles = 0;
+ /* interval too short, limit the number of gettimeofday()
+ * calls, but also make sure there is at least one every
+ * some 100 packets.
+ */
+ if ((long)ns < minres_ns/100)
+ gettimeofday_cycles = 100;
+ else
+ gettimeofday_cycles = minres_ns/ns;
+ fprintf(stderr,
+ "calling time every %d cycles\n", gettimeofday_cycles);
if (clock_gettime(CLOCK_REALTIME, &starttime) == -1) {
perror("clock_gettime");
OpenPOWER on IntegriCloud