Regarding connector netlink running out of buffer space.
Hi,
I am trying to benchmark connector netlink and am passing a file and sending
the same to listening userspace app's using connectors i.e. cat filename > /dev/myconnector and an app listening. When I do this I always run into ENOBUFS or "No buffer space available" for files greater than 2MB. Now how should I fix this?
a) Increase the socket buffers? My rmem_max is 131071 and rmem_default is 126976
b) Should I check for the seq and ack and resend the packets? If yes how much packets should I not discard to do a resend?
Are there any other ways? Also I am not sure why local loop would cause enobufs? I am running this on a quad core with 3G of RAM.
Thanks.
Quoted 11 lines
-----Original Message-----
From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies- bounces at kernelnewbies.org] On Behalf Of mindentropy
Sent: Friday, July 29, 2011 1:35 PM
To: kernelnewbies at kernelnewbies.org
Subject: Regarding connector netlink running out of buffer space.Hi,
I am trying to benchmark connector netlink and am passing a file and
sending
the same to listening userspace app's using connectors i.e. cat
filename >
Quoted 1 line
/dev/myconnectorand an app listening. When I do this I always run
into
Quoted 6 lines
ENOBUFS or "No buffer space available" for files greater than 2MB. Now how should I fix this?
a) Increase the socket buffers? Myrmem_maxis 131071 andrmem_defaultis
126976
b) Should I check for the seq and ack and resend the packets? If yes
how
Quoted 4 lines
much
packets should I not discard to do a resend?Are there any other ways? Also I am not sure why local loop would
cause
Quoted 3 lines
enobufs? I am running this on a quad core with 3G of RAM.
Thanks.
Just guessing here, but it's possible the kernel is attempting to kmalloc() a single buffer for the whole file and with the file at 2MB there's no slab/slob/slub with buffers that big. You might need to write to /dev/myconnector in smaller chunks.
Again, just a guess.
Quoted 28 lines · Jeff Haran
Quoted 28 lines
-----Original Message-----
From: kernelnewbies-bounces at kernelnewbies.org [mailto:kernelnewbies- bounces at kernelnewbies.org] On Behalf Of mindentropy
Sent: Friday, July 29, 2011 1:35 PM
To: kernelnewbies at kernelnewbies.org
Subject: Regarding connector netlink running out of buffer space.Hi,
I am trying to benchmark connector netlink and am passing a file and
sending
the same to listening userspace app's using connectors i.e. cat filename >/dev/myconnectorand an app listening. When I do this I always run intoENOBUFS or "No buffer space available" for files greater than 2MB. Now how should I fix this?
a) Increase the socket buffers? Myrmem_maxis 131071 andrmem_defaultis
126976
b) Should I check for the seq and ack and resend the packets? If yes how much packets should I not discard to do a resend?Are there any other ways? Also I am not sure why local loop would cause enobufs? I am running this on a quad core with 3G of RAM.
Quoted 8 lines
Quoted 1 line
Thanks.
Just guessing here, but it's possible the kernel is attempting to
kmalloc()a single buffer for the whole file and with the file at 2MB there's no slab/slob/slub with buffers that big. You might need to write to/dev/myconnectorin smaller chunks.Again, just a guess.
My device write file operation as of now accepts 1024 byte chunks. So my payload size is just 1024 bytes. For simple testing I tried with just 5 bytes. This too fails.