Lots of configs

David Helkowski dhelkowski at sbgnet.com
Mon Mar 7 19:52:22 CET 2011


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 
instructions.
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.

Lets suppose there are 500 different domains. On average, you will be 
doing 250 if/else
checks per call. 150k / 250 = 600. That means that you will get, under 
fair conditions, a max
of about 600 hits per second. The person asking the question likely has 
500 domains running.
That gives a little over 1 hit possible per second per domain. Do you 
think that is an acceptable
solution for this person? I think not.

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 
if/else...

On 3/7/2011 1:35 PM, Per Buer wrote:
> Hi,
>
> On Sun, Mar 6, 2011 at 11:39 PM, AD <straightflush at gmail.com 
> <mailto: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? 
> http://www.varnish-software.com/whitepapers
>
>
> _______________________________________________
> varnish-misc mailing list
> varnish-misc at varnish-cache.org
> http://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20110307/5d1f110b/attachment-0003.html>


More information about the varnish-misc mailing list