From 5f0be2eaa94ca703ab0d64935f357ab11a0dec35 Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Tue, 6 Sep 2016 09:46:06 +0200 Subject: [PATCH] blockstore: add Bloom fill ratio metric License: MIT Signed-off-by: Jakub Sztandera --- blocks/blockstore/bloom_cache.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/blocks/blockstore/bloom_cache.go b/blocks/blockstore/bloom_cache.go index 0eafb7203..03fa58348 100644 --- a/blocks/blockstore/bloom_cache.go +++ b/blocks/blockstore/bloom_cache.go @@ -2,6 +2,7 @@ package blockstore import ( "sync/atomic" + "time" "github.com/ipfs/go-ipfs/blocks" key "gx/ipfs/Qmce4Y4zg3sYr7xKM5UueS67vhNni6EeWgCRnb7MbLJMew/go-key" @@ -23,9 +24,25 @@ func bloomCached(bs Blockstore, ctx context.Context, bloomSize, hashCount int) ( "Number of cache hits in bloom cache").Counter() bc.total = metrics.NewCtx(ctx, "bloom_total", "Total number of requests to bloom cache").Counter() + + fill := metrics.NewCtx(ctx, "bloom_fill_ratio", + "Ratio of bloom filter fullnes, (updated once a minute)").Gauge() + bc.Invalidate() go bc.Rebuild(ctx) - + go func() { + <-bc.rebuildChan + t := time.NewTicker(1 * time.Minute) + for { + select { + case <-ctx.Done(): + t.Stop() + return + case <-t.C: + fill.Set(bc.bloom.FillRatio()) + } + } + }() return bc, nil }