From owner-freebsd-performance@FreeBSD.ORG Fri Jan 2 17:25:01 2015 Return-Path: Delivered-To: freebsd-performance@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 701D8F97 for ; Fri, 2 Jan 2015 17:25:01 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EE1626620B for ; Fri, 2 Jan 2015 17:25:00 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.9/8.14.9) with ESMTP id t02HOmjF076447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 2 Jan 2015 19:24:48 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.9.2 kib.kiev.ua t02HOmjF076447 Received: (from kostik@localhost) by tom.home (8.14.9/8.14.9/Submit) id t02HOlnn076446; Fri, 2 Jan 2015 19:24:47 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 2 Jan 2015 19:24:47 +0200 From: Konstantin Belousov To: grarpamp Subject: Re: Fwd: [tor-dev] gettimeofday() Syscall Issues Message-ID: <20150102172447.GT42409@kib.kiev.ua> References: <54A43EC4.2030706@mykolab.com> <9BF461F5-D6B6-4287-BE8B-87B281FE93D0@gmail.com> <20150101033733.4b295d3b@schwanenlied.me> <54A621C2.2060408@mykolab.com> <20150102102036.0a52b072@schwanenlied.me> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on tom.home Cc: freebsd-performance@freebsd.org X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Jan 2015 17:25:01 -0000 On Fri, Jan 02, 2015 at 09:09:34AM -0500, grarpamp wrote: > Some recent FreeBSD related questions in this app area. What is the question ? As a background, I can repeat that FreeBSD implements syscall-less gettimeofday() and clock_gettime() for x86 machines which have usable RDTSC. The selection of the timecounter can be verified by sysctl kern.timecounter.hardware, and enabled by default fast gettimeofday(2) can be checked by sysctl kern.timecounter.fast_gettime. On some Nehalem machine, I see it doing ~30M calls/sec with enabled fast_gettime, and ~6.25M calls/sec with disabled fast_gettime. This is measured on 2.8GHz Core i7 930 with src/tools/tools/syscall_timing. Check your timecounter hardware. Since it was noted that the tests were done in VM, check the quality of RDTSC emulation in your hypervisor. > > > ---------- Forwarded message ---------- > From: Yawning Angel > Date: Fri, Jan 2, 2015 at 5:20 AM > Subject: Re: [tor-dev] gettimeofday() Syscall Issues > To: tor-dev@lists.torproject.org > > > On Thu, 01 Jan 2015 23:42:42 -0500 > Libertas wrote: > > > The first two account for the bulk of the calls, as they are in the > > core data relaying logic. > > > > Ultimately, the problem seems to be that the caching is very weak. At > > most, only half of the calls to tor_gettimeofday_cached_monotonic() > > use the cache. It appears in the vomiting print statements that > > loading a single simple HTML page > > (http://www.openbsd.org/faq/ports/guide.html to be exact) will cause > > >30 gettimeofday() syscalls. You can imagine how that would > > >accumulate for an exit carrying 800 KB/s if the caching > > doesn't improve much with additional circuits. > > So while optimization is cool and all, I'm not seeing why this > specifically is the underlying issue. > > Each cell can contain 498 bytes of user payload. Looking at things > simplistically this is 800 KiB/s -> 1644 cells/sec, leaving you with > approximately 608 microseconds of processing time per cell. > > On my i5-4250U box, gettimeofday() takes 22 ns on Linux, and 2441 ns on > FreeBSD. I'm not sure how accurate the FreeBSD results are as it was > in a VirtualBox VM (getpid() on the same VM takes 124 ns). If someone > has a OpenBSD box they should benchmark gettimeofday() and see how long > the call takes. > > Taking the FreeBSD case (since we know that tor works fine on Linux), a > single gettimeofday() call takes approximately, 0.39% of the per-cell > processing budget. > > For reference (assuming gettimeofday() in *BSD really is this shit > performance wise), 7000 calls to gettimeofday() is 17.09 ms worth of > calls. > > The clock code in tor does need love, so I wouldn't object to cleanup, > but I'm not sure it's in the state where it's causing the massive > performance degradation that you are seeing. > > Regards, > > -- > Yawning Angel > > _______________________________________________ > tor-dev mailing list > tor-dev@lists.torproject.org > https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev > _______________________________________________ > freebsd-performance@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-performance > To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org"