On Wed, Mar 14, 2007 at 06:38:48PM +0000, Nick Kew wrote:
> Now, what leads you to suppose mod_line_edit uses RAM proportional
> to content size?  Other than when the entire contents arrive in a
> single bucket?

Because it implements the naive filter implementation, equivalent to:

e = APR_BRIGADE_FIRST(bb);
while (e != APR_BRIGADE_SENTINEL(bb)) {
   apr_bucket_read(e, ...);
   ...process bucket without passing on to f->next or deleting...
   e = APR_BUCKET_NEXT(e);
}

for the general case given bb contains a single FILE bucket, or a 
CGI/PIPE bucket, or any morphing bucket type which doesn't represent a 
chunk of memory, this does:

After Iter#     Contents of bb                  Heap memory used
1               HEAP FILE                       8K
2               HEAP HEAP FILE                  16K
3               HEAP HEAP HEAP FILE             24K
...
n               HEAP*n                          n*8K

where n ~= file size / 8K; FILE buckets will also morph into MMAP 
buckets so the practice is a bit more complicated but this illustrates 
the point... and the 8K is really 8000 bytes.

joe

Reply via email to