mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
control/controlclient: don't clone self node on each NetworkMap
Drop in the bucket, but have to start somewhere. Real wins will come once this is done for peers. │ before │ after │ │ B/op │ B/op vs base │ MapSessionDelta/size_10-8 10.213Ki ± ∞ ¹ 9.650Ki ± ∞ ¹ -5.51% (p=0.008 n=5) MapSessionDelta/size_100-8 83.64Ki ± ∞ ¹ 83.08Ki ± ∞ ¹ -0.67% (p=0.008 n=5) MapSessionDelta/size_1000-8 800.8Ki ± ∞ ¹ 800.3Ki ± ∞ ¹ -0.07% (p=0.008 n=5) MapSessionDelta/size_10000-8 7.712Mi ± ∞ ¹ 7.711Mi ± ∞ ¹ -0.01% (p=0.008 n=5) geomean 271.1Ki 266.8Ki -1.59% │ before │ after │ │ allocs/op │ allocs/op vs base │ MapSessionDelta/size_10-8 73.00 ± ∞ ¹ 72.00 ± ∞ ¹ -1.37% (p=0.008 n=5) MapSessionDelta/size_100-8 524.0 ± ∞ ¹ 523.0 ± ∞ ¹ -0.19% (p=0.008 n=5) MapSessionDelta/size_1000-8 5.025k ± ∞ ¹ 5.024k ± ∞ ¹ -0.02% (p=0.008 n=5) MapSessionDelta/size_10000-8 50.02k ± ∞ ¹ 50.02k ± ∞ ¹ -0.00% (p=0.040 n=5) geomean 1.761k 1.754k -0.40% Updates #1909 Change-Id: Ie19dea3371de251d64d4373dd00422f53c2675ea Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
a461d230db
commit
cb4a61f951
@ -62,7 +62,7 @@ type mapSession struct {
|
|||||||
onSelfNodeChanged func(*netmap.NetworkMap)
|
onSelfNodeChanged func(*netmap.NetworkMap)
|
||||||
|
|
||||||
// Fields storing state over the course of multiple MapResponses.
|
// Fields storing state over the course of multiple MapResponses.
|
||||||
lastNode *tailcfg.Node
|
lastNode tailcfg.NodeView
|
||||||
lastDNSConfig *tailcfg.DNSConfig
|
lastDNSConfig *tailcfg.DNSConfig
|
||||||
lastDERPMap *tailcfg.DERPMap
|
lastDERPMap *tailcfg.DERPMap
|
||||||
lastUserProfile map[tailcfg.UserID]tailcfg.UserProfile
|
lastUserProfile map[tailcfg.UserID]tailcfg.UserProfile
|
||||||
@ -182,7 +182,7 @@ func (ms *mapSession) HandleNonKeepAliveMapResponse(ctx context.Context, resp *t
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Call Node.InitDisplayNames on any changed nodes.
|
// Call Node.InitDisplayNames on any changed nodes.
|
||||||
initDisplayNames(cmpx.Or(resp.Node, ms.lastNode).View(), resp)
|
initDisplayNames(cmpx.Or(resp.Node.View(), ms.lastNode), resp)
|
||||||
|
|
||||||
nm := ms.netmapForResponse(resp)
|
nm := ms.netmapForResponse(resp)
|
||||||
|
|
||||||
@ -312,17 +312,17 @@ func (ms *mapSession) netmapForResponse(resp *tailcfg.MapResponse) *netmap.Netwo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if resp.Node != nil {
|
if resp.Node != nil {
|
||||||
ms.lastNode = resp.Node
|
ms.lastNode = resp.Node.View()
|
||||||
}
|
}
|
||||||
if node := ms.lastNode.Clone(); node != nil {
|
if node := ms.lastNode; node.Valid() {
|
||||||
nm.SelfNode = node.View()
|
nm.SelfNode = node
|
||||||
nm.Expiry = node.KeyExpiry
|
nm.Expiry = node.KeyExpiry()
|
||||||
nm.Name = node.Name
|
nm.Name = node.Name()
|
||||||
nm.Addresses = filterSelfAddresses(node.Addresses)
|
nm.Addresses = filterSelfAddresses(node.Addresses().AsSlice())
|
||||||
if node.Hostinfo.Valid() {
|
if node.Hostinfo().Valid() {
|
||||||
nm.Hostinfo = *node.Hostinfo.AsStruct()
|
nm.Hostinfo = *node.Hostinfo().AsStruct()
|
||||||
}
|
}
|
||||||
if node.MachineAuthorized {
|
if node.MachineAuthorized() {
|
||||||
nm.MachineStatus = tailcfg.MachineAuthorized
|
nm.MachineStatus = tailcfg.MachineAuthorized
|
||||||
} else {
|
} else {
|
||||||
nm.MachineStatus = tailcfg.MachineUnauthorized
|
nm.MachineStatus = tailcfg.MachineUnauthorized
|
||||||
|
Loading…
Reference in New Issue
Block a user