> [EMAIL PROTECTED] writes:
>
>> Stephen Pierzchala wrote:
>>
>> All:
>> 
>> A question for discussion: should a lower bound be set in mod_deflate?
>> 
>> I just ran a test using the Linux Documentation Project files and found
>> that some of the files in the test group were quite small, less that 100
>> bytes. When mod_deflate tackled these files, I saw a file sized increase
>> of between 12 and 15 bytes.
>> 
>> Doesn't sound like a lot, until maybe you start to add up all of those
>> HTML error pages we all send.
>> 
>> I open the floor to debate. :-)
>
>
> while this may be easy for the cases where the filter gets passed a
> content-length header, 

No brainer ( if it's accurate when the filter fires up ).

> it may be harder for the ones where it doesn't
> know the size of the page before it starts compressing..

Any filter is supposed to be able to buffer data. Harder, yes,
but not impossible. The whole filtering scheme is SUPPOSED
to be able to handle this, no problems. Not sure if anything
has actually exercised this yet, though. Might be time to
see if it really works.

The 'cheap trick' compromise would be to realize that by
the time the first brigade shows up there will probably be
only one of 2 scenarios...

1. The response is less than the size of the fileread and/or
CGI transfer buffer size ( 4k? ) and nothing else is coming
( There is already an EOS in the first brigade. This can
be treated the same as having 'content-length' because
you know for sure how long the full response is before you
have to decide whether to fire up the compression.

2. If there's no EOS in the brigade yet you have to assume
more is coming so now it's nut-crackin' time. If the 'minimum
file size' is less than the amount of data already in the first
brigade showing up then it's also a no brainer... just pass
it on without compressing. If the minimum file size is 
larger than what's in the first brigade... then it's time to
start buffering ( if the code allows it ).

I would say that just allowing a 'minimum file size' in 
the 2-3k byterange and only doing the check on the
first brigade would handle most situations where anyone
is worried about whether something is worth compression.

Anything over about 900 bytes is almost ALWAYS going
to show some size reduction. Problem solved.

If someone wants to start setting a minimum file size of
100,000 bytes then I would suggest the 'requirement' on
their end be that all responses MUST have 'Content-Length:'
from the origin ( if it's not a file read ) until mod_deflate can
actually 'store and forward' any size response.

> I'm cool with putting in a directive, but not sure how to write the doc's 
up
> to say that this is a 'guidance' only and that it might be ignored.

See above. Limit it to the normal (Apache) I/O buffer read size(s) 
and suggest that anything above that can/should have
'Content-Length' or it's not eligible for the 'minimum size' check.

> we should also put in a directive to only compress when system load is 
> below a certain level. (but we would need a apr_get_system_load() 
> function first .. any volunteers? )

If you go down this route watch out for what's called 'back-flash'.

You can easily get into a catch-22 at the 'threshhold' rate
where you are ping-ponging over/under the threshhold because
currently executing ZLIB compressions will always be included in
the 'system load' stat you are computing.

In other words... if you don't want to compress because you
think the machine is too busy then it might only be too
busy because it's already compressing. The minute you
turn off compression you drop under-threshhold and now
you are 'thrashing' and 'ping-ponging' over/under the
threshhold.

You might want to always compare system load against
transaction/compression task load to see if something other 
than normal compression activity is eating the CPU.

Low transaction count + high CPU load = Something other than
compression is eating the CPU and stopping compressions
won't really make much difference.

High transaction count + high CPU load + high number
of compressions in progress = Might be best to back
off on the compressions for a moment.

[EMAIL PROTECTED]

Reply via email to