Subject: Re: CLOCK_MONOTONIC datagram timestamps by the kernel

From: Stephen Hemminger <[email-masked]>
Date: Thu, 1 Mar 2007 10:53:48 -0800

On Thu, 1 Mar 2007 12:30:50 +0100
Eric Dumazet <[email-masked]> wrote:

> On Wednesday 28 February 2007 17:07, John wrote:
> 
> >
> > Consider an idle Linux 2.6.20-rt8 system, equipped with a single PCI-E
> > gigabit Ethernet NIC, running on a modern CPU (e.g. Core 2 Duo E6700).
> > All this system does is time stamp 1000 packets per second.
> >
> > Are you claiming that this platform *cannot* handle most packets within
> > less than 1 microsecond of their arrival?
> 
> Yes I claim it.
> 
> You expect too much of this platform, unless "most" means 10 % for 
> you ;)
> 
> If you replace "1 us" by "50 us", then yes, it probably can do it, if "most" 
> means 99%, (not 99.999 %)
> 
> Anyway, if you want to play, you can apply this patch on top of 
> linux-2.6.21-rc2  (nanosecond resolution infrastruture needs 2.6.21)
> I let you do the adjustments for rt kernel.
> 
> I compiled it on my i386 machine, and tested it with a patched libpcap/tcpdump
> 
> [PATCH] NET : introduce nanosecond time infrastructure and SIOCGSTAMPNS
> 
> It appears some machines are *really* fast and that micro second resolution is 
> a limiting factor.
> 
> This patch converts sk_buff timestamp to use new nanosecond infra (added in 
> 2.6.21), and introduces a new ioctl SIOCGSTAMPNS to let applications access 
> nanosecond resolution (ie a timespec instead of timeval)
> 
> 
> Signed-off-by: Eric Dumazet <[email-masked]>
>

You probably want to add a SO_TIMESTAMPNS setsockopt() value like existing SO_TIMESTAMP

Also use NSEC_PER_USEC rather than hardcoded 1000.

-- 
Stephen Hemminger <[email-masked]>