From: Hideo AOKI <haoki@redhat.com>
To: netdev@vger.kernel.org, herbert@gondor.apana.org.au
Cc: David Miller <davem@davemloft.net>,
satoshi.oshima.fk@hitachi.com, billfink@mindspring.com,
andi@firstfloor.org, johnpol@2ka.mipt.ru,
shemminger@linux-foundation.org, yoshfuji@linux-ipv6.org,
yumiko.sugita.yf@hitachi.com, haoki@redhat.com
Subject: Re: [PATCH 4/5] udp: memory limitation by using udp_mem
Date: Wed, 21 Nov 2007 18:25:19 -0500 [thread overview]
Message-ID: <4744BE5F.3060901@redhat.com> (raw)
In-Reply-To: <20071115.152353.100893781.davem@davemloft.net>
David Miller wrote:
> From: Hideo AOKI <haoki@redhat.com>
> Date: Thu, 15 Nov 2007 16:50:14 -0500
>
>> +static inline int __ip_check_max_skb_pages(struct sock *sk, int size)
>> +{
>> + switch(sk->sk_protocol) {
>> + case IPPROTO_UDP:
>> + if (atomic_read(sk->sk_prot->memory_allocated) + size
>> + > sk->sk_prot->sysctl_mem[0])
>> + return -ENOBUFS;
>> + /* Fall through */
>> + default:
>> + break;
>> + }
>> + return 0;
>> +}
>> +
<snip>
>
> These special case checks are all over the place.
>
> We don't have tests all over the place to see if a socket is TCP or
> DCCP or SCTP in order to implement memory accounting there, because we
> did it for connection oriented protocols cleanly, seperating things
> via callbacks etc.
>
> I would like to see the datagram memory accounting work similarly.
Hello,
I'm still thinking this and focusing on enhancement of above function.
However, I feel difficulty because socket buffer allocation of UDP
sending packet is in IP layer: ip_append_data(). Moreover, the function
is called from several protocols including TCP. This makes setting
callback hard without changing function interface or core data structure.
Then, I would like to know if the following implementation could be
acceptable.
- Adding sk_datagram_{rw}mem_schedule() as a memory schedule function
for datagram protocols.
- Adding sk_wmem_schedule().
In the function, sk_stream_wmem_schedule() is called if the caller
socket is stream protocols. Moreover, sk_datagram_wmem_schedule()
is called if the socket is datagram like this:
int sk_wmem_schedule(struct sock *sk, int size)
{
...
switch (sk->sk_type) {
case SOCK_STREAM:
return sk_stream_wmem_schedule(sk, size);
case SOCK_DGRAM:
return sk_datagram_wmem_schedule(sk, size);
default:
return 1;
}
}
- In ip_append_data(), sk_wmem_schedule() is called to execute
memory accounting.
Please let me know if you have any comments about this.
Best regards,
Hideo
--
Hitachi Computer Products (America) Inc.
next prev parent reply other threads:[~2007-11-21 23:37 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-15 21:44 [PATCH 0/5] UDP memory accounting and limitation (take 8) Hideo AOKI
2007-11-15 21:49 ` [PATCH 1/5] udp: fix send buffer check Hideo AOKI
2007-11-15 21:49 ` [PATCH 2/5] udp: accounting unit and variable Hideo AOKI
2007-11-15 21:50 ` [PATCH 3/5] udp: memory accounting Hideo AOKI
2007-11-15 21:50 ` [PATCH 4/5] udp: memory limitation by using udp_mem Hideo AOKI
2007-11-15 23:23 ` David Miller
2007-11-16 2:12 ` Herbert Xu
2007-11-17 2:52 ` Hideo AOKI
2007-11-17 4:01 ` David Miller
2007-11-21 23:25 ` Hideo AOKI [this message]
2007-11-15 21:50 ` [PATCH 5/5] udp: add udp_rmem_min and udp_wmem_min Hideo AOKI
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4744BE5F.3060901@redhat.com \
--to=haoki@redhat.com \
--cc=andi@firstfloor.org \
--cc=billfink@mindspring.com \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=johnpol@2ka.mipt.ru \
--cc=netdev@vger.kernel.org \
--cc=satoshi.oshima.fk@hitachi.com \
--cc=shemminger@linux-foundation.org \
--cc=yoshfuji@linux-ipv6.org \
--cc=yumiko.sugita.yf@hitachi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.