[infinispan-dev] default value for virtualNodes

Bela Ban bban at redhat.com
Fri Jan 27 05:52:19 EST 2012


I assume the number of vnodes cannot be changed at runtime, dynamically 
adapting to a changing environment ?

I understand everybody has to have the exact same number of vnodes for 
reads and writes to hit the correct node, right ?

On 1/27/12 9:41 AM, Dan Berindei wrote:
> Hi guys
>
> I've been working on a test to search for an optimal default value here:
> https://github.com/danberindei/infinispan/commit/983c0328dc40be9609fcabb767dd46f9b98af464
>
> I'm measuring both the number of keys for which a node is primary
> owner and the number of keys for which it is one of the owners
> compared to the ideal distribution (K/N keys on each node). The former
> tells us how much more work the node could be expected to do, the
> latter how much memory the node is likely to need.
>
> I'm only running 10000 loops, so the max figure is not the absolute
> maximum. But it's certainly bigger than the 0.9999 percentile.
>
> The full results are here:
> http://fpaste.org/cI1r/
>
> The uniformity of the distribution goes up with the number of virtual
> nodes but down with the number of physical nodes. I think we should go
> with a default of 48 nodes (or 50 if you prefer decimal). With 32
> nodes, there's only a 0.1% chance that a node will hold more than 1.35
> * K/N keys, and a 0.1% chance that the node will be primary owner for
> more than 1.5 * K/N keys.
>
> We could go higher, but we run against the risk of node addresses
> colliding on the hash wheel. According to the formula on the Birthday
> Paradox page (http://en.wikipedia.org/wiki/Birthday_problem), we only
> need 2072 addresses on our 2^31 hash wheel to get a 0.1% chance of
> collision. That means 21 nodes * 96 virtual nodes, 32 nodes * 64
> virtual nodes or 43 nodes * 48 virtual nodes.
>
> Cheers
> Dan
>
>
> On Fri, Jan 27, 2012 at 12:37 AM, Sanne Grinovero<sanne at infinispan.org>  wrote:
>> On 26 January 2012 22:29, Manik Surtani<manik at jboss.org>  wrote:
>>>
>>> On 26 Jan 2012, at 20:16, Sanne Grinovero wrote:
>>>
>>> +1
>>> Which default? 100? A prime?
>>>
>>> We should also make sure the CH function is optimized for this being on.
>>>
>>>
>>> Yes, we should profile a session with vnodes enabled.
>>
>> Manik, we're using VNodes in our performance tests. The proposal is if
>> we can provide a good default value, as the feature is currently
>> disabled by default.


-- 
Bela Ban
Lead JGroups (http://www.jgroups.org)
JBoss / Red Hat


More information about the infinispan-dev mailing list