Hi all, As the subject says, I've found a few lines like that in /var/log/messages: [...] /bsd: WARNING: mclpools limit reached; increase kern.maxclusters [...] The box is a 4.6 -STABLE with PF doing FW functions (moving 300/400Mbps) and always has worked like a charm. I've noticed when these kind of message appears, the systems suffers little micro-dowtime in the network. I've searched the mail archives and it's the expected behaviour: if you haven't any nmbcluster free, you haven't any mbuf and, because of that, network doesn't work temporaly. Henning explains here: http://marc.info/?l=openbsd-misc&m=126745163232328&w=2 Moreover I've found the code: http://www.openbsd.org/cgi-bin/cvsweb/src/sys/kern/uipc_mbuf.c [...] struct pool mclpools[MCLPOOLS]; int m_clpool(u_int); int max_linkhdr; /* largest link-level header */ int max_protohdr; /* largest protocol header */ int max_hdr; /* largest link+protocol header */ int max_datalen; /* MHLEN - max_hdr */ struct timeout m_cltick_tmo; int m_clticks; void m_cltick(void *); void m_extfree(struct mbuf *); struct mbuf *m_copym0(struct mbuf *, int, int, int, int); void nmbclust_update(void); const char *mclpool_warnmsg = "WARNING: mclpools limit reached; increase kern.maxclusters"; /* * Initialize the mbuf allocator. */ void mbinit(void) { int i; pool_init(&mbpool, MSIZE, 0, 0, 0, "mbpl", NULL); pool_setlowat(&mbpool, mblowat); for (i = 0; i < nitems(mclsizes); i++) { snprintf(mclnames[i], sizeof(mclnames[0]), "mcl%dk", mclsizes[i] >> 10); pool_init(&mclpools[i], mclsizes[i], 0, 0, 0, mclnames[i], NULL); pool_setlowat(&mclpools[i], mcllowat); } nmbclust_update(); timeout_set(&m_cltick_tmo, m_cltick, NULL); m_cltick(NULL); } void nmbclust_update(void) { int i; /* * Set the hard limit on the mclpools to the number of * mbuf clusters the kernel is to support. Log the limit * reached message max once a minute. */ for (i = 0; i < nitems(mclsizes); i++) { (void)pool_sethardlimit(&mclpools[i], nmbclust, mclpool_warnmsg, 60); } pool_sethiwat(&mbpool, nmbclust); } [...] When you reach the mbuf cluster available, nmbclust_update() inserts the mclpool_warnmsg string in /var/log/message. That's fine and clear. The problem here is: ?why a system that normally uses (according symon graphs) 80/120 mbuf clusters needs 8/10K nmbcluster sometimes? At present I've done a simple workaround: # cat /etc/sysctl.conf | grep -i cluster kern.maxclusters=16384 but I wonder the real reasons for this nmbcluster increment. ?How can I debug it? Thanks. -- I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain. Bene Gesserit Litany Against Fear. -- I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain. Bene Gesserit Litany Against Fear.
