Messages in this thread | | | From | "Robert White" <> | Subject | RE: tcp_push_pending_frames() without TCP_CORK or TCP_NODELAY | Date | Mon, 2 Aug 2004 13:18:14 -0700 |
| |
I am after explicit flushing of a "normal" (e.g. nagle mode) stream. The TCP_CORK stuff is the opposite of what I am after as I am "only sometimes" in a position to know that a flush will increase performance but I am often not in a position to know that a CORK won't hurt it.
Right now I am performing the flush operation by calling setsockopt() twice, turning NODELAY on and then back off.
Using the MSG_MORE will improve some of the small-frame preamble stuff, even with nagle on (if I am understanding all of the ramifications). Does MSG_MORE work with nagle off (NODELAY set)?
The original candidate patch is designed to flush a CORKed or normally Nagled (is that a word?) socket in one call without losing the actual options. It does that by saving the cork/nagle flag, doing the same flush stuff that turning off nagle does, and then restoring the flag. It should be safely applicable to each of the three modes (though kind of pointless for the NODELAY mode 8-).
Arguments for are: -- The flush is one call. -- The flush is "safe" to call from a library because it has no net-effect on the persistent state of the socket. (This is a new argument in this message 8-)
Arguments against are: -- Two calls are not significantly expensive. -- Have to add the ioctl info to lots of places and the docs.
-----Original Message----- From: Arjan van de Ven [mailto:arjanv@redhat.com] Sent: Monday, August 02, 2004 12:54 PM To: Robert White Cc: 'David S. Miller'; linux-kernel@vger.kernel.org Subject: Re: tcp_push_pending_frames() without TCP_CORK or TCP_NODELAY
On Mon, Aug 02, 2004 at 12:44:41PM -0700, Robert White wrote: > Is there an argument _against_ providing an explicit flush?
well MSG_MORE is equivalent, it's an explicit non-flush...
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |