hw.bge.forced_collapse

Igor Sysoev is at rambler-co.ru
Fri Jan 15 09:28:33 UTC 2010


On Thu, Jan 14, 2010 at 10:10:31AM -0800, Pyun YongHyeon wrote:

> On Thu, Jan 14, 2010 at 07:03:33PM +0300, Igor Sysoev wrote:
> > On Fri, Dec 04, 2009 at 12:22:13PM -0800, Pyun YongHyeon wrote:
> > 
> > > On Fri, Dec 04, 2009 at 11:13:03PM +0300, Igor Sysoev wrote:
> > > > On Fri, Dec 04, 2009 at 11:51:40AM -0800, Pyun YongHyeon wrote:
> > > > 
> > > > > On Fri, Dec 04, 2009 at 10:11:14PM +0300, Igor Sysoev wrote:
> > > > > > On Fri, Dec 04, 2009 at 09:32:43AM -0800, Pyun YongHyeon wrote:
> > > > > > 
> > > > > > > On Fri, Dec 04, 2009 at 10:54:40AM +0300, Igor Sysoev wrote:
> > > > > > > > I saw commit introducing hw.bge.forced_collapse loader tunable.
> > > > > > > > Just intresting, why it can not be a sysctl ?
> > > > > > > 
> > > > > > > I didn't think the sysctl variable would be frequently changed
> > > > > > > in runtime except debugging driver so I took simple path.
> > > > > > 
> > > > > > I do not think it's worth to reboot server just to look how various
> > > > > > values affect on bandwidth and CPU usage, expecially in production.
> > > > > > 
> > > > > > As I understand the change is trivial:
> > > > > > 
> > > > > > -          CTLFLAG_RD
> > > > > > +          CTLFLAG_RW
> > > > > > 
> > > > > > since bge_forced_collapse is used atomically.
> > > > > > 
> > > > > 
> > > > > I have no problem changing it to RW but that case I may have to
> > > > > create actual sysctl node(e.g. dev.bge.0.forced_collapse) instead
> > > > > of hw.bge.forced_collapse which may affect all bge(4) controllers
> > > > > on system. Attached patch may be what you want. You can change the
> > > > > value at any time.
> > > > 
> > > > Thank you for the patch. Can it be installed on 8-STABLE ?
> > > > 
> > > 
> > > bge(4) in HEAD has many fixes which were not MFCed to stable/8 so
> > > I'm not sure that patch could be applied cleanly. But I guess you
> > > can manually patch it.
> > > I'll wait a couple of days for wider testing/review and commit the
> > > patch.
> > 
> > Sorry for the late response. We've tested bge.forced_collapse in December
> > on HEAD and found that values >1 froze connections with big data amount,
> > for example, "top -Ss1" output. Connection with small data amount such as
> > short ssh commands worked OK. Now I've tested modern 7.2-STABLE and found
> > that forced_collapse >1 freezes it too.
> > 
> 
> Thanks for reporting! It seems I've incorrectly dropped mbuf chains
> when collapsing fails. Would you try attached patch?

Thank you, the patch fixes the bug.

> Index: sys/dev/bge/if_bge.c
> ===================================================================
> --- sys/dev/bge/if_bge.c	(revision 202268)
> +++ sys/dev/bge/if_bge.c	(working copy)
> @@ -3940,11 +3940,8 @@
>  			m = m_defrag(m, M_DONTWAIT);
>  		else
>  			m = m_collapse(m, M_DONTWAIT, sc->bge_forced_collapse);
> -		if (m == NULL) {
> -			m_freem(*m_head);
> -			*m_head = NULL;
> -			return (ENOBUFS);
> -		}
> +		if (m == NULL)
> +			m = *m_head;
>  		*m_head = m;
>  	}
>  


-- 
Igor Sysoev
http://sysoev.ru/en/


More information about the freebsd-net mailing list