On Mon, Feb 01, 2016 at 10:12:49AM -0500, Russell Bryant wrote: > On 02/01/2016 05:03 AM, Yusheng Wang wrote: > > We are trying to propose a new computation model for the ovn-northd > > application. Currently, ovn-northd computes all logical data path > > flows for every change. This full computation model is simple and > > helped verifying the concept of logical data path design, but it also > > suffers performance drawback. > > > > In order to move from full computation to incremental computation, > > more sophisticated tool is needed to manage the complexity associated > > with both generating more and more complex logical data path flows > > and dealing with irrelevant sequence of incremental changes. > > > > Now we think it is good time to introduce the new computation model - > > nlog. Nlog is a specialized declarative programming language based on > > datalog. > > > > The nlog computation model has been proved to work well for quite a > > few systems. We have done a POC in which a brand new nlog compiler > > and nlog run-time engine are implemented. Nlog program has been > > written to implement basic ovn features to verify its capabilities. > > > > We see a good match of the ovn data schema with nlog computation > > model. Both ovn-northd and ovn-controller use ovsdb and the data to > > be processed are tuples. This is also true for nlog programs and > > minimum data transformation is needed to adapt to the new computation > > model. > > > > This move will take multiple phases and current ovn-northd > > functionality will not be impacted. The north and south side database > > schema will not be changed during and after this move. > > Thanks for sharing your ideas! > > I haven't heard of nlog before. You mentioned that it has worked well > for quite a few systems. Can you provide some references for where I > can go to learn more?
I can provide some information here, because I've been talking to Yusheng and encouraging him to start a conversation here. Yusheng, by the way, is a VMware developer working from the Beijing office, who has been interested in getting involved with OVN for a while and sees an opportunity here. Hi Yusheng! First, nlog has nothing to do with any of at least the first page of hits on Google, which appear to all be about some kind of logging system for .NET. Instead, this "nlog" is a variant of the Datalog database language. Datalog is a language with a pretty long pedigree dating back to the 1980s, at least, but there aren't very many good resources for it online. Wikipedia has a very basic introduction. A paper I've found that gives some insight on how to implement it is "What You Always Wanted to Know About Datalog (And Never Dared to Ask)" here: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.384.5801&rep=rep1&type=pdf Personally, I think of nlog as analogous to Makefiles, in that you specify dependencies and formulas and there's an engine that does all the smart bits of figuring out what's the minimum amount of computation to get the outputs you want. Yusheng made a prototype implementation of nlog in Java and did a demo of it for me. I found this pretty impressive. It only took a few thousand lines of code and yielded something that produces incremental results for incremental changes to the input data. I think we'll want something like that for scale at ovn-northd, at least eventually. (ovn-controller will also want incremental computation but I don't know whether it should be the same solution.) I don't know whether there are public implementations of nlog. The best reference I know for use in a product is the 2014 NSDI paper on NVP, especially section 4.3: http://benpfaff.org/papers/net-virt.pdf > In general, I definitely agree that this problem is something we need to > work on. I've been wanting to look into adding a way for users of the > IDL API to receive callbacks on row events (create, update, delete) so > that it knows which rows it should apply updates for. That's about as > far as I've gone though. I haven't written any code yet because I keep > staying busy with other things. That's a necessary feature to implement nlog in ovn-northd. It's there now, by the way, contributed by HP. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev