> Thanks for making it clear. This may be one of the reasons why I still
> see 0.1% test failure at 2x standard deviation. The expected number
> of packet per interface can be as low as 64.  Another reason I find to
> be the variations in hash value computed from packet.
> 
> Should we simply do "random_uin32() % #slaves", instead of
> hmap_random_node(), so that we can avoid your 2nd case?

it sounds like an improvement, yes.
(if there's a handy array of slaves.)

YAMAMOTO Takashi

> 
> On Wed, May 7, 2014 at 8:07 PM, YAMAMOTO Takashi <yamam...@valinux.co.jp> 
> wrote:
>>> On Wed, May 7, 2014 at 7:01 PM, YAMAMOTO Takashi <yamam...@valinux.co.jp> 
>>> wrote:
>>>>> Sorry I was not clear in the commit message. It is the average of the
>>>>> first interface. I will make it clear before pushing.
>>>>
>>>> thanks for clarification.
>>>> i think the average is not so important.  hash colision is.
>>>> the worst case is, two interfaces in the same bucket, one in the other.
>>>> in that case, packet distribution would be 1:1:2.
>>> Would you please explain more? How did you arrive at this
>>> distribution? Why is this the worst case?
>>
>> see hmap_random_node.
>>
>> given the number of items is 3, there are a few possible cases:
>> - a bucket has all 3 items.
>> - a bucket has 2 items, and another bucket has 1 item.
>> - 3 buckets, each has 1 item.
>>
>> for the first and last cases distribution would be 1:1:1.
>>
>> for the 2nd case, each bucket would have the same chance to be selected.
>>
>> YAMAMOTO Takashi
>>
>>>> your value is safe enough for the distribution.
>>>>
>>>> YAMAMOTO Takashi
>>>>
>>>>>
>>>>> On Wed, May 7, 2014 at 6:18 PM, YAMAMOTO Takashi <yamam...@valinux.co.jp> 
>>>>> wrote:
>>>>>>> Raise the minimal per interface packet distribution from 7 to 24.
>>>>>>>
>>>>>>> With 256 packet distributing to 3 interfaces, the expected packets per
>>>>>>> interface should be 256/3 = 85.3
>>>>>>>
>>>>>>> Tested with 200 runs, the average number of packet per interface is
>>>>>>> 85.9. close to the expected number, standard deviation within the 200
>>>>>>> run is 24.4. Tested with 2x standard deviation with 10K test runs,
>>>>>>> got around 0.1% failure rate. 2.5x standard deviation passes 100K test
>>>>>>> runs without failure.
>>>>>>>
>>>>>>> Using 2.5x for the unit test, 83.5 - 2.5 * 24.4, Round down to the
>>>>>>> whole number of 24.
>>>>>>
>>>>>> the patch itself looks ok (thus acked-by) but i have a question on
>>>>>> the commit message.
>>>>>> why can the average number be larger than the expected number?
>>>>>> the total number of packets for a run is expected to be exactly 256,
>>>>>> isn't it?
>>>>>>
>>>>>> Acked-by: YAMAMOTO Takashi <yamam...@valinux.co.jp>
>>>>>> Tested-by: YAMAMOTO Takashi <yamam...@valinux.co.jp>
>>>>>>
>>>>>> YAMAMOTO Takashi
>>>>>>
>>>>>>>
>>>>>>> Signed-off-by: Andy Zhou <az...@nicira.com>
>>>>>>> ---
>>>>>>>  tests/ofproto-dpif.at | 6 +++---
>>>>>>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>>>>>>
>>>>>>> diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at
>>>>>>> index c46e997..3723459 100644
>>>>>>> --- a/tests/ofproto-dpif.at
>>>>>>> +++ b/tests/ofproto-dpif.at
>>>>>>> @@ -191,9 +191,9 @@ AT_CHECK([ovs-appctl dpif/dump-flows br0 |grep tcp 
>>>>>>> > br0_flows.txt])
>>>>>>>  AT_CHECK([ovs-appctl dpif/dump-flows br1 |grep tcp > br1_flows.txt])
>>>>>>>  # Make sure there is resonable distribution to all three ports.
>>>>>>>  # We don't want to make this check precise, in case hash function 
>>>>>>> changes.
>>>>>>> -AT_CHECK([test `grep in_port.4 br1_flows.txt |wc -l` -gt 7])
>>>>>>> -AT_CHECK([test `grep in_port.5 br1_flows.txt |wc -l` -gt 7])
>>>>>>> -AT_CHECK([test `grep in_port.6 br1_flows.txt |wc -l` -gt 7])
>>>>>>> +AT_CHECK([test `grep in_port.4 br1_flows.txt |wc -l` -gt 24])
>>>>>>> +AT_CHECK([test `grep in_port.5 br1_flows.txt |wc -l` -gt 24])
>>>>>>> +AT_CHECK([test `grep in_port.6 br1_flows.txt |wc -l` -gt 24])
>>>>>>>  OVS_VSWITCHD_STOP()
>>>>>>>  AT_CLEANUP
>>>>>>>
>>>>>>> --
>>>>>>> 1.9.1
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> dev mailing list
>>>>>>> dev@openvswitch.org
>>>>>>> http://openvswitch.org/mailman/listinfo/dev
>>>>> _______________________________________________
>>>>> dev mailing list
>>>>> dev@openvswitch.org
>>>>> http://openvswitch.org/mailman/listinfo/dev
>>> _______________________________________________
>>> dev mailing list
>>> dev@openvswitch.org
>>> http://openvswitch.org/mailman/listinfo/dev
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to