Thread (6 messages) 6 messages, 3 authors, 2016-09-23

Re: [PATCH net-next 2/3] udp: implement memory accounting helpers

flat view

From: Paolo Abeni <pabeni@redhat.com>
Date: 2016-09-23 09:56:11
Also in: linux-nfs

On Thu, 2016-09-22 at 13:34 -0700, Eric Dumazet wrote:
On Thu, 2016-09-22 at 22:27 +0200, Paolo Abeni wrote:
quoted
On Thu, 2016-09-22 at 09:30 -0700, Eric Dumazet wrote:
quoted
On Thu, 2016-09-22 at 18:14 +0200, Paolo Abeni wrote:
quoted
I think that the idea behind using atomic ops directly on
sk_forward_alloc is to avoid adding other fields to the udp_socket. 

If we can add some fields to the udp_sock structure, the schema proposed
in this patch should fit better (modulo bugs ;-), always requiring a
single atomic operation at memory reclaiming time and at memory
allocation time.
But do we want any additional atomic to begin with ?

Given typical number of UDP sockets on a host, we could reserve/forward
alloc at socket creation time, and when SO_RCVBUF is changed.
That would be very efficient and would probably work on most scenario,
but if/when the system will reach udp memory pressure things will be
very bad: forward allocation on open() will fail and nobody will be able
to create any new udp socket, right ?
No, we could allow one page per socket (udp_mem[0]) and applications
would still work.

TCP has the notion of memory pressure, and behaves roughly the same in
this case (one skb is allowed to be received)

The other (fat) sockets could notice udp_memory_pressure is set and
start reclaiming their forward allocations for other sockets.
I agree, that would work. Anyway I think it will more invasive than the
proposed code, after the currently ongoing rework. With the above, on
memory pressure, reclaim will be needed on dequeue, and scheduling will
still needed even on enqueue.

The overall behavior of the two approach will be similar: lazy
reclaiming under memory pressure or on sk closing, and rare memory
scheduling. 
Anyway, just an idea.
Any comments are always very appreciated!

Paolo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help