Lots of configs
perbu at varnish-software.com
Mon Mar 7 22:18:03 CET 2011
Hi David, List.
On Mon, Mar 7, 2011 at 7:52 PM, David Helkowski <dhelkowski at sbgnet.com>wrote:
> A modern CPU can run, at most, around 10 million -assembly based-
> instructions per second.
> See http://en.wikipedia.org/wiki/Instructions_per_second
> A regular expression compare is likely at least 20 or so assembly
> That gives around 500,000 regular expression compares if you are using 100%
> of the
> CPU just for that. A reasonable amount of CPU to consume would be 30% ( at
> most ).
> So; you are left with around 150k regular expression checks per second.
I guess we should stop speculating. I wrote a short program to do in-cache
pcre pattern matching.
My laptop (i5 M560) seems to churn through 7M pcre matches a second so I was
a bit off. The matches where anchored and small but varying it doesn't seem
to affect performance much.
The source for my test is here: http://pastebin.com/a68y15hp
Compare it to a hash lookup. A hash lookup, using a good minimal perfect
> hashing algorithms,
> will take at most around 10 operations. Using the same math as above, that
> gives around 300k
> lookups per second. A hash would be roughly 500 times faster than using
Of course a hash lookup is faster. But if you got to deploy a whole bunch of
scary inline C that will seriously intimidate the summer intern and makes
all the other fear the config it's just not worth it. Of course it isn't as
cool a building a hash table of functions in inline C, but is it useful when
the speedup gain is lost in buffer bloat anyway? I think not.
> On 3/7/2011 1:35 PM, Per Buer wrote:
> On Sun, Mar 6, 2011 at 11:39 PM, AD <straightflush at gmail.com> wrote:
>> what is the best way to run an instance of varnish that may need
>> different vcl configurations for each hostname. This could end up being
>> 100-500 includes to map to each hostname and then a long if/then block based
>> on the hostname. Is there a more scalable way to deal with this?
> CPU and memory bandwidth is abundant on modern servers. I'm actually not
> sure that having a 500 entries long if/else statement will hamper
> performance at all. Remember, there will be no system calls. I would guess a
> modern server will execute at least a four million regex-based if/else per
> second per CPU core if most of the code and data will be in the on die
> cache. So executing 500 matches should take about 0.5ms.
> It might not make sense to optimize this.
> Per Buer, Varnish Software
> Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer
> Varnish makes websites fly!
> Want to learn more about Varnish?
> varnish-misc mailing list
> varnish-misc at varnish-cache.orghttp://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
Per Buer, Varnish Software
Phone: +47 21 98 92 61 / Mobile: +47 958 39 117 / Skype: per.buer
Varnish makes websites fly!
Want to learn more about Varnish?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the varnish-misc