Cliff Woolley wrote:
>On Sat, 2 Mar 2002, Brian Pane wrote:
>
>>The 8KB allocations are from apr_brigade_write().
>>
>
>Not all of them should be. If they are, I forgot some changes. All of
>the APR_BUCKET_BUFF_SIZE malloc()'s should have been changed to
>apr_bucket_alloc() calls, and those happen in foo_read() and
>apr_bucket_heap_make() and a handful of other places in addition to
>apr_brigade_write(). Though we might not be hitting many of those other
>spots since we have sendfile and mmap, etc.
>
You're right. I just did some gdb'ing and found that the 8KB
allocs in my test case (a simple mod_include scenario) were
actually from the socket_read() function in apr_buckets_socket.c.
This test case didn't actually hit the apr_brigade_write()
8KB alloc.
>>These 8KB blocks imply a design constraint for
>>the bucket allocator: it can't quite be a simple
>>power-of-two allocator.
>>
>
>I'd thought about that. We are of course free to pick whatever block
>sizes we want.... if we want a block size that's just a bit bigger than
>8KB, I don't see a problem with that. Or we could just decrease
>APR_BUCKET_BUFF_SIZE a bit so that we stay inside our two-page (on most
>systems) 8KB boundary. Either way's fine with me.
>
+1 on decreasing APR_BUCKET_BUFF_SIZE to fit the whole thing
within 8KB.
--Brian
|