From mboxrd@z Thu Jan 1 00:00:00 1970 From: mindentropy@gmail.com (mindentropy) Date: Sat, 30 Jul 2011 02:32:14 +0530 Subject: Regarding connector netlink running out of buffer space. In-Reply-To: <6F5DE7538AFCDA45A114F5E7510424A70295D2B3@hq-exchange01.bytemobile.com> References: <201107300205.00964.mindentropy@gmail.com> <6F5DE7538AFCDA45A114F5E7510424A70295D2B3@hq-exchange01.bytemobile.com> Message-ID: <201107300232.14314.mindentropy@gmail.com> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Saturday 30 Jul 2011 2:23:58 AM Jeff Haran wrote: > > -----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/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. > > 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. 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.