Re: ayjwork squid3/src HttpRequestMethod...

From: Amos Jeffries <squid3@dont-contact.us>
Date: Sun, 03 Feb 2008 19:05:55 +1300

Adrian Chadd wrote:
> On Sun, Feb 03, 2008, Amos Jeffries wrote:
>>> Please give an example or two, where the performance would noticeably
>>> suffer for standard methods.
>> There were several switch(e->method) in what I think is the request
>> processing pathways. I was thinking making that switch into a series of
>> string comparisons (on image()) would increase the processing ops where
>> the current index int checks are faster.
>> src/client_side.cc:630 - clientIsContentLengthValid(HttpRequest * r)
>> src/forward.cc:467 - checkRetriable()
>>
>> I don't think it would be a _great_ sufferance, but it would be a small
>> unnecessary backslide. Making the enum 'methods which squid has special
>> internal processes for' would be simple and easier to maintain than
>> attempting to keep a comprehensive list with unexpected 'others' also
>> accepted silently.
>> And have the benefit of a low amount of change to the code for the same
>> gain.
>
> The current codebase is too poor performing for that particular string
> comparsion to have a noticable effect on performance.
>
> Of course, if you guys actually want things to perform comparable to what
> other projects are doing in the future, this sort of "death by a thousand
> cuts" is one sure fire way to make that more difficult.

That's my line of thinking. 1000 slices wasted, 999 slices wasted, ... 0
  slices :-)

>
> Just abstract stuff out enough so the "do i use the ID or do I use a string"
> is done in one place, with another method exporting the "data" to use
> in the md5 key generation.

Thats the way it stands now. You can pick to check ::id() (fast but
limited by registered enums) or HttRequestMethod::image() ('slow' but
full-text comprehensive)

With a little wasted RAM used by extra methods explicitly named in the
enum array. 1-2KB savings? slice ;-) ...

<dream>
When your string/buf mods get in there we won't need the array at all.
Keeping String theImage as a ptr to the actual buffered request headers.
</dream>

The problem with MD5 is what the side-effect of altering the MD5 in
store will do. Would it make older caches after upgrade 'loose' all
their content as never-matching-again objects?
I don't know enough at this point to answer that one.

Amos

-- 
Please use Squid 2.6STABLE17+ or 3.0STABLE1+
There are serious security advisories out on all earlier releases.
Received on Sat Feb 02 2008 - 23:05:53 MST

This archive was generated by hypermail pre-2.1.9 : Sat Mar 01 2008 - 12:00:09 MST