[Xorp-hackers] FEA performance improvements: only 'pull' active interfaces.
Pavlin Radoslavov
pavlin at ICSI.Berkeley.EDU
Thu Mar 20 08:34:58 PDT 2008
Ben,
At the high level (ignoring the extra complexity) I like the idea of
the FEA dealing only with those interfaces that it needs to (i.e.,
only the configured interfaces).
Though, with a large patch like yours that affects the FEA in number
of ways it requires very careful integration.
Hence, please add it to Bugzilla like the previous patch.
I will leave it to you to decide whether to reuse the previous
Bugzilla entry or open a new one.
Also, please add a comment to the Bugzilla entry that the patch
includes other changes like the per-interface socket.
On the technical side, why did you have to merge live_config with
pulled_config? From performance perspective it shouldn't make
difference.
Thanks,
Pavlin
Ben Greear <greearb at candelatech.com> wrote:
> I have completed the first pass at my attempt to speed up
> FEA's handling of interfaces.
>
> Basically, I removed live_config entirely, using pulled_config
> in it's place. For pulled_config, I only pull info about configured
> interfaces, and for the observer, I ignore anything not in the
> configured interfaces. Interfaces are added to the various iftrees
> when they are configured by the user.
>
> In doing this, I hacked on a bunch of the xrl handler classes.
> Mostly cosmetic, but it makes the patch quite large. I tried to
> remove or minimize direct access to the ifconfig's iftree objects,
> but some seem necessary and remain.
>
> The patch also still has a lot of debugging code in it.
>
> But, it does appear to work.
>
> I tested my 30-node scenario with ~600 interfaces (about 10-15 of them
> associated with each xorp instance, and others not in any xorp).
>
> With my patch, the load still goes to around 30 when I'm heavily modifying
> interfaces in the xorps, but the time to make a xorpsh commit was a max of
> about 6 seconds and the system was generally responsive.
>
> fea also starts up quicker since it doesn't have to read all the interfaces
> in on startup.
>
> Without this latest addition, the system load went to 30, and xorpsh
> commits were taking 90+ seconds.
>
> So, it's definitely a winner for xorp on linux in my scenario. It's
> likely that if netlink is not used, or if there are few interfaces, or
> if there are lots of interfaces and xorp is using all of them, then there
> will NOT be a lot of gain from my patch (maybe even slightly worse performance
> since I'm not batch-reading all interfaces with netlink now.)
>
> Its also likely I broke the compile on some systems, as some of the netlink
> code was still using live_config(), but evidently was #ifdef'd out on Linux
> since it compiled fine for me.
>
> Systems that don't use netlink shouldn't be affected much either way, I think,
> but I've no way to really test them.
>
> The patch is too big for the mailing list, but can be downloaded
> from here:
>
> http://www.candelatech.com/oss/fea_iftree.patch
>
> Comments welcome. If there is something I can do or change to give this more
> of a chance of being accepted, please let me know.
>
> Thanks,
> Ben
>
> --
> Ben Greear <greearb at candelatech.com>
> Candela Technologies Inc http://www.candelatech.com
>
> _______________________________________________
> Xorp-hackers mailing list
> Xorp-hackers at icir.org
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers
More information about the Xorp-hackers
mailing list