Skip to content

Round Robin Hashes behaving on an action profile vs group basis #1343

Description

@matthewtlam

Upon doing tests with round robin, it seems that the behavior turns the round robin wheels on an "individual" basis, but it's on a per action profile basis rather than on a group basis.

The following example has the members of the two groups of the same type being non co-prime (i.e. two ars_groups with non co-prime number of members). Here we get round robin behaving on a per action profile basis: (group_1, 1), (group_2, 3), (group_1, 2), (group_2, 4), (group_1, 1), (group_2, 5), (group_1_ 2), (group_2, 6). This works as expected.

                    overlay_group
                    /           \
            ars_group_1        ars_group_2
             /   |            /   |    |   \
Ports:      1    2           3    4    5    6 

Another example here where the members of the group are co-prime, but uses two different groups. Here, we get round robin based on the individual groups, which also produces the result as expected.

                    overlay_group
                    /           \
            ars_group_1       wcmp_group_1
             /     \         /      |      \
Ports:      1       2       3       4       5

However, in this case where we have non co-prime sized members of two of the same group (2 ars groups), then we get the following behavior: (group_1, 1), (group_2, 4), (group_1, 1), (group_2, 3), (group_1, 1), (group_2, 5). Note that we skip the member (group_1, 2) entirely).

                    overlay_group
                    /           \
             ars_group_1       ars_group_2
               /     \        /     |     \
Ports:        1      2        3     4     5

@antoninbas do you know how much effort and potential performance cost of having the round robin hashes (potentially all hashes) live on a per-group basis, rather than a per-action profile basis?

cc: @jonathan-dilorenzo, @smolkaj

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions