On Wed, Jun 20, 2012 at 03:51:52PM +0200, Eric Dumazet wrote: > On Wed, 2012-06-20 at 14:36 +0100, Mel Gorman wrote: > > The intention was to avoid any coalescing in the input path due to avoid > > packets that "were held back due to TCP_CORK or attempt at coalescing > > tiny packet". I recognise that it is clumsy and will take the approach > > instead of having __tcp_push_pending_frames() use sk_gfp_atomic() in the > > output path. > > But coalescing in input path needs no additional memory allocation, it > can actually free some memory. > When I wrote it I thought the timing of the transmission of pending frames was the problem rather than the actual memory usage. My intention was that any data related to swapping be handled immediately without delay instead of deferring until a time when GFP_ATOMIC allocations might fail. I arrived at this patch because tcp_input.c does call tcp_push_pending_frames() on the receive path and that led me to believe that coalescing was a factor. > And it avoids most of the time the infamous "tcp collapses" that needed > extra memory allocations to group tcp payload on single pages. > > If you want tcp output path being safer, you should disable TSO/GSO > because some drivers have special handling for skbs that cannot be > mapped because of various hardware limitations. > Understood. Thanks for the explanation. -- Mel Gorman SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>