From: Andi Kleen <andi@firstfloor.org>
To: David Miller <davem@davemloft.net>
Cc: juhlenko@akamai.com, netdev@vger.kernel.org,
shemminger@linux-foundation.org
Subject: Re: [RFC 0/4] net: enable timestamps on a per-socket basis
Date: Mon, 21 Apr 2008 13:43:31 +0200 [thread overview]
Message-ID: <480C7DE3.5020301@firstfloor.org> (raw)
In-Reply-To: <20080421.035939.37324583.davem@davemloft.net>
David Miller wrote:
> From: Andi Kleen <andi@firstfloor.org>
> Date: Mon, 21 Apr 2008 12:44:56 +0200
>
>> David Miller <davem@davemloft.net> writes:
>>
>>> Moving the timestamp up to a higher level takes away some of the
>>> frequent use cases of timestamps, which is to detect things like the
>>> fact that it is taking a long time for packets to get from the
>>> top-level packet receive down to the actual protocol processing.
>> Is that really a frequent use case? It sounds more like a specialized
>> debugging situation. Most users are not network stack hackers :)
>
> Ask a financial service industry shop what the implications of
> inaccurate transaction timestamps can be. It possible for it to be
> measured in the millions if not billions of euros.
Are you sure they don't just need end2end timestamps as in from sendmsg
to recvmsg()? Imagine the packet is stuck for some time in the
kernel for whatever reason and you only process it later in user space
wouldn't you consider that older time stamp "inaccurate" too? I would,
unless I was debugging the network stack.
It is hard to imagine they really care about excluding one set of queues
(kernel queue) and not other queues (nic rx/tx queues, switch queues
etc.) for their time stamps as you imply.
>> But if you are willing to give away some of the guarantees of standard
>> gettimeofday (like global non monotonicity between CPUs) then you
>> could actually still use TSC even on those systems. And I don't
>> think global non monotonicity is really needed for a packet
>> time stamp ...
>
> So if tcpdump gets resceduled on another cpu, or the multiqueue flow
> hashing algorithm changes, the appearance of the ordering of packets
> changes.
If that is the problem you could always cut off some lower bits in the
time stamp and put a sequence counter in there. Ok not serious. It would
probably still work for most people though.
> No thanks.
>
> Nobody wants half-working timestamps.
I'm not so sure. When I was still working on this I had some
conversation with various application people about this, and when
prodded they generally were supportive of the relaxed time stamp idea
when presented with the alternatives (either slow timers or relaxed timers)
Very few applications really need the full time stamp guarantees.
For your debugging example relaxed time stamps would work great I would
think.
But yes as always when changing some existing semantics it is hard to be
sure it won't be a problem for somebody. The only really safe way
is to use different interfaces but that circumvents Jason's idea
of fixing the existing binaries.
> That's why it's such an
> enormous issue that x86 screwed this up so badly for such a long
> period of time.
Well pretty much all older CPUs (x86 and non x86) with aggressive power
saving have broken internal timers. the one usually comes with the
other. Only recently have hardware people learned to avoid that.
-Andi
next prev parent reply other threads:[~2008-04-21 11:43 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-21 5:34 [RFC 0/4] net: enable timestamps on a per-socket basis Jason Uhlenkott
2008-04-21 5:34 ` [RFC 1/4] net core: move timestamp functions Jason Uhlenkott
2008-04-21 5:35 ` [RFC 2/4] net core: let protocols implement SOCK_TIMESTAMP efficiently Jason Uhlenkott
2008-04-21 5:35 ` [RFC 3/4] ipv4: efficient SOCK_TIMESTAMP support for TCP, UDP, and raw sockets Jason Uhlenkott
2008-04-21 5:36 ` [RFC 4/4] af_packet: efficient SOCK_TIMESTAMP support Jason Uhlenkott
2008-04-21 6:03 ` [RFC 0/4] net: enable timestamps on a per-socket basis David Miller
2008-04-21 7:28 ` Jason Uhlenkott
2008-04-21 10:44 ` Andi Kleen
2008-04-21 10:59 ` David Miller
2008-04-21 11:43 ` Andi Kleen [this message]
2008-04-21 11:51 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=480C7DE3.5020301@firstfloor.org \
--to=andi@firstfloor.org \
--cc=davem@davemloft.net \
--cc=juhlenko@akamai.com \
--cc=netdev@vger.kernel.org \
--cc=shemminger@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).