Ok I will try to work out a more generalized patch, taking your feedback into account.

I currently have these APR versions on Debian:

libapr1/squeeze uptodate 1.4.2-6+squeeze3
libapr1-dev/squeeze uptodate 1.4.2-6+squeeze3
libaprutil1/squeeze uptodate 1.3.9+dfsg-5
libaprutil1-dev/squeeze uptodate 1.3.9+dfsg-5

So the same as you

- Ramon.

On 23-4-2012 15:26, Daniel Pocock wrote:

On 23/04/12 15:14, Ramon Bastiaans wrote:
Hi Daniel,

Ah ok. Before you sent your email I had already created a small patch
for myself. It almost seems that APR ignores the OS settings (i.e.:
net.core.rmem_default) and creates a socket with it's own default
(receive) buffer size.
Actually, apr can be a little bit more naughty than that: for Vladimir
and myself, attempting to query the buffer size from APR reports the
value 0.  Querying the underlying socket directly reports another value.
  I'm using apr-1.4.2 on Debian squeeze, which version do you have?

Attached is a patch against 3.3.6 for lib/apr_net.c that stops the
receive buffers errors for me.

The patch sets the buffer size a bit bigger, although I'm not sure what
would be a sensible size for gmond. I would think if you have a large
cluster with lots of UDP traffic you would need a bigger receive buffer
than for smaller systems.

I will try out 3.3.7 and see what it's debug output says on buffer size's.
You will notice the logging code reports two results, because of the apr
issue described above

For your patch, could you generalise it to allow a value in the config
file?  This commit will suggest how to go about adding a new config value:

https://github.com/ganglia/monitor-core/commit/bfeb4ce3ad65466a3bef220bb6950403b4f968cd#gmond/conf.pod

The patch should respect the previous behavior - if the config value is
unspecified or 0, it should not change anything.

However, because we know there are issues with getting/setting the value
through APR, your patch would also need to consider:

- is there a minimum APR version required for the patch to work?
- could you set the value, query the value, and if it hasn't accepted
the value, try setting the value on the native socket?
- or maybe just ignore the APR code completely and go directly to set
the value on the native socket?

This commit will show you how to access the native socket:

https://github.com/ganglia/monitor-core/commit/18d0655ca820b3184aee919587824132c9ee99f0#lib/apr_net.c

------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Ganglia-developers mailing list
Ganglia-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ganglia-developers

--
ing. R. Bastiaans, B.ICT
* Senior Systems Programmer
* Operations, Support and Development

SARA
Science Park 140     PO Box 94613
1098 XG Amsterdam NL 1090 GP Amsterdam NL
P.+31 (0)20 592 3000 F.+31 (0)20 668 3167


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ganglia-developers mailing list
Ganglia-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ganglia-developers

Reply via email to