svn commit: r274017 - head/sys/kern

Hans Petter Selasky hps at selasky.org
Mon Nov 3 09:29:50 UTC 2014


On 11/03/14 10:21, Mateusz Guzik wrote:
> On Mon, Nov 03, 2014 at 09:29:06AM +0100, Hans Petter Selasky wrote:
>> On 11/03/14 09:23, Julian Elischer wrote:
>>> On 11/3/14, 4:21 PM, Julian Elischer wrote:
>>>> On 11/3/14, 3:46 PM, Mateusz Guzik wrote:
>>>>> Author: mjg
>>>>> Date: Mon Nov  3 07:46:51 2014
>>>>> New Revision: 274017
>>>>> URL: https://svnweb.freebsd.org/changeset/base/274017
>>>>>
>>>>> Log:
>>>>>    Provide an on-stack temporary buffer for small ioctl requests.
>>>> I'm not sure I like this. We don't know how many more levels
>>>> of stack may be needed.
>>>> I know that machines are getting faster with more memory,
>>>> but the current move towards bloating out the
>>> ... "bloating out the stack" ...
>>>> worries me.  we started out with a single page of stack (SHARED
>>>> with the U-area!). I think we are now at several pages.. I forget, is
>>>> it 8?
>>>> I'm open to being persuaded but I think we need to have a discussion
>>>> about stack usage. We used to say that anything greater that, say
>>>> 64 bytes should probably be allocated.
>>>>
>>
>> Hi,
>>
>> I think this patch can give a benefit for the USB stack and CUSE4BSD,
>> because it does frequent IOCTLs. Regarding the stack usage, maybe
>> this general purpose optimisation can be allocated from the thread
>> structure?
>>
>
> I was considering something like that. The idea is that frequently
> allocating threads could allocate, say, 1KB from malloc and use that
> to satisfy their needs. This definitely helps offenders with longer
> lifespan, but does not help short-lived ones.

Hi,

This might be non-deterministic behaviour. I'm thinking about IOCTL 
latency, that its better when the latency is constant all the time.

>
> That said, maybe I'm over-engineering this, but for cases where increased
> stack usage is undersirable we could have a malloc wrapper for use by
> code which knows it allocates stuff just to free it after the request.

Maybe the size you allocate from the stack could be some kind of kernel 
option, having some sensible default like 64 bytes when not set.

>
> When it concludes a threshold is reached, allocates some memory and
> keeps it around. It can easily support multiple "allocations" from that
> buffer and fallbak to malloc if it runs out of space.
>

Don't forget to MFC!

--HPS


More information about the svn-src-all mailing list