satellite/durability: remove unclassified measurements + reduce memory
Small adjustments in durability observer: * use local map for class names instead of struct level var (not used anywhere else, earlier GC) * continue / skip when the class is "unclassified" / 0. * `classes["unclassified"] = 0`: doesn't really matter, but this is more true Change-Id: Ib927bab52d5502ad67ecc8570fda218fbfb6a95b
This commit is contained in:
parent
c87f380e2e
commit
9414e3270d
@ -86,7 +86,6 @@ type Report struct {
|
|||||||
asOfSystemInterval time.Duration
|
asOfSystemInterval time.Duration
|
||||||
|
|
||||||
// map between classes (like "country:hu" and integer IDs)
|
// map between classes (like "country:hu" and integer IDs)
|
||||||
classID map[string]classID
|
|
||||||
className map[classID]string
|
className map[classID]string
|
||||||
|
|
||||||
// contains the available classes for each node alias.
|
// contains the available classes for each node alias.
|
||||||
@ -139,10 +138,10 @@ func (c *Report) resetStat() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Report) classifyNodeAliases() {
|
func (c *Report) classifyNodeAliases() {
|
||||||
c.classID = make(map[string]classID)
|
classes := make(map[string]classID)
|
||||||
c.className = make(map[classID]string)
|
c.className = make(map[classID]string)
|
||||||
|
|
||||||
c.classID["unclassified"] = 1
|
classes["unclassified"] = 0
|
||||||
c.className[0] = "unclassified"
|
c.className[0] = "unclassified"
|
||||||
|
|
||||||
c.classified = make([]classID, c.aliasMap.Max()+1)
|
c.classified = make([]classID, c.aliasMap.Max()+1)
|
||||||
@ -153,11 +152,11 @@ func (c *Report) classifyNodeAliases() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class := c.classifier(node)
|
class := c.classifier(node)
|
||||||
id, ok := c.classID[class]
|
id, ok := classes[class]
|
||||||
if !ok {
|
if !ok {
|
||||||
id = classID(len(c.classID))
|
id = classID(len(classes))
|
||||||
c.className[id] = class
|
c.className[id] = class
|
||||||
c.classID[class] = id
|
classes[class] = id
|
||||||
}
|
}
|
||||||
c.classified[alias] = id
|
c.classified[alias] = id
|
||||||
}
|
}
|
||||||
@ -170,8 +169,8 @@ func (c *Report) Fork(ctx context.Context) (rangedloop.Partial, error) {
|
|||||||
nodes: c.nodes,
|
nodes: c.nodes,
|
||||||
classifierCache: make([][]string, c.aliasMap.Max()+1),
|
classifierCache: make([][]string, c.aliasMap.Max()+1),
|
||||||
reportThreshold: c.reportThreshold,
|
reportThreshold: c.reportThreshold,
|
||||||
healthStat: make([]HealthStat, len(c.classID)),
|
healthStat: make([]HealthStat, len(c.className)),
|
||||||
controlledByClassCache: make([]int32, len(c.classID)),
|
controlledByClassCache: make([]int32, len(c.className)),
|
||||||
busFactorCache: make([]int32, 0, c.maxPieceCount),
|
busFactorCache: make([]int32, 0, c.maxPieceCount),
|
||||||
classified: c.classified,
|
classified: c.classified,
|
||||||
}
|
}
|
||||||
@ -262,10 +261,11 @@ func (c *ObserverFork) Process(ctx context.Context, segments []rangedloop.Segmen
|
|||||||
class := c.classified[piece.Alias]
|
class := c.classified[piece.Alias]
|
||||||
|
|
||||||
// unavailable/offline nodes were not classified
|
// unavailable/offline nodes were not classified
|
||||||
if class > 0 {
|
if class == 0 {
|
||||||
healthyPieceCount++
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
healthyPieceCount++
|
||||||
controlledByClass[class]++
|
controlledByClass[class]++
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user