On Fri, 2 Jan 2015 23:18:16 +1100 teor <teor2345@xxxxxxxxx> wrote: > IPredator has complained that tor on Linux spends too much time > calling time() when pushing 500Mbit/s, which is an issue for them > under 3.x series kernels, but not kernel 2.6. > > https://ipredator.se/guide/torserver#performance I really don't understand this, unless my benchmark methodology is overly naive. time() in a trivial benchmark takes roughly 3 ns per call. Linux doesn't even do a real syscall for gettimeofday() due to vDSO... > I just reviewed my profiling of an exit relay running chutney verify > with 200MB of random data. This is on OS X 10.9.5 with tor > 0.2.6.2-alpha-dev running the chutney basic-min network. > > The three leaf functions that take the most time in the call graph > are: > * channel_timestamp_recv > * channel_timestamp_active > * time > > Each of these functions takes around 16% of the execution time, the > next nearest function is sha1_block_data_order_avx on 4%. > > While I understand that OS X, BSD, and Linux syscalls aren't > necessarily identical, we now have results for the following > platforms suggesting that calling time() too often has a performance > impact: > * Linux kernel 3.x > * OpenBSD > * OS X 10.9 > > My results suggest a maximum performance improvement of 15% on OS X > if we reduced the calls to time() to a reasonable number per second. I'm still skeptical, but hey, the code needs love in general. Maybe nickm/dgoulet have more insight into this than I do, and this would also be a good opportunity to switch more things over to monotonic time. Regards, -- Yawning Angel
Attachment:
pgp0H0bT0XsIS.pgp
Description: OpenPGP digital signature
_______________________________________________ tor-dev mailing list tor-dev@xxxxxxxxxxxxxxxxxxxx https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev