mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 02:00:43 +00:00
The rendering code checks whether endpoint IPs are part of cluster-local networks. Due to the prevalence of endpoints - medium sized reports can contain many thousands of endpoints - this is performance critical. Alas the existing code performs the check via a linear scan of a list of networks. That is slow when there are more than a few, which will be the case in the context of k8s, since there the probes register service IPs as local /32 networks. Here we change representation of the set of networks to a prefix tree (aka trie), which is well-suited for IP network membership checks since networks are in fact a bitstring prefixes. The specific representation is a crit-bit tree, but that choice was purely based on implementation convenience - the chosen library is the only one I could find that directly supports IP networks.
Managing Vendored Dependencies with gvt
These operations result in uncommitted changes to your branch; you will need to commit them as normal. Execute them in the root of your checkout.
For these changes to take effect, you'll have to make clean before running
make.
Installing gvt
$ go get -u github.com/FiloSottile/gvt
Adding a Dependency
~/service$ gvt fetch example.com/organisation/module
Updating a Dependency
~/service$ gvt update example.com/organisation/module
Removing a Dependency
~/service$ gvt delete example.com/organisation/module