Kernel Bug Tracker – Bug 13323
2.6.30-rc deadline scheduler performance regression for iozone over NFS
Last modified: 2009-05-29 21:21:07 UTC
Subject : 2.6.30-rc deadline scheduler performance regression for iozone over NFS
Submitter : Jeff Moyer <email@example.com>
Date : 2009-04-23 14:01
References : http://marc.info/?l=linux-kernel&m=124049547915450&w=4
Notify-Also : Jens Axboe <firstname.lastname@example.org>
Notify-Also : Olga Kornievskaia <email@example.com>
Notify-Also : Jim Rees <firstname.lastname@example.org>
Notify-Also : Trond Myklebust <email@example.com>
Notify-Also : "J. Bruce Fields" <firstname.lastname@example.org>
This entry is being used for tracking a regression from 2.6.29. Please don't
close it until the problem is fixed in the mainline.
Reassign to Trond, this is a nfs regression, not block layer.
Reassigning to Bruce, since this is a server regression rather than a client issue :-)
Created attachment 21433 [details]
SUNRPC: Fix the TCP server's send buffer accounting
Currently, the sunrpc server is refusing to allow us to process new RPC
calls if the TCP send buffer is 2/3 full, even if we do actually have
enough free space to guarantee that we can send another request.
The following patch fixes svc_tcp_has_wspace() so that we only stop
processing requests if we know that the socket buffer cannot possibly fit
It also fixes the tcp write_space() callback so that we only clear the
SOCK_NOSPACE flag when the TCP send buffer is less than 2/3 full.
This should ensure that the send window will grow as per the standard TCP
Created attachment 21434 [details]
SUNRPC: Fix the TCP write space reservations for deferred requests
Ensure that deferred requests are accounted for correctly by the write
space reservation mechanism. In order to avoid double counting, remove the
reservation when we defer the request, and save any calculated value, so
that we can restore it when the request is requeued.
Created attachment 21435 [details]
SUNRPC: Fix svc_tcp_recvfrom()
Ensure that we immediately read and buffer data from the incoming TCP
stream so that we grow the receive window quickly, and don't deadlock on
large READ or WRITE requests.
The offending commit has been reverted in 2.6.30-rc...