From owner-svn-src-head@FreeBSD.ORG Wed Aug 21 15:23:32 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4EC88BDA for ; Wed, 21 Aug 2013 15:23:32 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 96DCF23D3 for ; Wed, 21 Aug 2013 15:23:31 +0000 (UTC) Received: (qmail 72762 invoked from network); 21 Aug 2013 16:06:35 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 21 Aug 2013 16:06:35 -0000 Message-ID: <5214DB6C.6060207@freebsd.org> Date: Wed, 21 Aug 2013 17:23:24 +0200 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: Julian Elischer Subject: Re: M_NOFREE removal (was Re: svn commit: r254520 - in head/sys: kern sys) References: <201308191116.r7JBGsc6065793@svn.freebsd.org> <521256CE.6070706@FreeBSD.org> <5212587A.2080202@freebsd.org> <52128937.1010407@freebsd.org> <52129E55.30803@freebsd.org> <5212DEE7.6060804@freebsd.org> In-Reply-To: <5212DEE7.6060804@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, freebsd-net@freebsd.org, Navdeep Parhar , Peter Grehan X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Aug 2013 15:23:32 -0000 On 20.08.2013 05:13, Julian Elischer wrote: > On 8/20/13 6:38 AM, Peter Grehan wrote: >> Hi Andre, >> >> (moving to the more appropriate freebsd-net) >> >>> I'm sorry for ambushing but this stuff has to be done. I have provided >>> an alternative way of handling it and I'm happy to help you with your >>> use case to make it good for you and to prevent the mbuf system from >>> getting bloated and hackish again. >> >> Sure. I'm not really upset since my code wasn't too far along, but with any API, you never know >> who consumers might be so it's always worth being proactive about announcing it's removal. >> >>> Can you please describe your intended use of M_NOFREE to better understand >>> the shortcomings of the current mbuf systems and the additional advantages >>> of the M_NOFREE case? >> >> I was looking at something similar to Linux's vhost-net, where a guest's virtio ring would be >> processed in-kernel. An mbuf chain with external buffers would be used to pass guest tx buffer/len >> segments directly into FreeBSD drivers. >> >> The intent of M_NOFREE was to avoid small mbuf allocations/frees in what is a hot path. This code >> was intended to run at 10/40G. >> >> Note this code isn't really generic - it would require interfaces to be 'owned' by the guest, >> except that direct PCI-level pass-through wouldn't be needed. >> >> If there's an alternative to M_NOFREE, I'd be more than happy to use that. > > I think an alternative would be a reference counted version. we used to have that and NetBSD had a > quite sophisticated mbuf system where there were multiple owners of mbufs.. > they wouldn't be freed until the last one freed it but I don't remember the details. I just had a glance at the NetBSD mbuf system and it doesn't look convincing either. There may be some serious scalability issues with this "ownership" thing. -- Andre