3795cc2bd2
This paves the way for better object lifetime management. Concretely, it makes it possible to: - have different stores backing chain and state data. - having the same datastore library, but using different parameters. - attach different caching layers/policies to each class of data, e.g. sizing caches differently. - specifying different retention policies for chain and state data. This separation is important because: - access patterns/frequency of chain and state data are different. - state is derivable from chain, so one could never expunge the chain store, and only retain state objects reachable from the last finality in the state store.
155 lines
5.3 KiB
Go
155 lines
5.3 KiB
Go
package blockstore
|
|
|
|
import (
|
|
"time"
|
|
|
|
"go.opencensus.io/stats"
|
|
"go.opencensus.io/stats/view"
|
|
"go.opencensus.io/tag"
|
|
)
|
|
|
|
//
|
|
// Currently unused, but kept in repo in case we introduce one of the candidate
|
|
// cache implementations (Freecache, Ristretto), both of which report these
|
|
// metrics.
|
|
//
|
|
|
|
// CacheMetricsEmitInterval is the interval at which metrics are emitted onto
|
|
// OpenCensus.
|
|
var CacheMetricsEmitInterval = 5 * time.Second
|
|
|
|
var (
|
|
CacheName, _ = tag.NewKey("cache_name")
|
|
)
|
|
|
|
// CacheMeasures groups all metrics emitted by the blockstore caches.
|
|
var CacheMeasures = struct {
|
|
HitRatio *stats.Float64Measure
|
|
Hits *stats.Int64Measure
|
|
Misses *stats.Int64Measure
|
|
Entries *stats.Int64Measure
|
|
QueriesServed *stats.Int64Measure
|
|
Adds *stats.Int64Measure
|
|
Updates *stats.Int64Measure
|
|
Evictions *stats.Int64Measure
|
|
CostAdded *stats.Int64Measure
|
|
CostEvicted *stats.Int64Measure
|
|
SetsDropped *stats.Int64Measure
|
|
SetsRejected *stats.Int64Measure
|
|
QueriesDropped *stats.Int64Measure
|
|
}{
|
|
HitRatio: stats.Float64("blockstore/cache/hit_ratio", "Hit ratio of blockstore cache", stats.UnitDimensionless),
|
|
Hits: stats.Int64("blockstore/cache/hits", "Total number of hits at blockstore cache", stats.UnitDimensionless),
|
|
Misses: stats.Int64("blockstore/cache/misses", "Total number of misses at blockstore cache", stats.UnitDimensionless),
|
|
Entries: stats.Int64("blockstore/cache/entry_count", "Total number of entries currently in the blockstore cache", stats.UnitDimensionless),
|
|
QueriesServed: stats.Int64("blockstore/cache/queries_served", "Total number of queries served by the blockstore cache", stats.UnitDimensionless),
|
|
Adds: stats.Int64("blockstore/cache/adds", "Total number of adds to blockstore cache", stats.UnitDimensionless),
|
|
Updates: stats.Int64("blockstore/cache/updates", "Total number of updates in blockstore cache", stats.UnitDimensionless),
|
|
Evictions: stats.Int64("blockstore/cache/evictions", "Total number of evictions from blockstore cache", stats.UnitDimensionless),
|
|
CostAdded: stats.Int64("blockstore/cache/cost_added", "Total cost (byte size) of entries added into blockstore cache", stats.UnitBytes),
|
|
CostEvicted: stats.Int64("blockstore/cache/cost_evicted", "Total cost (byte size) of entries evicted by blockstore cache", stats.UnitBytes),
|
|
SetsDropped: stats.Int64("blockstore/cache/sets_dropped", "Total number of sets dropped by blockstore cache", stats.UnitDimensionless),
|
|
SetsRejected: stats.Int64("blockstore/cache/sets_rejected", "Total number of sets rejected by blockstore cache", stats.UnitDimensionless),
|
|
QueriesDropped: stats.Int64("blockstore/cache/queries_dropped", "Total number of queries dropped by blockstore cache", stats.UnitDimensionless),
|
|
}
|
|
|
|
// CacheViews groups all cache-related default views.
|
|
var CacheViews = struct {
|
|
HitRatio *view.View
|
|
Hits *view.View
|
|
Misses *view.View
|
|
Entries *view.View
|
|
QueriesServed *view.View
|
|
Adds *view.View
|
|
Updates *view.View
|
|
Evictions *view.View
|
|
CostAdded *view.View
|
|
CostEvicted *view.View
|
|
SetsDropped *view.View
|
|
SetsRejected *view.View
|
|
QueriesDropped *view.View
|
|
}{
|
|
HitRatio: &view.View{
|
|
Measure: CacheMeasures.HitRatio,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Hits: &view.View{
|
|
Measure: CacheMeasures.Hits,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Misses: &view.View{
|
|
Measure: CacheMeasures.Misses,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Entries: &view.View{
|
|
Measure: CacheMeasures.Entries,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
QueriesServed: &view.View{
|
|
Measure: CacheMeasures.QueriesServed,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Adds: &view.View{
|
|
Measure: CacheMeasures.Adds,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Updates: &view.View{
|
|
Measure: CacheMeasures.Updates,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
Evictions: &view.View{
|
|
Measure: CacheMeasures.Evictions,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
CostAdded: &view.View{
|
|
Measure: CacheMeasures.CostAdded,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
CostEvicted: &view.View{
|
|
Measure: CacheMeasures.CostEvicted,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
SetsDropped: &view.View{
|
|
Measure: CacheMeasures.SetsDropped,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
SetsRejected: &view.View{
|
|
Measure: CacheMeasures.SetsRejected,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
QueriesDropped: &view.View{
|
|
Measure: CacheMeasures.QueriesDropped,
|
|
Aggregation: view.LastValue(),
|
|
TagKeys: []tag.Key{CacheName},
|
|
},
|
|
}
|
|
|
|
// DefaultViews exports all default views for this package.
|
|
var DefaultViews = []*view.View{
|
|
CacheViews.HitRatio,
|
|
CacheViews.Hits,
|
|
CacheViews.Misses,
|
|
CacheViews.Entries,
|
|
CacheViews.QueriesServed,
|
|
CacheViews.Adds,
|
|
CacheViews.Updates,
|
|
CacheViews.Evictions,
|
|
CacheViews.CostAdded,
|
|
CacheViews.CostEvicted,
|
|
CacheViews.SetsDropped,
|
|
CacheViews.SetsRejected,
|
|
CacheViews.QueriesDropped,
|
|
}
|