Author: luigi
Date: Thu Dec 27 09:15:21 2012
New Revision: 244731
URL: http://svnweb.freebsd.org/changeset/base/244731

Log:
  use nanosecond resolution, make sure gettimeofday
  is called at most every 100 packets.

Modified:
  head/tools/tools/netrate/netsend/netsend.c

Modified: head/tools/tools/netrate/netsend/netsend.c
==============================================================================
--- head/tools/tools/netrate/netsend/netsend.c  Thu Dec 27 08:10:58 2012        
(r244730)
+++ head/tools/tools/netrate/netsend/netsend.c  Thu Dec 27 09:15:21 2012        
(r244731)
@@ -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");
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to