Merge pull request #5769 from jonseymour/jss-5499-extend-tsm-cache-stats
tsm: cache: ensure all statistics are initialised on cache creation.pull/5778/merge
commit
feceb4dae1
|
@ -103,13 +103,19 @@ type Cache struct {
|
|||
|
||||
// NewCache returns an instance of a cache which will use a maximum of maxSize bytes of memory.
|
||||
func NewCache(maxSize uint64, path string) *Cache {
|
||||
return &Cache{
|
||||
c := &Cache{
|
||||
maxSize: maxSize,
|
||||
store: make(map[string]*entry),
|
||||
statMap: influxdb.NewStatistics("tsm1_cache:"+path, "tsm1_cache", map[string]string{"path": path}),
|
||||
path: path,
|
||||
lastSnapshot: time.Now(),
|
||||
}
|
||||
c.UpdateAge()
|
||||
c.UpdateCompactTime(0)
|
||||
c.updateCachedBytes(0)
|
||||
c.updateMemSize(0)
|
||||
c.updateSnapshots()
|
||||
return c
|
||||
}
|
||||
|
||||
// Write writes the set of values for the key to the cache. This function is goroutine-safe.
|
||||
|
@ -128,9 +134,7 @@ func (c *Cache) Write(key string, values []Value) error {
|
|||
c.size = newSize
|
||||
|
||||
// Update the memory size stat
|
||||
sizeStat := new(expvar.Int)
|
||||
sizeStat.Set(int64(c.size))
|
||||
c.statMap.Set(statCacheMemoryBytes, sizeStat)
|
||||
c.updateMemSize(newSize)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -160,9 +164,7 @@ func (c *Cache) WriteMulti(values map[string][]Value) error {
|
|||
c.mu.Unlock()
|
||||
|
||||
// Update the memory size stat
|
||||
sizeStat := new(expvar.Int)
|
||||
sizeStat.Set(int64(newSize))
|
||||
c.statMap.Set(statCacheMemoryBytes, sizeStat)
|
||||
c.updateMemSize(newSize)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -184,17 +186,9 @@ func (c *Cache) Snapshot() *Cache {
|
|||
c.snapshots = append(c.snapshots, snapshot)
|
||||
c.snapshotsSize += snapshot.size
|
||||
|
||||
// Update stats
|
||||
memSizeStat := new(expvar.Int)
|
||||
memSizeStat.Set(0)
|
||||
c.statMap.Set(statCacheMemoryBytes, memSizeStat)
|
||||
|
||||
diskSizeStat := new(expvar.Int)
|
||||
diskSizeStat.Set(int64(c.snapshotsSize))
|
||||
c.statMap.Set(statCacheDiskBytes, diskSizeStat)
|
||||
|
||||
c.statMap.Add(statCachedBytes, int64(snapshot.size))
|
||||
c.statMap.Add(statSnapshots, 1)
|
||||
c.updateMemSize(0)
|
||||
c.updateCachedBytes(snapshot.size)
|
||||
c.updateSnapshots()
|
||||
|
||||
return snapshot
|
||||
}
|
||||
|
@ -221,12 +215,7 @@ func (c *Cache) ClearSnapshot(snapshot *Cache) {
|
|||
}
|
||||
}
|
||||
|
||||
// Update disk stats
|
||||
diskSizeStat := new(expvar.Int)
|
||||
diskSizeStat.Set(int64(c.snapshotsSize))
|
||||
c.statMap.Set(statCacheDiskBytes, diskSizeStat)
|
||||
|
||||
c.statMap.Add(statSnapshots, -1)
|
||||
c.updateSnapshots()
|
||||
}
|
||||
|
||||
// Size returns the number of point-calcuated bytes the cache currently uses.
|
||||
|
@ -457,3 +446,27 @@ func (c *Cache) UpdateAge() {
|
|||
func (c *Cache) UpdateCompactTime(d time.Duration) {
|
||||
c.statMap.Add(statWALCompactionTimeMs, int64(d/time.Millisecond))
|
||||
}
|
||||
|
||||
// Update the cachedBytes counter
|
||||
func (c *Cache) updateCachedBytes(b uint64) {
|
||||
c.statMap.Add(statCachedBytes, int64(b))
|
||||
}
|
||||
|
||||
// Update the memSize level
|
||||
func (c *Cache) updateMemSize(b uint64) {
|
||||
memSizeStat := new(expvar.Int)
|
||||
memSizeStat.Set(int64(b))
|
||||
c.statMap.Set(statCacheMemoryBytes, memSizeStat)
|
||||
}
|
||||
|
||||
// Update the snapshotsCount and the diskSize levels
|
||||
func (c *Cache) updateSnapshots() {
|
||||
// Update disk stats
|
||||
diskSizeStat := new(expvar.Int)
|
||||
diskSizeStat.Set(int64(c.snapshotsSize))
|
||||
c.statMap.Set(statCacheDiskBytes, diskSizeStat)
|
||||
|
||||
snapshotsStat := new(expvar.Int)
|
||||
snapshotsStat.Set(int64(len(c.snapshots)))
|
||||
c.statMap.Set(statSnapshots, snapshotsStat)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue