Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Nov 2009 00:39:19 -0600
From:      Alan Cox <alc@cs.rice.edu>
To:        John Baldwin <jhb@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Robert Watson <rwatson@freebsd.org>, Jung-uk Kim <jkim@freebsd.org>
Subject:   Re: svn commit: r199498 - in head/sys: amd64/amd64 i386/i386 net
Message-ID:  <4B063997.2010900@cs.rice.edu>
In-Reply-To: <200911191649.37198.jhb@freebsd.org>
References:  <200911182340.nAINeJ3W087652@svn.freebsd.org> <alpine.BSF.2.00.0911190819550.12162@fledge.watson.org> <200911191115.11088.jkim@FreeBSD.org> <200911191649.37198.jhb@freebsd.org>

index | next in thread | previous in thread | raw e-mail

John Baldwin wrote:
> On Thursday 19 November 2009 11:15:01 am Jung-uk Kim wrote:
>   
>> On Thursday 19 November 2009 03:26 am, Robert Watson wrote:
>>     
>>> On Wed, 18 Nov 2009, Jung-uk Kim wrote:
>>>       
>>>>  - Change internal function bpf_jit_compile() to return allocated
>>>> size of the generated binary and remove page size limitation for
>>>> userland. - Use contigmalloc(9)/contigfree(9) instead of
>>>> malloc(9)/free(9) to make sure the generated binary aligns
>>>> properly and make it physically contiguous.
>>>>         
>>> Is physical contiguity actually required here -- I would have
>>> thought virtual contiguity and alignment would be sufficient, in
>>> which case the normal trick is to allocate using malloc the size +
>>> min-align + 1 and then fudge the pointer forward until it's
>>> properly aligned.
>>>       
>> I don't believe it is strictly necessary but I assumed it might have 
>> performance benefit for very big BPF programs although I have not 
>> measured it.  Also, contigmalloc(9)/contigfree(9) is too obvious to 
>> ignore for this purpose. :-)
>>     
>
> Why would it have a performance benefit to have the pages be physically 
> contiguous?  contigmalloc() is expensive and should really only be used if 
> you truly need contiguous memory.  If you can get by with malloc(), just use 
> malloc().
>
>   

If anything, there is a performance benefit from using malloc.  Kernel 
memory allocated with malloc on amd64 is likely to be backed by 
superpages.  This is not true of contigmalloc.

Alan




home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B063997.2010900>