Hi,

Adding CRUSH[1] as an alternative peer selection method[2] would reduce the 
cache miss when a new peer is added. With the current hashing methods (carp, 
userhash or sourcehash) a large number of requests targeting a given peer 
before the addition will target another peer after the addition. And something 
similar happens when a peer is removed. The interesting property of CRUSH is 
that it tries hard to minimize that undesirable side effect. In other words, if 
we have:

  peer 1 targeted by a set of requests (X1)
  peer 2 targeted by a set of requests (X2)

and we add a new peer, CRUSH makes it so 1/3 of the requests from peer 1 and 2 
move to peer 3

  peer 1 targeted by a set of requests (2/3 of X1)
  peer 2 targeted by a set of requests (2/3 of X2)
  peer 3 targeted by a set of requests (1/3 of X1 + 1/3 of X2)

A implementation[3] depending on libcrush[4] (it does not compile even, just a 
rough draft) was written to verify there is no obvious blocker.

What do you think ?

[1] CRUSH http://www.crss.ucsc.edu/media/papers/weil-sc06.pdf
[2] http://www.squid-cache.org/Versions/v4/cfgman/cache_peer.html
[3] draft implementation http://bugs.squid-cache.org/attachment.cgi?id=3541
[4] libcrush http://libcrush.org/main/libcrush
-- 
Loïc Dachary, Artisan Logiciel Libre
_______________________________________________
squid-dev mailing list
[email protected]
http://lists.squid-cache.org/listinfo/squid-dev

Reply via email to