Add benchmark for warnIfTargetsRelabelledToSameLabels

Signed-off-by: darshanime <deathbullet@gmail.com>
This commit is contained in:
darshanime 2024-05-04 14:15:34 +05:30
parent d0849f45ff
commit 0e098c68f7
2 changed files with 29 additions and 2 deletions

View file

@ -169,6 +169,7 @@ func (m *Manager) reloader() {
func (m *Manager) reload() {
m.mtxScrape.Lock()
var wg sync.WaitGroup
for setName, groups := range m.targetSets {
if _, ok := m.scrapePools[setName]; !ok {
scrapeConfig, ok := m.scrapeConfigs[setName]
@ -214,9 +215,10 @@ func (m *Manager) warnIfTargetsRelabelledToSameLabels() {
activeTargets := make(map[uint64]*Target)
for _, scrapePool := range m.scrapePools {
for _, target := range scrapePool.activeTargets {
t, ok := activeTargets[target.labels.Hash()]
lHash := target.labels.Hash()
t, ok := activeTargets[lHash]
if !ok {
activeTargets[target.labels.Hash()] = target
activeTargets[lHash] = target
continue
}
level.Warn(m.logger).Log(

View file

@ -622,6 +622,31 @@ func TestManagerTargetsUpdates(t *testing.T) {
}
}
func BenchmarkManagerReload(b *testing.B) {
opts := Options{}
testRegistry := prometheus.NewRegistry()
m, err := NewManager(&opts, nil, nil, testRegistry)
require.NoError(b, err)
m.scrapePools = map[string]*scrapePool{}
sp := &scrapePool{
activeTargets: map[uint64]*Target{},
}
for i := 0; i < b.N; i++ {
sp.activeTargets[uint64(i)] = &Target{
discoveredLabels: labels.FromStrings("__address__", fmt.Sprintf("foo-%d", i)),
labels: labels.FromStrings("label_key", fmt.Sprintf("foo-%d", i)),
}
}
m.scrapePools["default"] = sp
b.ResetTimer()
for i := 0; i < b.N; i++ {
m.reload()
}
}
func TestManagerDuplicateAfterRelabellingWarning(t *testing.T) {
var output []interface{}
logger := log.Logger(log.LoggerFunc(func(keyvals ...interface{}) error {