From owner-svn-src-head@FreeBSD.ORG Thu Dec 27 09:15:22 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 61E4F9CF; Thu, 27 Dec 2012 09:15:22 +0000 (UTC) (envelope-from luigi@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2DCEF8FC12; Thu, 27 Dec 2012 09:15:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qBR9FMIW048641; Thu, 27 Dec 2012 09:15:22 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qBR9FMDa048640; Thu, 27 Dec 2012 09:15:22 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201212270915.qBR9FMDa048640@svn.freebsd.org> From: Luigi Rizzo Date: Thu, 27 Dec 2012 09:15:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r244731 - head/tools/tools/netrate/netsend X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Dec 2012 09:15:22 -0000 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");