forked from TrueCloudLab/frostfs-sdk-go
Marina Biryukova
e83d6b7c6a
After each request for tree pool statistic accumulated values are reset to zero. Signed-off-by: Marina Biryukova <m.biryukova@yadro.com>
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package tree
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/pool"
|
|
)
|
|
|
|
// Statistic is metrics of the tree pool.
|
|
type Statistic struct {
|
|
methods []pool.StatusSnapshot
|
|
}
|
|
|
|
func (s *Statistic) Requests() (requests uint64) {
|
|
for _, val := range s.methods {
|
|
requests += val.AllRequests()
|
|
}
|
|
return requests
|
|
}
|
|
|
|
func (s *Statistic) AverageGetNodes() time.Duration {
|
|
return s.averageTime(methodGetNodes)
|
|
}
|
|
|
|
func (s *Statistic) AverageGetSubTree() time.Duration {
|
|
return s.averageTime(methodGetSubTree)
|
|
}
|
|
|
|
func (s *Statistic) AverageAddNode() time.Duration {
|
|
return s.averageTime(methodAddNode)
|
|
}
|
|
|
|
func (s *Statistic) AverageAddNodeByPath() time.Duration {
|
|
return s.averageTime(methodAddNodeByPath)
|
|
}
|
|
|
|
func (s *Statistic) AverageMoveNode() time.Duration {
|
|
return s.averageTime(methodMoveNode)
|
|
}
|
|
|
|
func (s *Statistic) AverageRemoveNode() time.Duration {
|
|
return s.averageTime(methodRemoveNode)
|
|
}
|
|
|
|
func (s *Statistic) averageTime(method MethodIndex) time.Duration {
|
|
stat := s.methods[method]
|
|
if stat.AllRequests() == 0 {
|
|
return 0
|
|
}
|
|
return time.Duration(stat.AllTime() / stat.AllRequests())
|
|
}
|