Hi Guy,

You can look at BatchingUtils in Genius that we use for InterfaceManager. Since 
all IFM data goes to TopologyConfig or Default config shard, we batch 
transactions separately. As of today we do know statically which yang model 
goes to which shard and we’re taking advantage of it to do batching in 
Genius/Netvirt.

Regards,
Vishal.

From: controller-dev-boun...@lists.opendaylight.org 
[mailto:controller-dev-boun...@lists.opendaylight.org] On Behalf Of 
Muthukumaran K
Sent: 12 January 2017 15:00
To: Sela, Guy <guy.s...@hpe.com>; Tom Pantelis <tompante...@gmail.com>
Cc: odl netvirt dev <netvirt-...@lists.opendaylight.org>; 
controller-dev@lists.opendaylight.org; integration-...@lists.opendaylight.org; 
Kochba, Alon <alo...@hpe.com>
Subject: Re: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Hi Sela,

Transaction is wrt a shard. So, if we take Netvirt for example, all the config 
yang modules get mapped to default config shard. So, its ok to have a single 
config transaction spanning multiple yang models

But if you are configuring a flow (which maps to Inventory-Config Shard) and 
also some tunnel config (which could be part of default-config shard) in same 
transaction, then we cross the shard boundaries and what Robert says hold true 
for that case.

Regards
Muthu


From: Sela, Guy [mailto:guy.s...@hpe.com]
Sent: Thursday, January 12, 2017 2:53 PM
To: Muthukumaran K 
<muthukumara...@ericsson.com<mailto:muthukumara...@ericsson.com>>; Tom Pantelis 
<tompante...@gmail.com<mailto:tompante...@gmail.com>>
Cc: odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 Kochba, Alon <alo...@hpe.com<mailto:alo...@hpe.com>>; 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>
Subject: RE: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Thanks for the explanation, I finally understand.
I will print this reply and paste it next to my computer☺

So getting back to my bug prone question, I remember Robert saying in Seattle 
that you shouldn’t write in the same transaction to different shards. Because 
you can’t know in the code how will the final sharding be configured, would you 
say as a good practice to avoid writing to different yang modules in the same 
transaction?

From: Muthukumaran K [mailto:muthukumara...@ericsson.com]
Sent: Thursday, January 12, 2017 11:08 AM
To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>>; Tom Pantelis 
<tompante...@gmail.com<mailto:tompante...@gmail.com>>
Cc: odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 Kochba, Alon <alo...@hpe.com<mailto:alo...@hpe.com>>; 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>
Subject: RE: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Hi Sela,

There are 3 related aspects viz., module  - yang tree / yang module, shards – a 
group of yang trees whose data is placed together, sharding strategy – how 
trees and shards are related.

Default strategy in ODL is module-level. By that virtue, we can control to the 
extent of mapping one yang module to one shard.

When Tom says that everything else goes into default shard, it’s the built in 
behavior of the sharding and not user controllable. So, at user-controllable 
level its 1:1 --> module:shard and whatever module not configured by user with 
dedicated shard will go into default shard.

Effectively, by default, we would have inventory X 2 + topology X 2 + default X 
2 + toaster X 2 + EOS Shard (implicit and not configured) X 1 = 9 shards will 
be there in the system. Here 2 implies one for oper and one for config

This section describes the default behavior - 
https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Architecture:Clustering#Configuration


Regards


From: 
controller-dev-boun...@lists.opendaylight.org<mailto:controller-dev-boun...@lists.opendaylight.org>
 [mailto:controller-dev-boun...@lists.opendaylight.org] On Behalf Of Sela, Guy
Sent: Wednesday, January 11, 2017 8:37 PM
To: Tom Pantelis <tompante...@gmail.com<mailto:tompante...@gmail.com>>
Cc: odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 Kochba, Alon <alo...@hpe.com<mailto:alo...@hpe.com>>; 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>
Subject: Re: [controller-dev] [netvirt-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Oh so that’s really different than option 1 I wrote.
You are saying that I have a capability of creating shards by taking different 
yang trees and combining them into shards?.
My smallest unit of work is a yang tree ?

I still don’t see how it is done.
Let’s say I wanted to take the 2 trees in my example and put them in one shard 
only for them.
How will module-shards.conf look like and how will modules.conf will look like?
If you have an example of that in some WIKI, you can just point me to that.


From: Tom Pantelis [mailto:tompante...@gmail.com]
Sent: Wednesday, January 11, 2017 4:58 PM
To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>>
Cc: Robert Varga <n...@hq.sk<mailto:n...@hq.sk>>; Kochba, Alon 
<alo...@hpe.com<mailto:alo...@hpe.com>>; Williams, Marcus 
<marcus.willi...@intel.com<mailto:marcus.willi...@intel.com>>; Daniel Farrell 
<dfarr...@redhat.com<mailto:dfarr...@redhat.com>>; odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>;
 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>
Subject: Re: [netvirt-dev] [controller-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore

Shards are (currently) statically configured in module-shards.conf. There's 3 
OOB - "topology", "inventory", and "default". Anything not under topology and 
inventory go into the default shard.

On Wed, Jan 11, 2017 at 9:51 AM, Sela, Guy 
<guy.s...@hpe.com<mailto:guy.s...@hpe.com>> wrote:
So what you mean is that if I create a yang tree in a yang file, it will 
ultimately translate into maximum two shards?
One for the operational and one for the configuration?

So for example elan.yang:
    container elan-interface-forwarding-entries {
        config false;

        list elan-interface-mac {
            key "elan-interface";
            description "All the MAC addresses learned on a particular elan 
interface";
            max-elements "unbounded";
            min-elements "0";
            leaf elan-interface {
                type leafref {
                    path "/if:interfaces/if:interface/if:name";
                }
            }

            uses forwarding-entries;
        }
    }

container elan-tag-name-map {
        config false;

        list elan-tag-name {
            key elan-tag;
            leaf elan-tag {
                type uint32;
            }

            leaf name {
                type string;
                description
                "The name of the elan-instance.";
            }
        }
    }

These 2 only live in the operational (Because config false), so it means 2 
Shards ?

-----Original Message-----
From: Robert Varga [mailto:n...@hq.sk<mailto:n...@hq.sk>]
Sent: Wednesday, January 11, 2017 4:45 PM
To: Sela, Guy <guy.s...@hpe.com<mailto:guy.s...@hpe.com>>; Tom Pantelis 
<tompante...@gmail.com<mailto:tompante...@gmail.com>>; Kochba, Alon 
<alo...@hpe.com<mailto:alo...@hpe.com>>
Cc: Williams, Marcus 
<marcus.willi...@intel.com<mailto:marcus.willi...@intel.com>>; Daniel Farrell 
<dfarr...@redhat.com<mailto:dfarr...@redhat.com>>; odl netvirt dev 
<netvirt-...@lists.opendaylight.org<mailto:netvirt-...@lists.opendaylight.org>>;
 
controller-dev@lists.opendaylight.org<mailto:controller-dev@lists.opendaylight.org>;
 
integration-...@lists.opendaylight.org<mailto:integration-...@lists.opendaylight.org>
Subject: Re: [netvirt-dev] [controller-dev] [mdsal-dev] Netvirt Scale tests: 
OutOfMemory from datastore
On 01/11/2017 03:42 PM, Sela, Guy wrote:
> I have some blurriness about what a shard is, that I still didn’t
> figure out.
>
> I have some guesses:
>
> 1)      Every yang tree == one shard.
>
> 2)      Shard can be a collection of a number of yang trees.
>
> 3)      None of the above?
>

Mostly 1. Each shard encapsulates a single ShardDataTree, which encapsulates a 
single DataTree. The sum of shards is presented as the data store (CDS).

Regards,
Robert

_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to