Expensive timeout in nfs_socket.c

Mohan Srinivasan mohan_srinivasan at yahoo.com
Wed Nov 22 11:39:31 PST 2006


The way the NFS client does re-transmits is that nfs_timer() is called once 
every 10 msecs. It loops over all the requests that are pending and decides 
which ones to retransmit.

This badly needs a re-write. We need to kill nfs_timer() and have a timeout
per NFS request. In the common case, the timeouts would never happen. If we
did this, we could both simplify the code and optimize it significantly.

It is a fair amount of work, and it is not likely to happen soon :(

mohan

--- Ulrich Spoerlein <uspoerlein at gmail.com> wrote:

> Hi,
> 
> I just wanted to report that I always get at least one "expensive
> timeout" warning per boot on a fairly recent current. Always when
> accessing large data sets from NFS.
> 
> Expensive timeout(9) function: 0xc062b1bc(0) 0.102241471 s
> igor# addr2line -e /boot/kernel/kernel.symbols 0xc062b1bc
> /vol/src/sys/nfsclient/nfs_socket.c:1357
> 
> I also got one from syscons, but I've since removed the flags from
> rc.conf, as the machine is headless. For the curious:
> 
> Expensive timeout(9) function: 0xc04a1444(0xc07a2880) 0.008804956 s
> igor# addr2line -e kernel.symbols 0xc04a1444
> /vol/src/sys/dev/syscons/syscons.c:1688
> 
> I have kern.hz=100 in /boot/loader.conf, if that is important.
> 
> Ulrich Spoerlein
> -- 
> A: Yes.
> >Q: Are you sure?
> > >A: Because it reverses the logical flow of conversation.
> > >>Q: Why is top posting frowned upon?
> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
> 



More information about the freebsd-current mailing list