You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2024/07/31 10:22:28 UTC
(skywalking-banyandb) branch main updated: Measure index (#502)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git
The following commit(s) were added to refs/heads/main by this push:
new 3a43587a Measure index (#502)
3a43587a is described below
commit 3a43587a0b53c8a17e838a1110e65cff92141db6
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Wed Jul 31 18:22:23 2024 +0800
Measure index (#502)
---
CHANGES.md | 1 +
banyand/internal/storage/index.go | 110 +++++---
banyand/internal/storage/index_test.go | 2 +-
banyand/internal/storage/storage.go | 16 +-
banyand/measure/block.go | 24 +-
banyand/measure/measure.go | 25 +-
banyand/measure/query.go | 168 ++++++-----
banyand/measure/write.go | 7 +-
banyand/stream/index.go | 2 +-
banyand/stream/query.go | 10 +-
banyand/stream/stream.go | 2 +-
pkg/index/index.go | 34 ++-
pkg/index/inverted/inverted.go | 71 ++---
pkg/index/inverted/inverted_series.go | 41 ++-
pkg/index/inverted/inverted_series_test.go | 251 +++++++++++++----
pkg/index/inverted/inverted_test.go | 9 +-
pkg/index/inverted/sort.go | 44 ++-
pkg/index/inverted/sort_test.go | 4 +-
pkg/partition/index.go | 29 +-
pkg/pb/v1/value.go | 19 ++
test/cases/measure/data/input/entity.yaml | 2 +-
test/cases/measure/data/input/entity_in.yaml | 2 +-
test/cases/measure/data/input/entity_service.yaml | 2 +-
test/cases/measure/data/input/no_field.yaml | 2 +-
test/cases/measure/data/want/entity.yaml | 26 +-
test/cases/measure/data/want/entity_in.yaml | 17 +-
test/cases/measure/data/want/entity_service.yaml | 26 +-
test/cases/measure/data/want/no_field.yaml | 18 +-
test/stress/istio/report.md | 139 +++++-----
test/stress/istio/testdata/metrics/data.csv | 307 ++++++++++-----------
.../stress/istio/testdata/metrics/intermediate.csv | 18 +-
test/stress/istio/testdata/metrics/result.csv | 28 +-
32 files changed, 866 insertions(+), 590 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 8aa375d3..62f8929d 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -9,6 +9,7 @@ Release Notes.
- Bump up the version of the file system to 1.1.0 which is not compatible with the previous version.
- Move the series index into segment.
- Swap the segment and the shard.
+- Move indexed values in a measure from data files to index files.
### Features
diff --git a/banyand/internal/storage/index.go b/banyand/internal/storage/index.go
index 5abb9e91..b8cd31cb 100644
--- a/banyand/internal/storage/index.go
+++ b/banyand/internal/storage/index.go
@@ -20,6 +20,7 @@ package storage
import (
"context"
"path"
+ "strings"
"github.com/pkg/errors"
"go.uber.org/multierr"
@@ -33,7 +34,6 @@ import (
pbv1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
"github.com/apache/skywalking-banyandb/pkg/query"
"github.com/apache/skywalking-banyandb/pkg/query/logical"
- "github.com/apache/skywalking-banyandb/pkg/query/model"
)
func (s *segment[T, O]) IndexDB() IndexDB {
@@ -41,7 +41,8 @@ func (s *segment[T, O]) IndexDB() IndexDB {
}
func (s *segment[T, O]) Lookup(ctx context.Context, series []*pbv1.Series) (pbv1.SeriesList, error) {
- return s.index.searchPrimary(ctx, series)
+ sl, _, err := s.index.searchPrimary(ctx, series, nil)
+ return sl, err
}
type seriesIndex struct {
@@ -72,38 +73,38 @@ func (s *seriesIndex) Write(docs index.Documents) error {
var rangeOpts = index.RangeOpts{}
-func (s *seriesIndex) searchPrimary(ctx context.Context, series []*pbv1.Series) (sl pbv1.SeriesList, err error) {
+func (s *seriesIndex) searchPrimary(ctx context.Context, series []*pbv1.Series, projection []index.FieldKey) (sl pbv1.SeriesList, fields FieldResultList, err error) {
seriesMatchers := make([]index.SeriesMatcher, len(series))
for i := range series {
seriesMatchers[i], err = convertEntityValuesToSeriesMatcher(series[i])
if err != nil {
- return nil, err
+ return nil, nil, err
}
}
tracer := query.GetTracer(ctx)
- var span *query.Span
if tracer != nil {
- span, _ = tracer.StartSpan(ctx, "seriesIndex.searchPrimary")
+ span, _ := tracer.StartSpan(ctx, "seriesIndex.searchPrimary")
span.Tagf("matchers", "%v", seriesMatchers)
defer func() {
+ span.Tagf("matched", "%d", len(sl))
+ if len(fields) > 0 {
+ span.Tagf("field_length", "%d", len(fields[0]))
+ }
if err != nil {
span.Error(err)
}
span.Stop()
}()
}
- ss, err := s.store.Search(ctx, seriesMatchers)
+ ss, err := s.store.Search(ctx, seriesMatchers, projection)
if err != nil {
- return nil, err
+ return nil, nil, err
}
- result, err := convertIndexSeriesToSeriesList(ss)
+ sl, fields, err = convertIndexSeriesToSeriesList(ss, len(projection) > 0)
if err != nil {
- return nil, errors.WithMessagef(err, "failed to convert index series to series list, matchers: %v, matched: %d", seriesMatchers, len(ss))
+ return nil, nil, errors.WithMessagef(err, "failed to convert index series to series list, matchers: %v, matched: %d", seriesMatchers, len(ss))
}
- if span != nil {
- span.Tagf("matched", "%d", len(result))
- }
- return result, nil
+ return sl, fields, nil
}
var emptySeriesMatcher = index.SeriesMatcher{}
@@ -161,20 +162,27 @@ func convertEntityValuesToSeriesMatcher(series *pbv1.Series) (index.SeriesMatche
}, nil
}
-func convertIndexSeriesToSeriesList(indexSeries []index.Series) (pbv1.SeriesList, error) {
+func convertIndexSeriesToSeriesList(indexSeries []index.SeriesDocument, hasFields bool) (pbv1.SeriesList, FieldResultList, error) {
seriesList := make(pbv1.SeriesList, 0, len(indexSeries))
+ var fields FieldResultList
+ if hasFields {
+ fields = make(FieldResultList, 0, len(indexSeries))
+ }
for _, s := range indexSeries {
var series pbv1.Series
- series.ID = s.ID
- if err := series.Unmarshal(s.EntityValues); err != nil {
- return nil, errors.WithMessagef(err, "failed to unmarshal series: %s", s.EntityValues)
+ series.ID = s.Key.ID
+ if err := series.Unmarshal(s.Key.EntityValues); err != nil {
+ return nil, nil, errors.WithMessagef(err, "failed to unmarshal series: %s", s.Key.EntityValues)
}
seriesList = append(seriesList, &series)
+ if fields != nil {
+ fields = append(fields, s.Fields)
+ }
}
- return seriesList, nil
+ return seriesList, fields, nil
}
-func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter index.Filter, order *model.OrderBy, preloadSize int) (sl pbv1.SeriesList, err error) {
+func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, opts IndexSearchOpts) (sl pbv1.SeriesList, frl FieldResultList, err error) {
tracer := query.GetTracer(ctx)
if tracer != nil {
var span *query.Span
@@ -186,18 +194,30 @@ func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter
span.Stop()
}()
}
- seriesList, err := s.searchPrimary(ctx, series)
+ seriesList, fieldResultList, err := s.searchPrimary(ctx, series, opts.Projection)
if err != nil {
- return nil, err
+ return nil, nil, err
}
pl := seriesList.ToList()
- if filter != nil && filter != logical.ENode {
+ if opts.Filter != nil && opts.Filter != logical.ENode {
var plFilter posting.List
func() {
if tracer != nil {
span, _ := tracer.StartSpan(ctx, "filter")
- span.Tag("exp", filter.String())
+ span.Tag("exp", opts.Filter.String())
+ var projectionStrBuilder strings.Builder
+ if len(opts.Projection) > 0 {
+ projectionStrBuilder.WriteString("[")
+ for i, p := range opts.Projection {
+ if i > 0 {
+ projectionStrBuilder.WriteString(", ")
+ }
+ projectionStrBuilder.WriteRune(rune(p.IndexRuleID))
+ }
+ projectionStrBuilder.WriteString("]")
+ span.Tagf("projection", "%s", projectionStrBuilder.String())
+ }
defer func() {
if err != nil {
span.Error(err)
@@ -208,7 +228,7 @@ func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter
span.Stop()
}()
}
- if plFilter, err = filter.Execute(func(_ databasev1.IndexRule_Type) (index.Searcher, error) {
+ if plFilter, err = opts.Filter.Execute(func(_ databasev1.IndexRule_Type) (index.Searcher, error) {
return s.store, nil
}, 0); err != nil {
return
@@ -219,21 +239,22 @@ func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter
err = pl.Intersect(plFilter)
}()
if err != nil {
- return nil, err
+ return nil, nil, err
}
}
- if order == nil || order.Index == nil {
- return filterSeriesList(seriesList, pl), nil
+ if opts.Order == nil || opts.Order.Index == nil {
+ sl, frl = filterSeriesList(seriesList, fieldResultList, pl)
+ return sl, frl, nil
}
fieldKey := index.FieldKey{
- IndexRuleID: order.Index.GetMetadata().Id,
+ IndexRuleID: opts.Order.Index.GetMetadata().Id,
}
var span *query.Span
if tracer != nil {
span, _ = tracer.StartSpan(ctx, "sort")
- span.Tagf("preload", "%d", preloadSize)
+ span.Tagf("preload", "%d", opts.PreloadSize)
defer func() {
if err != nil {
span.Error(err)
@@ -241,15 +262,17 @@ func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter
span.Stop()
}()
}
- iter, err := s.store.Iterator(fieldKey, rangeOpts, order.Sort, preloadSize)
+ iter, err := s.store.Iterator(fieldKey, rangeOpts,
+ opts.Order.Sort, opts.PreloadSize)
if err != nil {
- return nil, err
+ return nil, nil, err
}
defer func() {
err = multierr.Append(err, iter.Close())
}()
var sortedSeriesList pbv1.SeriesList
+ var sortedFieldResultList FieldResultList
var r int
for iter.Next() {
r++
@@ -257,36 +280,45 @@ func (s *seriesIndex) Search(ctx context.Context, series []*pbv1.Series, filter
if !pl.Contains(docID) {
continue
}
- sortedSeriesList = appendSeriesList(sortedSeriesList, seriesList, common.SeriesID(docID))
+ sortedSeriesList, sortedFieldResultList = appendSeriesList(
+ sortedSeriesList, seriesList,
+ sortedFieldResultList, fieldResultList,
+ common.SeriesID(docID))
if err != nil {
- return nil, err
+ return nil, nil, err
}
}
if span != nil {
span.Tagf("rounds", "%d", r)
span.Tagf("size", "%d", len(sortedSeriesList))
}
- return sortedSeriesList, err
+ return sortedSeriesList, sortedFieldResultList, err
}
-func filterSeriesList(seriesList pbv1.SeriesList, filter posting.List) pbv1.SeriesList {
+func filterSeriesList(seriesList pbv1.SeriesList, fieldResultList FieldResultList, filter posting.List) (pbv1.SeriesList, FieldResultList) {
for i := 0; i < len(seriesList); i++ {
if !filter.Contains(uint64(seriesList[i].ID)) {
seriesList = append(seriesList[:i], seriesList[i+1:]...)
+ if fieldResultList != nil {
+ fieldResultList = append(fieldResultList[:i], fieldResultList[i+1:]...)
+ }
i--
}
}
- return seriesList
+ return seriesList, fieldResultList
}
-func appendSeriesList(dest, src pbv1.SeriesList, target common.SeriesID) pbv1.SeriesList {
+func appendSeriesList(dest, src pbv1.SeriesList, destFRL, srcFRL FieldResultList, target common.SeriesID) (pbv1.SeriesList, FieldResultList) {
for i := 0; i < len(src); i++ {
if target == src[i].ID {
dest = append(dest, src[i])
+ if srcFRL != nil {
+ destFRL = append(destFRL, srcFRL[i])
+ }
break
}
}
- return dest
+ return dest, destFRL
}
func (s *seriesIndex) Close() error {
diff --git a/banyand/internal/storage/index_test.go b/banyand/internal/storage/index_test.go
index e28a6f54..0e61b623 100644
--- a/banyand/internal/storage/index_test.go
+++ b/banyand/internal/storage/index_test.go
@@ -161,7 +161,7 @@ func TestSeriesIndex_Primary(t *testing.T) {
seriesQuery.EntityValues = tt.entityValues[i]
seriesQueries = append(seriesQueries, seriesQuery)
}
- sl, err := si.searchPrimary(ctx, seriesQueries)
+ sl, _, err := si.searchPrimary(ctx, seriesQueries, nil)
require.NoError(t, err)
require.Equal(t, len(tt.entityValues), len(sl))
assert.Equal(t, tt.subject, sl[0].Subject)
diff --git a/banyand/internal/storage/storage.go b/banyand/internal/storage/storage.go
index b05fb785..1ccf03d7 100644
--- a/banyand/internal/storage/storage.go
+++ b/banyand/internal/storage/storage.go
@@ -64,10 +64,24 @@ var (
// SupplyTSDB allows getting a tsdb's runtime.
type SupplyTSDB[T TSTable] func() T
+// IndexSearchOpts is the options for searching index.
+type IndexSearchOpts struct {
+ Filter index.Filter
+ Order *model.OrderBy
+ Projection []index.FieldKey
+ PreloadSize int
+}
+
+// FieldResult is the result of a field.
+type FieldResult map[string][]byte
+
+// FieldResultList is a list of FieldResult.
+type FieldResultList []FieldResult
+
// IndexDB is the interface of index database.
type IndexDB interface {
Write(docs index.Documents) error
- Search(ctx context.Context, series []*pbv1.Series, filter index.Filter, order *model.OrderBy, preloadSize int) (pbv1.SeriesList, error)
+ Search(ctx context.Context, series []*pbv1.Series, opts IndexSearchOpts) (pbv1.SeriesList, FieldResultList, error)
}
// TSDB allows listing and getting shard details.
diff --git a/banyand/measure/block.go b/banyand/measure/block.go
index a758fe3c..93376790 100644
--- a/banyand/measure/block.go
+++ b/banyand/measure/block.go
@@ -462,7 +462,7 @@ func (bc *blockCursor) init(p *part, bm *blockMetadata, queryOpts queryOptions)
bc.fieldProjection = queryOpts.FieldProjection
}
-func (bc *blockCursor) copyAllTo(r *model.MeasureResult, entityValuesAll map[common.SeriesID]map[string]*modelv1.TagValue,
+func (bc *blockCursor) copyAllTo(r *model.MeasureResult, storedIndexValue map[common.SeriesID]map[string]*modelv1.TagValue,
tagProjection []model.TagProjection, desc bool,
) {
var idx, offset int
@@ -484,9 +484,9 @@ func (bc *blockCursor) copyAllTo(r *model.MeasureResult, entityValuesAll map[com
slices.Reverse(r.Timestamps)
slices.Reverse(r.Versions)
}
- var entityValues map[string]*modelv1.TagValue
- if entityValuesAll != nil {
- entityValues = entityValuesAll[r.SID]
+ var indexValue map[string]*modelv1.TagValue
+ if storedIndexValue != nil {
+ indexValue = storedIndexValue[r.SID]
}
OUTER:
for _, tp := range tagProjection {
@@ -498,10 +498,10 @@ OUTER:
t := model.Tag{
Name: tagName,
}
- if entityValues != nil && entityValues[tagName] != nil {
+ if indexValue != nil && indexValue[tagName] != nil {
t.Values = make([]*modelv1.TagValue, size)
for i := 0; i < size; i++ {
- t.Values[i] = entityValues[tagName]
+ t.Values[i] = indexValue[tagName]
}
tf.Tags = append(tf.Tags, t)
continue
@@ -564,15 +564,15 @@ OUTER:
}
}
-func (bc *blockCursor) copyTo(r *model.MeasureResult, entityValuesAll map[common.SeriesID]map[string]*modelv1.TagValue,
+func (bc *blockCursor) copyTo(r *model.MeasureResult, storedIndexValue map[common.SeriesID]map[string]*modelv1.TagValue,
tagProjection []model.TagProjection,
) {
r.SID = bc.bm.seriesID
r.Timestamps = append(r.Timestamps, bc.timestamps[bc.idx])
r.Versions = append(r.Versions, bc.versions[bc.idx])
- var entityValues map[string]*modelv1.TagValue
- if entityValuesAll != nil {
- entityValues = entityValuesAll[r.SID]
+ var indexValue map[string]*modelv1.TagValue
+ if storedIndexValue != nil {
+ indexValue = storedIndexValue[r.SID]
}
if len(r.TagFamilies) == 0 {
for _, tp := range tagProjection {
@@ -593,8 +593,8 @@ func (bc *blockCursor) copyTo(r *model.MeasureResult, entityValuesAll map[common
var cf *columnFamily
for j := range r.TagFamilies[i].Tags {
tagName := r.TagFamilies[i].Tags[j].Name
- if entityValues != nil && entityValues[tagName] != nil {
- r.TagFamilies[i].Tags[j].Values = append(r.TagFamilies[i].Tags[j].Values, entityValues[tagName])
+ if indexValue != nil && indexValue[tagName] != nil {
+ r.TagFamilies[i].Tags[j].Values = append(r.TagFamilies[i].Tags[j].Values, indexValue[tagName])
continue
}
if cf == nil {
diff --git a/banyand/measure/measure.go b/banyand/measure/measure.go
index c05c4c99..f278735e 100644
--- a/banyand/measure/measure.go
+++ b/banyand/measure/measure.go
@@ -50,17 +50,18 @@ type option struct {
}
type measure struct {
- databaseSupplier schema.Supplier
- l *logger.Logger
- schema *databasev1.Measure
- processorManager *topNProcessorManager
- name string
- group string
- indexRules []*databasev1.IndexRule
- indexRuleLocators partition.IndexRuleLocator
- topNAggregations []*databasev1.TopNAggregation
- interval time.Duration
- shardNum uint32
+ databaseSupplier schema.Supplier
+ l *logger.Logger
+ schema *databasev1.Measure
+ processorManager *topNProcessorManager
+ name string
+ group string
+ indexRules []*databasev1.IndexRule
+ indexRuleLocators partition.IndexRuleLocator
+ fieldIndexLocation partition.FieldIndexLocation
+ topNAggregations []*databasev1.TopNAggregation
+ interval time.Duration
+ shardNum uint32
}
func (s *measure) startSteamingManager(pipeline queue.Queue) error {
@@ -102,7 +103,7 @@ func (s *measure) parseSpec() (err error) {
if s.schema.Interval != "" {
s.interval, err = timestamp.ParseDuration(s.schema.Interval)
}
- s.indexRuleLocators = partition.ParseIndexRuleLocators(s.schema.GetEntity(), s.schema.GetTagFamilies(), s.indexRules)
+ s.indexRuleLocators, s.fieldIndexLocation = partition.ParseIndexRuleLocators(s.schema.GetEntity(), s.schema.GetTagFamilies(), s.indexRules)
return err
}
diff --git a/banyand/measure/query.go b/banyand/measure/query.go
index 19645d68..ae37521a 100644
--- a/banyand/measure/query.go
+++ b/banyand/measure/query.go
@@ -32,6 +32,7 @@ import (
modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
"github.com/apache/skywalking-banyandb/banyand/internal/storage"
"github.com/apache/skywalking-banyandb/pkg/convert"
+ "github.com/apache/skywalking-banyandb/pkg/index"
"github.com/apache/skywalking-banyandb/pkg/index/posting/roaring"
"github.com/apache/skywalking-banyandb/pkg/logger"
pbv1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
@@ -96,17 +97,16 @@ func (s *measure) Query(ctx context.Context, mqo model.MeasureQueryOptions) (mqr
}
}()
- sl, tables, err := s.searchSeriesList(ctx, series, mqo, result.segments)
+ sids, tables, storedIndexValue, newTagProjection, err := s.searchSeriesList(ctx, series, mqo, result.segments)
if err != nil {
return nil, err
}
- if len(sl) < 1 {
+ if len(sids) < 1 {
return &result, nil
}
- var sids []common.SeriesID
- for i := range sl {
- sids = append(sids, sl[i].ID)
- }
+ result.tagProjection = mqo.TagProjection
+ mqo.TagProjection = newTagProjection
+ result.storedIndexValue = storedIndexValue
var parts []*part
qo := queryOptions{
MeasureQueryOptions: mqo,
@@ -127,7 +127,7 @@ func (s *measure) Query(ctx context.Context, mqo model.MeasureQueryOptions) (mqr
result.snapshots = append(result.snapshots, s)
}
- if err = s.searchBlocks(ctx, &result, sl, sids, parts, qo); err != nil {
+ if err = s.searchBlocks(ctx, &result, sids, parts, qo); err != nil {
return nil, err
}
@@ -147,28 +147,97 @@ func (s *measure) Query(ctx context.Context, mqo model.MeasureQueryOptions) (mqr
return &result, nil
}
+type tagNameWithType struct {
+ name string
+ typ pbv1.ValueType
+}
+
func (s *measure) searchSeriesList(ctx context.Context, series []*pbv1.Series, mqo model.MeasureQueryOptions,
segments []storage.Segment[*tsTable, option],
-) (sl pbv1.SeriesList, tables []*tsTable, err error) {
+) (sl []common.SeriesID, tables []*tsTable, storedIndexValue map[common.SeriesID]map[string]*modelv1.TagValue,
+ newTagProjection []model.TagProjection, err error,
+) {
+ var indexProjection []index.FieldKey
+ fieldToValueType := make(map[string]tagNameWithType)
+ var projectedEntityOffsets map[string]int
+ newTagProjection = make([]model.TagProjection, 0)
+ for _, tp := range mqo.TagProjection {
+ var tagProjection model.TagProjection
+ TAG:
+ for _, n := range tp.Names {
+ for i := range s.schema.GetEntity().GetTagNames() {
+ if n == s.schema.GetEntity().GetTagNames()[i] {
+ if projectedEntityOffsets == nil {
+ projectedEntityOffsets = make(map[string]int)
+ }
+ projectedEntityOffsets[n] = i
+ continue TAG
+ }
+ }
+ if fields, ok := s.fieldIndexLocation[tp.Family]; ok {
+ if field, ok := fields[n]; ok {
+ indexProjection = append(indexProjection, field.Key)
+ fieldToValueType[field.Key.Marshal()] = tagNameWithType{
+ name: n,
+ typ: field.Type,
+ }
+ continue TAG
+ }
+ }
+ tagProjection.Family = tp.Family
+ tagProjection.Names = append(tagProjection.Names, n)
+ }
+ if tagProjection.Family != "" {
+ newTagProjection = append(newTagProjection, tagProjection)
+ }
+ }
seriesFilter := roaring.NewPostingList()
for i := range segments {
- tables = append(tables, segments[i].Tables()...)
- sll, err := segments[i].IndexDB().Search(ctx, series, mqo.Filter, mqo.Order, preloadSize)
+ sll, fieldResultList, err := segments[i].IndexDB().Search(ctx, series, storage.IndexSearchOpts{
+ Filter: mqo.Filter,
+ Order: mqo.Order,
+ PreloadSize: preloadSize,
+ Projection: indexProjection,
+ })
if err != nil {
- return nil, nil, err
+ return nil, nil, nil, nil, err
+ }
+ if len(sll) > 0 {
+ tables = append(tables, segments[i].Tables()...)
}
for j := range sll {
if seriesFilter.Contains(uint64(sll[j].ID)) {
continue
}
- sl = append(sl, sll[j])
seriesFilter.Insert(uint64(sll[j].ID))
+ sl = append(sl, sll[j].ID)
+ if projectedEntityOffsets == nil && fieldResultList == nil {
+ continue
+ }
+ if storedIndexValue == nil {
+ storedIndexValue = make(map[common.SeriesID]map[string]*modelv1.TagValue)
+ }
+ tagValues := make(map[string]*modelv1.TagValue)
+ storedIndexValue[sll[j].ID] = tagValues
+ for name, offset := range projectedEntityOffsets {
+ tagValues[name] = sll[j].EntityValues[offset]
+ }
+ if fieldResultList == nil {
+ continue
+ }
+ for f, v := range fieldResultList[j] {
+ if tnt, ok := fieldToValueType[f]; ok {
+ tagValues[tnt.name] = mustDecodeTagValue(tnt.typ, v)
+ } else {
+ logger.Panicf("unknown field %s not found in fieldToValueType", f)
+ }
+ }
}
}
- return sl, tables, nil
+ return sl, tables, storedIndexValue, newTagProjection, nil
}
-func (s *measure) searchBlocks(ctx context.Context, result *queryResult, sl pbv1.SeriesList, sids []common.SeriesID, parts []*part, qo queryOptions) error {
+func (s *measure) searchBlocks(ctx context.Context, result *queryResult, sids []common.SeriesID, parts []*part, qo queryOptions) error {
bma := generateBlockMetadataArray()
defer releaseBlockMetadataArray(bma)
defFn := startBlockScanSpan(ctx, len(sids), parts, result)
@@ -183,26 +252,9 @@ func (s *measure) searchBlocks(ctx context.Context, result *queryResult, sl pbv1
if tstIter.Error() != nil {
return fmt.Errorf("cannot init tstIter: %w", tstIter.Error())
}
- projectedEntityOffsets, tagProjectionOnPart := s.parseTagProjection(qo, result)
- result.tagProjection = qo.TagProjection
- qo.TagProjection = tagProjectionOnPart
-
for tstIter.nextBlock() {
bc := generateBlockCursor()
p := tstIter.piHeap[0]
-
- seriesID := p.curBlock.seriesID
- if result.entityValues != nil && result.entityValues[seriesID] == nil {
- for i := range sl {
- if sl[i].ID == seriesID {
- tag := make(map[string]*modelv1.TagValue)
- for name, offset := range projectedEntityOffsets {
- tag[name] = sl[i].EntityValues[offset]
- }
- result.entityValues[seriesID] = tag
- }
- }
- }
bc.init(p.p, p.curBlock, qo)
result.data = append(result.data, bc)
}
@@ -216,34 +268,6 @@ func (s *measure) searchBlocks(ctx context.Context, result *queryResult, sl pbv1
return nil
}
-func (s *measure) parseTagProjection(qo queryOptions, result *queryResult) (projectedEntityOffsets map[string]int, tagProjectionOnPart []model.TagProjection) {
- projectedEntityOffsets = make(map[string]int)
- for i := range qo.TagProjection {
- var found bool
- for j := range qo.TagProjection[i].Names {
- for k := range s.schema.GetEntity().GetTagNames() {
- if qo.TagProjection[i].Names[j] == s.schema.GetEntity().GetTagNames()[k] {
- projectedEntityOffsets[qo.TagProjection[i].Names[j]] = k
- if result.entityValues == nil {
- result.entityValues = make(map[common.SeriesID]map[string]*modelv1.TagValue)
- }
- } else {
- if !found {
- found = true
- tagProjectionOnPart = append(tagProjectionOnPart, model.TagProjection{
- Family: qo.TagProjection[i].Family,
- })
- }
- tagProjectionOnPart[len(tagProjectionOnPart)-1].Names = append(
- tagProjectionOnPart[len(tagProjectionOnPart)-1].Names,
- qo.TagProjection[i].Names[j])
- }
- }
- }
- }
- return
-}
-
func mustDecodeTagValue(valueType pbv1.ValueType, value []byte) *modelv1.TagValue {
if value == nil {
return pbv1.NullTagValue
@@ -396,15 +420,15 @@ func binaryDataFieldValue(value []byte) *modelv1.FieldValue {
}
type queryResult struct {
- sidToIndex map[common.SeriesID]int
- entityValues map[common.SeriesID]map[string]*modelv1.TagValue
- tagProjection []model.TagProjection
- data []*blockCursor
- snapshots []*snapshot
- segments []storage.Segment[*tsTable, option]
- loaded bool
- orderByTS bool
- ascTS bool
+ sidToIndex map[common.SeriesID]int
+ storedIndexValue map[common.SeriesID]map[string]*modelv1.TagValue
+ tagProjection []model.TagProjection
+ data []*blockCursor
+ snapshots []*snapshot
+ segments []storage.Segment[*tsTable, option]
+ loaded bool
+ orderByTS bool
+ ascTS bool
}
func (qr *queryResult) Pull() *model.MeasureResult {
@@ -451,12 +475,12 @@ func (qr *queryResult) Pull() *model.MeasureResult {
if len(qr.data) == 1 {
r := &model.MeasureResult{}
bc := qr.data[0]
- bc.copyAllTo(r, qr.entityValues, qr.tagProjection, qr.orderByTimestampDesc())
+ bc.copyAllTo(r, qr.storedIndexValue, qr.tagProjection, qr.orderByTimestampDesc())
qr.data = qr.data[:0]
releaseBlockCursor(bc)
return r
}
- return qr.merge(qr.entityValues, qr.tagProjection)
+ return qr.merge(qr.storedIndexValue, qr.tagProjection)
}
func (qr *queryResult) Release() {
@@ -531,7 +555,7 @@ func (qr *queryResult) orderByTimestampDesc() bool {
return qr.orderByTS && !qr.ascTS
}
-func (qr *queryResult) merge(entityValuesAll map[common.SeriesID]map[string]*modelv1.TagValue,
+func (qr *queryResult) merge(storedIndexValue map[common.SeriesID]map[string]*modelv1.TagValue,
tagProjection []model.TagProjection,
) *model.MeasureResult {
step := 1
@@ -555,7 +579,7 @@ func (qr *queryResult) merge(entityValuesAll map[common.SeriesID]map[string]*mod
logger.Panicf("following parts version should be less or equal to the previous one")
}
} else {
- topBC.copyTo(result, entityValuesAll, tagProjection)
+ topBC.copyTo(result, storedIndexValue, tagProjection)
lastVersion = topBC.versions[topBC.idx]
}
diff --git a/banyand/measure/write.go b/banyand/measure/write.go
index 5b2e695d..dadeb612 100644
--- a/banyand/measure/write.go
+++ b/banyand/measure/write.go
@@ -162,7 +162,8 @@ func (w *writeCallback) handle(dst map[string]*dataPointsInGroup, writeEvent *me
IndexRuleID: r.GetMetadata().GetId(),
Analyzer: r.Analyzer,
},
- Term: encodeTagValue.value,
+ Term: encodeTagValue.value,
+ Store: true,
})
} else {
for _, val := range encodeTagValue.valueArr {
@@ -171,10 +172,12 @@ func (w *writeCallback) handle(dst map[string]*dataPointsInGroup, writeEvent *me
IndexRuleID: r.GetMetadata().GetId(),
Analyzer: r.Analyzer,
},
- Term: val,
+ Term: val,
+ Store: true,
})
}
}
+ continue
}
_, isEntity := stm.indexRuleLocators.EntitySet[t.Name]
if tagFamilySpec.Tags[j].IndexedOnly || isEntity {
diff --git a/banyand/stream/index.go b/banyand/stream/index.go
index adcfe396..c3f4cdb2 100644
--- a/banyand/stream/index.go
+++ b/banyand/stream/index.go
@@ -54,7 +54,7 @@ func newElementIndex(ctx context.Context, root string, flushTimeoutSeconds int64
func (e *elementIndex) Sort(sids []common.SeriesID, fieldKey index.FieldKey, order modelv1.Sort,
timeRange *timestamp.TimeRange, preloadSize int,
-) (index.FieldIterator[*index.ItemRef], error) {
+) (index.FieldIterator[*index.DocumentResult], error) {
iter, err := e.store.Sort(sids, fieldKey, order, timeRange, preloadSize)
if err != nil {
return nil, err
diff --git a/banyand/stream/query.go b/banyand/stream/query.go
index b70ce0b4..9dff205f 100644
--- a/banyand/stream/query.go
+++ b/banyand/stream/query.go
@@ -140,7 +140,7 @@ type queryOptions struct {
}
type queryResult struct {
- sortingIter itersort.Iterator[*index.ItemRef]
+ sortingIter itersort.Iterator[*index.DocumentResult]
tagNameIndex map[string]partition.TagLocator
schema *databasev1.Stream
tabs []*tsTable
@@ -545,7 +545,7 @@ func indexSearch(sqo model.StreamQueryOptions,
func (s *stream) indexSort(sqo model.StreamQueryOptions, tabs []*tsTable,
seriesList pbv1.SeriesList,
-) (itersort.Iterator[*index.ItemRef], error) {
+) (itersort.Iterator[*index.DocumentResult], error) {
if sqo.Order == nil || sqo.Order.Index == nil {
return nil, nil
}
@@ -554,19 +554,19 @@ func (s *stream) indexSort(sqo model.StreamQueryOptions, tabs []*tsTable,
return nil, err
}
desc := sqo.Order != nil && sqo.Order.Index == nil && sqo.Order.Sort == modelv1.Sort_SORT_DESC
- return itersort.NewItemIter[*index.ItemRef](iters, desc), nil
+ return itersort.NewItemIter[*index.DocumentResult](iters, desc), nil
}
func (s *stream) buildItersByIndex(tables []*tsTable,
seriesList pbv1.SeriesList, sqo model.StreamQueryOptions,
-) (iters []itersort.Iterator[*index.ItemRef], err error) {
+) (iters []itersort.Iterator[*index.DocumentResult], err error) {
indexRuleForSorting := sqo.Order.Index
if len(indexRuleForSorting.Tags) != 1 {
return nil, fmt.Errorf("only support one tag for sorting, but got %d", len(indexRuleForSorting.Tags))
}
sids := seriesList.IDs()
for _, tw := range tables {
- var iter index.FieldIterator[*index.ItemRef]
+ var iter index.FieldIterator[*index.DocumentResult]
fieldKey := index.FieldKey{
IndexRuleID: indexRuleForSorting.GetMetadata().GetId(),
Analyzer: indexRuleForSorting.GetAnalyzer(),
diff --git a/banyand/stream/stream.go b/banyand/stream/stream.go
index 13a95f5c..d3e901e4 100644
--- a/banyand/stream/stream.go
+++ b/banyand/stream/stream.go
@@ -90,7 +90,7 @@ func (s *stream) Close() error {
func (s *stream) parseSpec() {
s.name, s.group = s.schema.GetMetadata().GetName(), s.schema.GetMetadata().GetGroup()
- s.indexRuleLocators = partition.ParseIndexRuleLocators(s.schema.GetEntity(), s.schema.GetTagFamilies(), s.indexRules)
+ s.indexRuleLocators, _ = partition.ParseIndexRuleLocators(s.schema.GetEntity(), s.schema.GetTagFamilies(), s.indexRules)
}
type streamSpec struct {
diff --git a/pkg/index/index.go b/pkg/index/index.go
index 11cef0ab..5d5bf91e 100644
--- a/pkg/index/index.go
+++ b/pkg/index/index.go
@@ -55,6 +55,7 @@ type Field struct {
Term []byte
Key FieldKey
NoSort bool
+ Store bool
}
// RangeOpts contains options to performance a continuous scan.
@@ -92,17 +93,18 @@ func (r RangeOpts) Between(value []byte) int {
return 0
}
-// ItemRef represents a reference to an item.
-type ItemRef struct {
- Term []byte
- SeriesID common.SeriesID
- DocID uint64
- Timestamp int64
+// DocumentResult represents a document in a index.
+type DocumentResult struct {
+ Values map[string][]byte
+ SortedValue []byte
+ SeriesID common.SeriesID
+ DocID uint64
+ Timestamp int64
}
// SortedField returns the value of the sorted field.
-func (ir ItemRef) SortedField() []byte {
- return ir.Term
+func (ir DocumentResult) SortedField() []byte {
+ return ir.SortedValue
}
// FieldIterator allows iterating over a field's posting values.
@@ -121,8 +123,8 @@ func (i *dummyIterator) Next() bool {
return false
}
-func (i *dummyIterator) Val() *ItemRef {
- return &ItemRef{}
+func (i *dummyIterator) Val() *DocumentResult {
+ return &DocumentResult{}
}
func (i *dummyIterator) Close() error {
@@ -152,8 +154,8 @@ type Writer interface {
// FieldIterable allows building a FieldIterator.
type FieldIterable interface {
- Iterator(fieldKey FieldKey, termRange RangeOpts, order modelv1.Sort, preLoadSize int) (iter FieldIterator[*ItemRef], err error)
- Sort(sids []common.SeriesID, fieldKey FieldKey, order modelv1.Sort, timeRange *timestamp.TimeRange, preLoadSize int) (FieldIterator[*ItemRef], error)
+ Iterator(fieldKey FieldKey, termRange RangeOpts, order modelv1.Sort, preLoadSize int) (iter FieldIterator[*DocumentResult], err error)
+ Sort(sids []common.SeriesID, fieldKey FieldKey, order modelv1.Sort, timeRange *timestamp.TimeRange, preLoadSize int) (FieldIterator[*DocumentResult], error)
}
// Searcher allows searching a field either by its key or by its key and term.
@@ -183,11 +185,17 @@ func (s Series) String() string {
return fmt.Sprintf("%s:%d", s.EntityValues, s.ID)
}
+// SeriesDocument represents a series document in a index.
+type SeriesDocument struct {
+ Fields map[string][]byte
+ Key Series
+}
+
// SeriesStore is an abstract of a series repository.
type SeriesStore interface {
Store
// Search returns a list of series that match the given matchers.
- Search(context.Context, []SeriesMatcher) ([]Series, error)
+ Search(context.Context, []SeriesMatcher, []FieldKey) ([]SeriesDocument, error)
}
// SeriesMatcherType represents the type of series matcher.
diff --git a/pkg/index/inverted/inverted.go b/pkg/index/inverted/inverted.go
index aa9e4532..4d831fb2 100644
--- a/pkg/index/inverted/inverted.go
+++ b/pkg/index/inverted/inverted.go
@@ -59,6 +59,7 @@ var (
defaultUpper = convert.Uint64ToBytes(math.MaxUint64)
defaultLower = convert.Uint64ToBytes(0)
defaultRangePreloadSize = 1000
+ defaultProjection = []string{docIDField}
)
var analyzers map[databasev1.IndexRule_Analyzer]*analysis.Analyzer
@@ -119,6 +120,9 @@ func (s *store) Batch(batch index.Batch) error {
if !f.NoSort {
tf.StoreValue().Sortable()
}
+ if f.Store {
+ tf.StoreValue()
+ }
if f.Key.Analyzer != databasev1.IndexRule_ANALYZER_UNSPECIFIED {
tf = tf.WithAnalyzer(analyzers[f.Key.Analyzer])
}
@@ -169,7 +173,9 @@ func (s *store) Close() error {
return s.writer.Close()
}
-func (s *store) Iterator(fieldKey index.FieldKey, termRange index.RangeOpts, order modelv1.Sort, preLoadSize int) (iter index.FieldIterator[*index.ItemRef], err error) {
+func (s *store) Iterator(fieldKey index.FieldKey, termRange index.RangeOpts,
+ order modelv1.Sort, preLoadSize int,
+) (iter index.FieldIterator[*index.DocumentResult], err error) {
if termRange.Lower != nil &&
termRange.Upper != nil &&
bytes.Compare(termRange.Lower, termRange.Upper) > 0 {
@@ -221,7 +227,6 @@ func (s *store) Iterator(fieldKey index.FieldKey, termRange index.RangeOpts, ord
reader: reader,
sortedKey: sortedKey,
size: preLoadSize,
- sid: fieldKey.SeriesID,
closer: s.closer,
}
return result, nil
@@ -247,13 +252,13 @@ func (s *store) MatchTerms(field index.Field) (list posting.List, err error) {
if err != nil {
return nil, err
}
- iter := newBlugeMatchIterator(documentMatchIterator, reader, nil)
+ iter := newBlugeMatchIterator(documentMatchIterator, reader, defaultProjection)
defer func() {
err = multierr.Append(err, iter.Close())
}()
list = roaring.NewPostingList()
for iter.Next() {
- list.Insert(iter.Val().docID)
+ list.Insert(iter.Val().DocID)
}
return list, err
}
@@ -280,13 +285,13 @@ func (s *store) Match(fieldKey index.FieldKey, matches []string) (posting.List,
if err != nil {
return nil, err
}
- iter := newBlugeMatchIterator(documentMatchIterator, reader, nil)
+ iter := newBlugeMatchIterator(documentMatchIterator, reader, defaultProjection)
defer func() {
err = multierr.Append(err, iter.Close())
}()
list := roaring.NewPostingList()
for iter.Next() {
- list.Insert(iter.Val().docID)
+ list.Insert(iter.Val().DocID)
}
return list, err
}
@@ -309,28 +314,25 @@ func (s *store) SizeOnDisk() int64 {
return int64(bytes)
}
-type searchResult struct {
- values map[string][]byte
- seriesID common.SeriesID
- docID uint64
- timestamp int64
-}
-
type blugeMatchIterator struct {
- delegated search.DocumentMatchIterator
- err error
- closer io.Closer
- current searchResult
+ delegated search.DocumentMatchIterator
+ err error
+ closer io.Closer
+ needToLoadFields []string
+ current index.DocumentResult
}
-func newBlugeMatchIterator(delegated search.DocumentMatchIterator, closer io.Closer, needToLoadFields []string) blugeMatchIterator {
+func newBlugeMatchIterator(delegated search.DocumentMatchIterator, closer io.Closer,
+ needToLoadFields []string,
+) blugeMatchIterator {
bmi := blugeMatchIterator{
- delegated: delegated,
- closer: closer,
- current: searchResult{values: make(map[string][]byte, len(needToLoadFields))},
+ delegated: delegated,
+ closer: closer,
+ needToLoadFields: needToLoadFields,
+ current: index.DocumentResult{Values: make(map[string][]byte, len(needToLoadFields))},
}
- for i := range needToLoadFields {
- bmi.current.values[needToLoadFields[i]] = nil
+ for _, f := range needToLoadFields {
+ bmi.current.Values[f] = nil
}
return bmi
}
@@ -345,25 +347,32 @@ func (bmi *blugeMatchIterator) Next() bool {
bmi.err = io.EOF
return false
}
- for i := range bmi.current.values {
- bmi.current.values[i] = nil
+ for i := range bmi.current.Values {
+ bmi.current.Values[i] = nil
+ }
+ bmi.current.DocID = 0
+ bmi.current.SeriesID = 0
+ bmi.current.Timestamp = 0
+ bmi.current.SortedValue = nil
+ if len(match.SortValue) > 0 {
+ bmi.current.SortedValue = match.SortValue[0]
}
err := match.VisitStoredFields(func(field string, value []byte) bool {
switch field {
case docIDField:
- bmi.current.docID = convert.BytesToUint64(value)
+ bmi.current.DocID = convert.BytesToUint64(value)
case seriesIDField:
- bmi.current.seriesID = common.SeriesID(convert.BytesToUint64(value))
+ bmi.current.SeriesID = common.SeriesID(convert.BytesToUint64(value))
case timestampField:
ts, err := bluge.DecodeDateTime(value)
if err != nil {
bmi.err = err
return false
}
- bmi.current.timestamp = ts.UnixNano()
+ bmi.current.Timestamp = ts.UnixNano()
default:
- if _, ok := bmi.current.values[field]; ok {
- bmi.current.values[field] = bytes.Clone(value)
+ if _, ok := bmi.current.Values[field]; ok {
+ bmi.current.Values[field] = bytes.Clone(value)
}
}
return true
@@ -372,7 +381,7 @@ func (bmi *blugeMatchIterator) Next() bool {
return bmi.err == nil
}
-func (bmi *blugeMatchIterator) Val() searchResult {
+func (bmi *blugeMatchIterator) Val() index.DocumentResult {
return bmi.current
}
diff --git a/pkg/index/inverted/inverted_series.go b/pkg/index/inverted/inverted_series.go
index dadc0e64..02852397 100644
--- a/pkg/index/inverted/inverted_series.go
+++ b/pkg/index/inverted/inverted_series.go
@@ -19,6 +19,7 @@
package inverted
import (
+ "bytes"
"context"
"github.com/blugelabs/bluge"
@@ -30,10 +31,10 @@ import (
"github.com/apache/skywalking-banyandb/pkg/index"
)
-var emptySeries = make([]index.Series, 0)
+var emptySeries = make([]index.SeriesDocument, 0)
// Search implements index.SeriesStore.
-func (s *store) Search(ctx context.Context, seriesMatchers []index.SeriesMatcher) ([]index.Series, error) {
+func (s *store) Search(ctx context.Context, seriesMatchers []index.SeriesMatcher, projection []index.FieldKey) ([]index.SeriesDocument, error) {
if len(seriesMatchers) == 0 {
return emptySeries, nil
}
@@ -77,33 +78,47 @@ func (s *store) Search(ctx context.Context, seriesMatchers []index.SeriesMatcher
if err != nil {
return nil, err
}
- return parseResult(dmi)
+ return parseResult(dmi, projection)
}
-func parseResult(dmi search.DocumentMatchIterator) ([]index.Series, error) {
- result := make([]index.Series, 0, 10)
+func parseResult(dmi search.DocumentMatchIterator, loadedFields []index.FieldKey) ([]index.SeriesDocument, error) {
+ result := make([]index.SeriesDocument, 0, 10)
next, err := dmi.Next()
docIDMap := make(map[uint64]struct{})
+ fields := make([]string, 0, len(loadedFields))
+ for i := range loadedFields {
+ fields = append(fields, loadedFields[i].Marshal())
+ }
for err == nil && next != nil {
- var series index.Series
+ var doc index.SeriesDocument
+ if len(loadedFields) > 0 {
+ doc.Fields = make(map[string][]byte)
+ for i := range loadedFields {
+ doc.Fields[fields[i]] = nil
+ }
+ }
err = next.VisitStoredFields(func(field string, value []byte) bool {
- if field == docIDField {
+ switch field {
+ case docIDField:
id := convert.BytesToUint64(value)
if _, ok := docIDMap[id]; !ok {
- series.ID = common.SeriesID(convert.BytesToUint64(value))
+ doc.Key.ID = common.SeriesID(convert.BytesToUint64(value))
docIDMap[id] = struct{}{}
}
- }
- if field == entityField {
- series.EntityValues = value
+ case entityField:
+ doc.Key.EntityValues = value
+ default:
+ if _, ok := doc.Fields[field]; ok {
+ doc.Fields[field] = bytes.Clone(value)
+ }
}
return true
})
if err != nil {
return nil, errors.WithMessage(err, "visit stored fields")
}
- if series.ID > 0 {
- result = append(result, series)
+ if doc.Key.ID > 0 {
+ result = append(result, doc)
}
next, err = dmi.Next()
}
diff --git a/pkg/index/inverted/inverted_series_test.go b/pkg/index/inverted/inverted_series_test.go
index b62ef4af..03a5e181 100644
--- a/pkg/index/inverted/inverted_series_test.go
+++ b/pkg/index/inverted/inverted_series_test.go
@@ -25,13 +25,23 @@ import (
"github.com/stretchr/testify/require"
"github.com/apache/skywalking-banyandb/api/common"
+ "github.com/apache/skywalking-banyandb/pkg/convert"
"github.com/apache/skywalking-banyandb/pkg/index"
"github.com/apache/skywalking-banyandb/pkg/logger"
)
+var (
+ fieldKeyDuration = index.FieldKey{
+ IndexRuleID: indexRuleID,
+ }
+ fieldKeyServiceName = index.FieldKey{
+ IndexRuleID: 6,
+ }
+)
+
func TestStore_Search(t *testing.T) {
- tester := assert.New(t)
- path, fn := setUp(require.New(t))
+ tester := require.New(t)
+ path, fn := setUp(tester)
s, err := NewStore(StoreOpts{
Path: path,
Logger: logger.GetLogger("test"),
@@ -47,32 +57,120 @@ func TestStore_Search(t *testing.T) {
// Test cases
tests := []struct {
- term [][]byte
- want []index.Series
+ term [][]byte
+ want []index.SeriesDocument
+ projection []index.FieldKey
}{
{
term: [][]byte{[]byte("test1")},
- want: []index.Series{
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(1),
- EntityValues: []byte("test1"),
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
},
},
},
{
- term: [][]byte{[]byte("test1"), []byte("test2"), []byte("test3"), []byte("foo")},
- want: []index.Series{
+ term: [][]byte{[]byte("test1"), []byte("test2"), []byte("test3"), []byte("foo")},
+ projection: []index.FieldKey{fieldKeyDuration, fieldKeyServiceName},
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(1),
- EntityValues: []byte("test1"),
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): nil,
+ fieldKeyServiceName.Marshal(): nil,
+ },
},
{
- ID: common.SeriesID(2),
- EntityValues: []byte("test2"),
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): convert.Int64ToBytes(int64(100)),
+ fieldKeyServiceName.Marshal(): []byte("svc2"),
+ },
},
{
- ID: common.SeriesID(3),
- EntityValues: []byte("test3"),
+ Key: index.Series{
+ ID: common.SeriesID(3),
+ EntityValues: []byte("test3"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): convert.Int64ToBytes(int64(500)),
+ fieldKeyServiceName.Marshal(): nil,
+ },
+ },
+ },
+ },
+ {
+ term: [][]byte{[]byte("test1"), []byte("test2"), []byte("test3"), []byte("foo")},
+ projection: []index.FieldKey{fieldKeyDuration},
+ want: []index.SeriesDocument{
+ {
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): nil,
+ },
+ },
+ {
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): convert.Int64ToBytes(int64(100)),
+ },
+ },
+ {
+ Key: index.Series{
+ ID: common.SeriesID(3),
+ EntityValues: []byte("test3"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyDuration.Marshal(): convert.Int64ToBytes(int64(500)),
+ },
+ },
+ },
+ },
+ {
+ term: [][]byte{[]byte("test1"), []byte("test2"), []byte("test3"), []byte("foo")},
+ projection: []index.FieldKey{fieldKeyServiceName},
+ want: []index.SeriesDocument{
+ {
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyServiceName.Marshal(): nil,
+ },
+ },
+ {
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyServiceName.Marshal(): []byte("svc2"),
+ },
+ },
+ {
+ Key: index.Series{
+ ID: common.SeriesID(3),
+ EntityValues: []byte("test3"),
+ },
+ Fields: map[string][]byte{
+ fieldKeyServiceName.Marshal(): nil,
+ },
},
},
},
@@ -92,17 +190,17 @@ func TestStore_Search(t *testing.T) {
})
name += string(term) + "-"
}
- t.Run(name, func(_ *testing.T) {
- got, err := s.Search(context.Background(), matchers)
- tester.NoError(err)
- tester.Equal(tt.want, got)
+ t.Run(name, func(t *testing.T) {
+ got, err := s.Search(context.Background(), matchers, tt.projection)
+ require.NoError(t, err)
+ assert.Equal(t, tt.want, got)
})
}
}
func TestStore_SearchWildcard(t *testing.T) {
- tester := assert.New(t)
- path, fn := setUp(require.New(t))
+ tester := require.New(t)
+ path, fn := setUp(tester)
s, err := NewStore(StoreOpts{
Path: path,
Logger: logger.GetLogger("test"),
@@ -118,67 +216,78 @@ func TestStore_SearchWildcard(t *testing.T) {
// Test cases
tests := []struct {
- wildcard []byte
- want []index.Series
+ wildcard []byte
+ projection []index.FieldKey
+ want []index.SeriesDocument
}{
{
wildcard: []byte("test*"),
- want: []index.Series{
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(1),
- EntityValues: []byte("test1"),
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
},
{
- ID: common.SeriesID(2),
- EntityValues: []byte("test2"),
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
},
{
- ID: common.SeriesID(3),
- EntityValues: []byte("test3"),
+ Key: index.Series{
+ ID: common.SeriesID(3),
+ EntityValues: []byte("test3"),
+ },
},
},
},
{
wildcard: []byte("*2"),
- want: []index.Series{
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(2),
- EntityValues: []byte("test2"),
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
},
},
},
{
wildcard: []byte("t*st1"),
- want: []index.Series{
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(1),
- EntityValues: []byte("test1"),
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
},
},
},
{
wildcard: []byte("foo*"),
- want: []index.Series{},
+ want: []index.SeriesDocument{},
},
}
for _, tt := range tests {
- t.Run(string(tt.wildcard), func(_ *testing.T) {
+ t.Run(string(tt.wildcard), func(t *testing.T) {
got, err := s.Search(context.Background(), []index.SeriesMatcher{
{
Type: index.SeriesMatcherTypeWildcard,
Match: tt.wildcard,
},
- })
- tester.NoError(err)
- tester.ElementsMatch(tt.want, got)
+ }, tt.projection)
+ require.NoError(t, err)
+ assert.ElementsMatch(t, tt.want, got)
})
}
}
func TestStore_SearchPrefix(t *testing.T) {
- tester := assert.New(t)
- path, fn := setUp(require.New(t))
+ tester := require.New(t)
+ path, fn := setUp(tester)
s, err := NewStore(StoreOpts{
Path: path,
Logger: logger.GetLogger("test"),
@@ -194,47 +303,54 @@ func TestStore_SearchPrefix(t *testing.T) {
// Test cases
tests := []struct {
- prefix []byte
- want []index.Series
+ prefix []byte
+ projection []index.FieldKey
+ want []index.SeriesDocument
}{
{
prefix: []byte("test"),
- want: []index.Series{
+ want: []index.SeriesDocument{
{
- ID: common.SeriesID(1),
- EntityValues: []byte("test1"),
+ Key: index.Series{
+ ID: common.SeriesID(1),
+ EntityValues: []byte("test1"),
+ },
},
{
- ID: common.SeriesID(2),
- EntityValues: []byte("test2"),
+ Key: index.Series{
+ ID: common.SeriesID(2),
+ EntityValues: []byte("test2"),
+ },
},
{
- ID: common.SeriesID(3),
- EntityValues: []byte("test3"),
+ Key: index.Series{
+ ID: common.SeriesID(3),
+ EntityValues: []byte("test3"),
+ },
},
},
},
{
prefix: []byte("foo"),
- want: []index.Series{},
+ want: []index.SeriesDocument{},
},
}
for _, tt := range tests {
- t.Run(string(tt.prefix), func(_ *testing.T) {
+ t.Run(string(tt.prefix), func(t *testing.T) {
got, err := s.Search(context.Background(), []index.SeriesMatcher{
{
Type: index.SeriesMatcherTypePrefix,
Match: tt.prefix,
},
- })
- tester.NoError(err)
- tester.ElementsMatch(tt.want, got)
+ }, tt.projection)
+ require.NoError(t, err)
+ assert.ElementsMatch(t, tt.want, got)
})
}
}
-func setupData(tester *assert.Assertions, s index.SeriesStore) {
+func setupData(tester *require.Assertions, s index.SeriesStore) {
series1 := index.Document{
DocID: 1,
EntityValues: []byte("test1"),
@@ -243,11 +359,30 @@ func setupData(tester *assert.Assertions, s index.SeriesStore) {
series2 := index.Document{
DocID: 2,
EntityValues: []byte("test2"),
+ Fields: []index.Field{
+ {
+ Key: fieldKeyDuration,
+ Term: convert.Int64ToBytes(int64(100)),
+ Store: true,
+ },
+ {
+ Key: fieldKeyServiceName,
+ Term: []byte("svc2"),
+ Store: true,
+ },
+ },
}
series3 := index.Document{
DocID: 3,
EntityValues: []byte("test3"),
+ Fields: []index.Field{
+ {
+ Key: fieldKeyDuration,
+ Term: convert.Int64ToBytes(int64(500)),
+ Store: true,
+ },
+ },
}
tester.NoError(s.Batch(index.Batch{
Documents: []index.Document{series1, series2, series3, series3},
diff --git a/pkg/index/inverted/inverted_test.go b/pkg/index/inverted/inverted_test.go
index de43daed..07b7ffa7 100644
--- a/pkg/index/inverted/inverted_test.go
+++ b/pkg/index/inverted/inverted_test.go
@@ -36,8 +36,8 @@ import (
)
func TestStore_Match(t *testing.T) {
- tester := assert.New(t)
- path, fn := setUp(require.New(t))
+ tester := require.New(t)
+ path, fn := setUp(tester)
s, err := NewStore(StoreOpts{
Path: path,
Logger: logger.GetLogger("test"),
@@ -119,7 +119,8 @@ func TestStore_Match(t *testing.T) {
}
for _, tt := range tests {
name := strings.Join(tt.matches, "-")
- t.Run(name, func(_ *testing.T) {
+ t.Run(name, func(t *testing.T) {
+ tester := assert.New(t)
list, err := s.Match(serviceName, tt.matches)
if tt.wantErr {
tester.Error(err)
@@ -184,7 +185,7 @@ func TestStore_SeriesMatch(t *testing.T) {
}
}
-func setup(tester *assert.Assertions, s index.Store, serviceName index.FieldKey) {
+func setup(tester *require.Assertions, s index.Store, serviceName index.FieldKey) {
var batch index.Batch
batch.Documents = append(batch.Documents,
index.Document{
diff --git a/pkg/index/inverted/sort.go b/pkg/index/inverted/sort.go
index 0b8e5a85..c63b4c42 100644
--- a/pkg/index/inverted/sort.go
+++ b/pkg/index/inverted/sort.go
@@ -35,7 +35,7 @@ import (
func (s *store) Sort(sids []common.SeriesID, fieldKey index.FieldKey, order modelv1.Sort,
timeRange *timestamp.TimeRange, preLoadSize int,
-) (iter index.FieldIterator[*index.ItemRef], err error) {
+) (iter index.FieldIterator[*index.DocumentResult], err error) {
reader, err := s.writer.Reader()
if err != nil {
return nil, err
@@ -69,27 +69,23 @@ func (s *store) Sort(sids []common.SeriesID, fieldKey index.FieldKey, order mode
sortedKey = "-" + sortedKey
}
result := &sortIterator{
- query: query,
- reader: reader,
- sortedKey: sortedKey,
- sortedField: fk,
- size: preLoadSize,
- sid: fieldKey.SeriesID,
+ query: query,
+ reader: reader,
+ sortedKey: sortedKey,
+ size: preLoadSize,
}
return result, nil
}
type sortIterator struct {
- query bluge.Query
- err error
- reader *bluge.Reader
- current *blugeMatchIterator
- closer *run.Closer
- sortedKey string
- sortedField string
- size int
- skipped int
- sid common.SeriesID
+ query bluge.Query
+ err error
+ reader *bluge.Reader
+ current *blugeMatchIterator
+ closer *run.Closer
+ sortedKey string
+ size int
+ skipped int
}
func (si *sortIterator) Next() bool {
@@ -124,7 +120,7 @@ func (si *sortIterator) loadCurrent() bool {
return false
}
- iter := newBlugeMatchIterator(documentMatchIterator, nil, []string{si.sortedField})
+ iter := newBlugeMatchIterator(documentMatchIterator, nil, nil)
si.current = &iter
if si.next() {
return true
@@ -141,18 +137,12 @@ func (si *sortIterator) next() bool {
return false
}
-func (si *sortIterator) Val() *index.ItemRef {
+func (si *sortIterator) Val() *index.DocumentResult {
v := si.current.Val()
- sv, ok := v.values[si.sortedField]
- if !ok {
+ if v.SortedValue == nil {
panic("sorted field not found in document")
}
- return &index.ItemRef{
- SeriesID: v.seriesID,
- DocID: v.docID,
- Term: sv,
- Timestamp: v.timestamp,
- }
+ return &v
}
func (si *sortIterator) Close() error {
diff --git a/pkg/index/inverted/sort_test.go b/pkg/index/inverted/sort_test.go
index e7794038..a03367b4 100644
--- a/pkg/index/inverted/sort_test.go
+++ b/pkg/index/inverted/sort_test.go
@@ -172,8 +172,8 @@ func TestStore_Sort(t *testing.T) {
for iter.Next() {
val := iter.Val()
got.items = append(got.items, val.DocID)
- if val.Term != nil {
- got.terms = append(got.terms, val.Term)
+ if val.SortedValue != nil {
+ got.terms = append(got.terms, val.SortedValue)
}
}
for i := 0; i < 10; i++ {
diff --git a/pkg/partition/index.go b/pkg/partition/index.go
index 1df11225..9ccb0869 100644
--- a/pkg/partition/index.go
+++ b/pkg/partition/index.go
@@ -19,6 +19,8 @@ package partition
import (
databasev1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
+ "github.com/apache/skywalking-banyandb/pkg/index"
+ pbv1 "github.com/apache/skywalking-banyandb/pkg/pb/v1"
)
// IndexRuleLocator is a helper struct to locate the index rule by tag name.
@@ -27,9 +29,21 @@ type IndexRuleLocator struct {
TagFamilyTRule []map[string]*databasev1.IndexRule
}
+// FieldWithType is a helper struct to store the field type.
+type FieldWithType struct {
+ Key index.FieldKey
+ Type pbv1.ValueType
+}
+
+// FieldIndexLocation is a helper struct to store the field index location.
+type FieldIndexLocation map[string]map[string]FieldWithType
+
// ParseIndexRuleLocators returns a IndexRuleLocator based on the tag family spec and index rules.
-func ParseIndexRuleLocators(entity *databasev1.Entity, families []*databasev1.TagFamilySpec, indexRules []*databasev1.IndexRule) (locators IndexRuleLocator) {
+func ParseIndexRuleLocators(entity *databasev1.Entity, families []*databasev1.TagFamilySpec,
+ indexRules []*databasev1.IndexRule,
+) (locators IndexRuleLocator, fil FieldIndexLocation) {
locators.EntitySet = make(map[string]struct{}, len(entity.TagNames))
+ fil = make(FieldIndexLocation)
for i := range entity.TagNames {
locators.EntitySet[entity.TagNames[i]] = struct{}{}
}
@@ -50,8 +64,19 @@ func ParseIndexRuleLocators(entity *databasev1.Entity, families []*databasev1.Ta
ir := findIndexRuleByTagName(families[i].Tags[j].Name)
if ir != nil {
ttr[families[i].Tags[j].Name] = ir
+ tagFamily, ok := fil[families[i].Name]
+ if !ok {
+ tagFamily = make(map[string]FieldWithType)
+ fil[families[i].Name] = tagFamily
+ }
+ tagFamily[families[i].Tags[j].Name] = FieldWithType{
+ Key: index.FieldKey{
+ IndexRuleID: ir.Metadata.Id,
+ },
+ Type: pbv1.MustTagValueSpecToValueType(families[i].Tags[j].Type),
+ }
}
}
}
- return locators
+ return locators, fil
}
diff --git a/pkg/pb/v1/value.go b/pkg/pb/v1/value.go
index 064d2022..ec6e757e 100644
--- a/pkg/pb/v1/value.go
+++ b/pkg/pb/v1/value.go
@@ -23,6 +23,7 @@ import (
"github.com/pkg/errors"
+ databasev1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/database/v1"
modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
"github.com/apache/skywalking-banyandb/pkg/convert"
"github.com/apache/skywalking-banyandb/pkg/encoding"
@@ -63,6 +64,24 @@ func MustTagValueToValueType(tag *modelv1.TagValue) ValueType {
}
}
+// MustTagValueSpecToValueType converts databasev1.TagType to ValueType.
+func MustTagValueSpecToValueType(tag databasev1.TagType) ValueType {
+ switch tag {
+ case databasev1.TagType_TAG_TYPE_STRING:
+ return ValueTypeStr
+ case databasev1.TagType_TAG_TYPE_INT:
+ return ValueTypeInt64
+ case databasev1.TagType_TAG_TYPE_DATA_BINARY:
+ return ValueTypeBinaryData
+ case databasev1.TagType_TAG_TYPE_STRING_ARRAY:
+ return ValueTypeStrArr
+ case databasev1.TagType_TAG_TYPE_INT_ARRAY:
+ return ValueTypeInt64Arr
+ default:
+ panic("unknown tag value type")
+ }
+}
+
func marshalTagValue(dest []byte, tv *modelv1.TagValue) ([]byte, error) {
dest = append(dest, byte(MustTagValueToValueType(tv)))
switch tv.Value.(type) {
diff --git a/test/cases/measure/data/input/entity.yaml b/test/cases/measure/data/input/entity.yaml
index 40a1c756..8e37f7b8 100644
--- a/test/cases/measure/data/input/entity.yaml
+++ b/test/cases/measure/data/input/entity.yaml
@@ -20,7 +20,7 @@ groups: ["sw_metric"]
tagProjection:
tagFamilies:
- name: "default"
- tags: ["service_id"]
+ tags: ["service_id", "layer", "name", "short_name"]
criteria:
le:
op: "LOGICAL_OP_AND"
diff --git a/test/cases/measure/data/input/entity_in.yaml b/test/cases/measure/data/input/entity_in.yaml
index eb19686a..b872a268 100644
--- a/test/cases/measure/data/input/entity_in.yaml
+++ b/test/cases/measure/data/input/entity_in.yaml
@@ -20,7 +20,7 @@ groups: ["sw_metric"]
tagProjection:
tagFamilies:
- name: "default"
- tags: ["id", "service_id"]
+ tags: ["name", "short_name"]
criteria:
le:
op: "LOGICAL_OP_AND"
diff --git a/test/cases/measure/data/input/entity_service.yaml b/test/cases/measure/data/input/entity_service.yaml
index 1074be66..b85da375 100644
--- a/test/cases/measure/data/input/entity_service.yaml
+++ b/test/cases/measure/data/input/entity_service.yaml
@@ -20,7 +20,7 @@ groups: ["sw_metric"]
tagProjection:
tagFamilies:
- name: "default"
- tags: ["id", "service_id"]
+ tags: ["id", "service_id", "layer"]
criteria:
le:
op: "LOGICAL_OP_AND"
diff --git a/test/cases/measure/data/input/no_field.yaml b/test/cases/measure/data/input/no_field.yaml
index 14454a22..8743c88c 100644
--- a/test/cases/measure/data/input/no_field.yaml
+++ b/test/cases/measure/data/input/no_field.yaml
@@ -20,7 +20,7 @@ groups: ["sw_metric"]
tagProjection:
tagFamilies:
- name: "default"
- tags: ["id", "service_id"]
+ tags: ["id"]
criteria:
condition:
name: "service_id"
diff --git a/test/cases/measure/data/want/entity.yaml b/test/cases/measure/data/want/entity.yaml
index 8586f55f..4fc05dc5 100644
--- a/test/cases/measure/data/want/entity.yaml
+++ b/test/cases/measure/data/want/entity.yaml
@@ -16,10 +16,22 @@
# under the License.
dataPoints:
- - tagFamilies:
- - name: default
- tags:
- - key: service_id
- value:
- str:
- value: service_1
\ No newline at end of file
+- tagFamilies:
+ - name: default
+ tags:
+ - key: service_id
+ value:
+ str:
+ value: service_1
+ - key: layer
+ value:
+ int:
+ value: "1"
+ - key: name
+ value:
+ str:
+ value: service_name_1
+ - key: short_name
+ value:
+ str:
+ value: service_short_name_1
diff --git a/test/cases/measure/data/want/entity_in.yaml b/test/cases/measure/data/want/entity_in.yaml
index 6c269eb0..73ba584e 100644
--- a/test/cases/measure/data/want/entity_in.yaml
+++ b/test/cases/measure/data/want/entity_in.yaml
@@ -19,23 +19,22 @@ dataPoints:
- tagFamilies:
- name: default
tags:
- - key: id
+ - key: name
value:
str:
- value: "1"
- - key: service_id
+ value: service_name_1
+ - key: short_name
value:
str:
- value: service_1
+ value: service_short_name_1
- tagFamilies:
- name: default
tags:
- - key: id
+ - key: name
value:
str:
- value: "2"
- - key: service_id
+ value: service_name_2
+ - key: short_name
value:
str:
- value: service_2
-
\ No newline at end of file
+ value: service_short_name_2
diff --git a/test/cases/measure/data/want/entity_service.yaml b/test/cases/measure/data/want/entity_service.yaml
index 58825ddc..d1d62da2 100644
--- a/test/cases/measure/data/want/entity_service.yaml
+++ b/test/cases/measure/data/want/entity_service.yaml
@@ -16,14 +16,18 @@
# under the License.
dataPoints:
- - tagFamilies:
- - name: default
- tags:
- - key: id
- value:
- str:
- value: "1"
- - key: service_id
- value:
- str:
- value: service_1
\ No newline at end of file
+- tagFamilies:
+ - name: default
+ tags:
+ - key: id
+ value:
+ str:
+ value: "1"
+ - key: service_id
+ value:
+ str:
+ value: service_1
+ - key: layer
+ value:
+ int:
+ value: "1"
diff --git a/test/cases/measure/data/want/no_field.yaml b/test/cases/measure/data/want/no_field.yaml
index 58825ddc..b16d1cea 100644
--- a/test/cases/measure/data/want/no_field.yaml
+++ b/test/cases/measure/data/want/no_field.yaml
@@ -16,14 +16,10 @@
# under the License.
dataPoints:
- - tagFamilies:
- - name: default
- tags:
- - key: id
- value:
- str:
- value: "1"
- - key: service_id
- value:
- str:
- value: service_1
\ No newline at end of file
+- tagFamilies:
+ - name: default
+ tags:
+ - key: id
+ value:
+ str:
+ value: "1"
diff --git a/test/stress/istio/report.md b/test/stress/istio/report.md
index 790be7f1..8089e50f 100644
--- a/test/stress/istio/report.md
+++ b/test/stress/istio/report.md
@@ -27,10 +27,7 @@ throughput: 6980.765015 items/s
throughput(kb/s) 1786.494948
latency: 2ns
-The CPU usage and Disk IO is better than before due to the optimization of parts merge strategy.
-But the disk space take a bit more than before, because the parts are not merged aggressively.
-
-We also remove raw value from Series Index, which reduce the disk space of such index.
+The Memory and Disk usage is improved due to moving indexed value from data files to index files.
### Problem
@@ -61,88 +58,80 @@ Showing top 10 nodes out of 326
## Heap Profile
-`alloc_bytes` 95th-percentile: 1.32 GB.
-`heap_inuse_bytes` 95th-percentile: 1.48 GB.
-`sys_bytes` 95th-percentile: 1.90 GB.
-`stack_inuse_bytes` 95th-percentile: 21.46 MB.
+`alloc_bytes` 95th-percentile: 947.97 MB.
+`heap_inuse_bytes` 95th-percentile: 1.10 GB.
+`sys_bytes` 95th-percentile: 1.75 GB.
+`stack_inuse_bytes` 95th-percentile: 20.58 MB.
```bash
-Showing top 10 nodes out of 220
+Showing top 10 nodes out of 225
flat flat% sum% cum cum%
- 33.04GB 9.72% 9.72% 33.04GB 9.72% github.com/blevesearch/vellum.(*unfinishedNodes).get
- 25.57GB 7.52% 17.24% 25.57GB 7.52% reflect.New
- 16.59GB 4.88% 22.12% 16.59GB 4.88% github.com/blevesearch/vellum.(*builderNodePool).Get
- 15.92GB 4.68% 26.80% 15.92GB 4.68% github.com/apache/skywalking-banyandb/banyand/measure.(*blockPointer).append
- 13.99GB 4.11% 30.91% 13.99GB 4.11% github.com/blugelabs/bluge/analysis.TokenFrequency
- 12.70GB 3.74% 34.65% 12.70GB 3.74% github.com/blugelabs/ice.(*interim).processDocument.func1.1
- 10.59GB 3.11% 37.76% 10.59GB 3.11% github.com/blevesearch/vellum.(*builderNodeUnfinished).lastCompiled
- 9.40GB 2.76% 40.53% 9.40GB 2.76% bytes.growSlice
- 8.53GB 2.51% 43.03% 8.53GB 2.51% github.com/RoaringBitmap/roaring.(*Bitmap).Iterator
- 8.15GB 2.40% 45.43% 8.15GB 2.40% github.com/blugelabs/ice.(*interim).prepareDictsForDocument.func1.1
+ 32.36GB 9.63% 9.63% 32.36GB 9.63% github.com/blevesearch/vellum.(*unfinishedNodes).get
+ 26.01GB 7.74% 17.36% 26.01GB 7.74% reflect.New
+ 16.32GB 4.86% 22.22% 16.32GB 4.86% github.com/blevesearch/vellum.(*builderNodePool).Get
+ 13.81GB 4.11% 26.33% 13.81GB 4.11% github.com/apache/skywalking-banyandb/banyand/measure.(*blockPointer).append
+ 13.74GB 4.09% 30.42% 13.74GB 4.09% github.com/blugelabs/bluge/analysis.TokenFrequency
+ 12.63GB 3.76% 34.17% 12.63GB 3.76% github.com/blugelabs/ice.(*interim).processDocument.func1.1
+ 10.44GB 3.11% 37.28% 10.44GB 3.11% github.com/blevesearch/vellum.(*builderNodeUnfinished).lastCompiled
+ 9.42GB 2.80% 40.08% 9.42GB 2.80% bytes.growSlice
+ 8.57GB 2.55% 42.63% 22.18GB 6.60% github.com/apache/skywalking-banyandb/banyand/measure.(*writeCallback).handle
+ 8.40GB 2.50% 45.13% 8.40GB 2.50% github.com/RoaringBitmap/roaring.(*Bitmap).Iterator
```
## Disk Usage
```bash
-measure: 331 MB
-measure/measure-default: 100 MB
-measure/measure-default/idx-17cd0bcb17960000: 36 MB
-measure/measure-default/shard-0: 64 MB
-measure/measure-default/shard-0/seg-20240507: 64 MB
-measure/measure-default/shard-0/seg-20240507/000000000000183a: 384 kB
-measure/measure-default/shard-0/seg-20240507/0000000000001fa0: 72 kB
-measure/measure-default/shard-0/seg-20240507/0000000000001fe4: 175 kB
-measure/measure-default/shard-0/seg-20240507/0000000000002009: 49 MB
-measure/measure-default/shard-0/seg-20240507/000000000000203f: 3.4 MB
-measure/measure-default/shard-0/seg-20240507/0000000000002042: 140 kB
-measure/measure-default/shard-0/seg-20240507/000000000000206f: 3.0 MB
-measure/measure-default/shard-0/seg-20240507/0000000000002072: 140 kB
-measure/measure-default/shard-0/seg-20240507/00000000000020b2: 4.2 MB
-measure/measure-default/shard-0/seg-20240507/00000000000020b5: 164 kB
-measure/measure-default/shard-0/seg-20240507/00000000000020db: 3.0 MB
-measure/measure-minute: 231 MB
-measure/measure-minute/idx-17cd0bcb17960000: 26 MB
-measure/measure-minute/shard-0: 102 MB
-measure/measure-minute/shard-0/seg-20240507: 102 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000000c01: 39 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000000e80: 26 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000000f2c: 6.9 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000000f2e: 113 kB
-measure/measure-minute/shard-0/seg-20240507/0000000000000fc9: 12 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000000fcc: 119 kB
-measure/measure-minute/shard-0/seg-20240507/0000000000001001: 61 kB
-measure/measure-minute/shard-0/seg-20240507/0000000000001032: 2.8 MB
-measure/measure-minute/shard-0/seg-20240507/000000000000106c: 6.6 MB
-measure/measure-minute/shard-0/seg-20240507/0000000000001070: 246 kB
-measure/measure-minute/shard-0/seg-20240507/0000000000001080: 1.1 MB
-measure/measure-minute/shard-0/seg-20240507/00000000000010a2: 3.9 MB
-measure/measure-minute/shard-0/seg-20240507/00000000000010bc: 1.4 MB
-measure/measure-minute/shard-0/seg-20240507/00000000000010bd: 73 kB
-measure/measure-minute/shard-0/seg-20240507/00000000000010d4: 1.2 MB
-measure/measure-minute/shard-0/seg-20240507/00000000000010e2: 994 kB
-measure/measure-minute/shard-1: 103 MB
-measure/measure-minute/shard-1/seg-20240507: 103 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000af5: 38 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000e1b: 28 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000ebc: 7.8 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000ebf: 173 kB
-measure/measure-minute/shard-1/seg-20240507/0000000000000f50: 11 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000fbd: 3.1 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000ff6: 6.8 MB
-measure/measure-minute/shard-1/seg-20240507/0000000000000ff7: 57 kB
-measure/measure-minute/shard-1/seg-20240507/0000000000001023: 62 kB
-measure/measure-minute/shard-1/seg-20240507/000000000000107f: 7.8 MB
+measure: 368 MB
+measure/measure-default: 182 MB
+measure/measure-default/seg-20240731: 182 MB
+measure/measure-default/seg-20240731/shard-0: 147 MB
+measure/measure-default/seg-20240731/shard-0/0000000000001b5c: 75 MB
+measure/measure-default/seg-20240731/shard-0/0000000000001c0b: 76 kB
+measure/measure-default/seg-20240731/shard-0/0000000000001c6c: 41 kB
+measure/measure-default/seg-20240731/shard-0/0000000000001d37: 24 MB
+measure/measure-default/seg-20240731/shard-0/0000000000001dae: 80 kB
+measure/measure-default/seg-20240731/shard-0/0000000000001edc: 22 MB
+measure/measure-default/seg-20240731/shard-0/0000000000001fad: 91 kB
+measure/measure-default/seg-20240731/shard-0/0000000000001fb1: 218 kB
+measure/measure-default/seg-20240731/shard-0/0000000000002018: 588 kB
+measure/measure-default/seg-20240731/shard-0/0000000000002078: 23 MB
+measure/measure-default/seg-20240731/shard-0/0000000000002081: 879 kB
+measure/measure-default/seg-20240731/sidx: 36 MB
+measure/measure-minute: 185 MB
+measure/measure-minute/seg-20240731: 185 MB
+measure/measure-minute/seg-20240731/shard-0: 80 MB
+measure/measure-minute/seg-20240731/shard-0/0000000000000e4d: 52 MB
+measure/measure-minute/seg-20240731/shard-0/0000000000000f21: 9.3 MB
+measure/measure-minute/seg-20240731/shard-0/0000000000000ff8: 9.4 MB
+measure/measure-minute/seg-20240731/shard-0/0000000000001068: 296 kB
+measure/measure-minute/seg-20240731/shard-0/00000000000010cd: 9.1 MB
+measure/measure-minute/seg-20240731/shard-1: 82 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000de3: 51 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000ead: 9.6 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000f82: 9.1 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000fb0: 2.1 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000fe0: 2.3 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000fe6: 1.4 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000000fe9: 162 kB
+measure/measure-minute/seg-20240731/shard-1/0000000000000ff1: 383 kB
+measure/measure-minute/seg-20240731/shard-1/0000000000001017: 1.8 MB
+measure/measure-minute/seg-20240731/shard-1/000000000000101b: 229 kB
+measure/measure-minute/seg-20240731/shard-1/0000000000001053: 2.8 MB
+measure/measure-minute/seg-20240731/shard-1/0000000000001057: 231 kB
+measure/measure-minute/seg-20240731/shard-1/0000000000001058: 74 kB
+measure/measure-minute/seg-20240731/shard-1/0000000000001063: 477 kB
+measure/measure-minute/seg-20240731/sidx: 24 MB
```
## Disk IO
| Metric | 95th-percentile per second |
|---------------------|-----------------------------|
-| read_count | 89.106667 |
-| merged_read_count | 7.2866670 |
-| write_count | 48.198333 |
-| merged_write_count | 53.538333 |
-| read_bytes | 1096663.04 |
-| write_bytes | 8741847.04 |
-| io_time(ms) | 42.82 |
-| weighted_io(ms) | 408.57 |
+| read_count | 0.010000 |
+| merged_read_count | 0.000000 |
+| write_count | 20.978333 |
+| merged_write_count | 25.373333 |
+| read_bytes | 40.960000 |
+| write_bytes | 2603731.626667 |
+| io_time(ms) | 13.360000 |
+| weighted_io(ms) | 60.828333 |
diff --git a/test/stress/istio/testdata/metrics/data.csv b/test/stress/istio/testdata/metrics/data.csv
index d0cf31ab..3b96410d 100644
--- a/test/stress/istio/testdata/metrics/data.csv
+++ b/test/stress/istio/testdata/metrics/data.csv
@@ -1,154 +1,153 @@
-624078888.000000,647446528.000000,814824888.000000,5013504.000000,70.360000,269411012608.000000,532622512128.000000,18758639.000000,474007.000000,34547749.000000,54672018.000000,1347413004288.000000,1872256377856.000000,24145916.000000,325827974.000000
-281563232.000000,318578688.000000,879970760.000000,4423680.000000,93.530000,269467889664.000000,532622512128.000000,18758639.000000,474007.000000,34548574.000000,54672928.000000,1347413004288.000000,1872318841856.000000,24146316.000000,325829205.000000
-608335192.000000,788119552.000000,1059725304.000000,5865472.000000,151.120000,269510291456.000000,532622512128.000000,18758639.000000,474007.000000,34549457.000000,54673770.000000,1347413004288.000000,1872446559232.000000,24146868.000000,325831305.000000
-220368448.000000,278667264.000000,1061298168.000000,5373952.000000,165.930000,269509632000.000000,532622512128.000000,18758639.000000,474007.000000,34550195.000000,54674624.000000,1347413004288.000000,1872518005760.000000,24147244.000000,325832570.000000
-221448048.000000,279683072.000000,1061298168.000000,5373952.000000,165.990000,269509644288.000000,532622512128.000000,18758639.000000,474007.000000,34550212.000000,54674656.000000,1347413004288.000000,1872518210560.000000,24147268.000000,325832585.000000
-222589136.000000,280707072.000000,1061298168.000000,5373952.000000,166.060000,269509656576.000000,532622512128.000000,18758639.000000,474007.000000,34550293.000000,54674741.000000,1347413004288.000000,1872519009280.000000,24147296.000000,325832658.000000
-677116888.000000,779591680.000000,1061298168.000000,7798784.000000,224.570000,269518118912.000000,532622512128.000000,18758639.000000,474007.000000,34550748.000000,54675379.000000,1347413004288.000000,1872568677376.000000,24147644.000000,325833455.000000
-275652384.000000,363192320.000000,1061298168.000000,6782976.000000,239.410000,269522350080.000000,532622512128.000000,18758639.000000,474007.000000,34551508.000000,54676286.000000,1347413004288.000000,1872645719040.000000,24148128.000000,325834765.000000
-276870344.000000,364298240.000000,1061298168.000000,6782976.000000,239.460000,269522354176.000000,532622512128.000000,18758639.000000,474007.000000,34551556.000000,54676364.000000,1347413004288.000000,1872646321152.000000,24148156.000000,325834812.000000
-278011768.000000,365453312.000000,1061298168.000000,6782976.000000,239.530000,269522362368.000000,532622512128.000000,18758639.000000,474007.000000,34551607.000000,54676403.000000,1347413004288.000000,1872646788096.000000,24148180.000000,325834854.000000
-680719760.000000,804544512.000000,1061298168.000000,8257536.000000,300.670000,269555970048.000000,532622512128.000000,18758639.000000,474007.000000,34552297.000000,54677272.000000,1347413004288.000000,1872719885312.000000,24148600.000000,325836010.000000
-237704392.000000,318758912.000000,1061298168.000000,6717440.000000,311.510000,269543026688.000000,532622512128.000000,18758639.000000,474007.000000,34552655.000000,54677726.000000,1347413004288.000000,1872757916672.000000,24148836.000000,325836644.000000
-238808392.000000,319815680.000000,1061298168.000000,6717440.000000,311.570000,269543026688.000000,532622512128.000000,18758639.000000,474007.000000,34552699.000000,54677809.000000,1347413004288.000000,1872758555648.000000,24148860.000000,325836694.000000
-239967528.000000,320921600.000000,1061298168.000000,6717440.000000,311.650000,269543026688.000000,532622512128.000000,18758639.000000,474007.000000,34552734.000000,54677852.000000,1347413004288.000000,1872758948864.000000,24148896.000000,325836722.000000
-605444184.000000,715800576.000000,1061560312.000000,6782976.000000,368.490000,269551984640.000000,532622512128.000000,18758639.000000,474007.000000,34553632.000000,54679635.000000,1347413004288.000000,1872835916800.000000,24149660.000000,325838051.000000
-362007376.000000,456785920.000000,1061560312.000000,7667712.000000,385.120000,269591064576.000000,532622512128.000000,18758639.000000,474007.000000,34554242.000000,54680359.000000,1347413004288.000000,1872902644736.000000,24150048.000000,325839136.000000
-363116240.000000,457949184.000000,1061560312.000000,7667712.000000,385.190000,269567676416.000000,532622512128.000000,18758639.000000,474007.000000,34554434.000000,54680502.000000,1347413004288.000000,1872914641920.000000,24150096.000000,325839336.000000
-364334176.000000,459137024.000000,1061560312.000000,7667712.000000,385.250000,269567680512.000000,532622512128.000000,18758639.000000,474007.000000,34554527.000000,54680555.000000,1347413004288.000000,1872915444736.000000,24150136.000000,325839408.000000
-636166016.000000,773201920.000000,1061560312.000000,8650752.000000,442.140000,269612089344.000000,532622512128.000000,18758639.000000,474007.000000,34554948.000000,54681139.000000,1347413004288.000000,1872954217472.000000,24150420.000000,325840066.000000
-218348416.000000,363757568.000000,1061560312.000000,7569408.000000,457.560000,269591130112.000000,532622512128.000000,18758639.000000,474007.000000,34555689.000000,54681940.000000,1347413004288.000000,1873038513152.000000,24150852.000000,325841633.000000
-219392880.000000,364871680.000000,1061560312.000000,7569408.000000,457.620000,269591134208.000000,532622512128.000000,18758639.000000,474007.000000,34555705.000000,54681983.000000,1347413004288.000000,1873038877696.000000,24150880.000000,325841655.000000
-219719504.000000,365092864.000000,1061560312.000000,7569408.000000,457.690000,269591134208.000000,532622512128.000000,18758639.000000,474007.000000,34555773.000000,54682060.000000,1347413004288.000000,1873039705088.000000,24150912.000000,325841716.000000
-574795360.000000,759578624.000000,1137912840.000000,9043968.000000,517.360000,269609394176.000000,532622512128.000000,18758639.000000,474007.000000,34556597.000000,54683334.000000,1347413004288.000000,1873106945024.000000,24151400.000000,325842869.000000
-260263880.000000,362299392.000000,1142434824.000000,6193152.000000,534.870000,269566500864.000000,532622512128.000000,18758639.000000,474007.000000,34557503.000000,54684346.000000,1347413004288.000000,1873230140416.000000,24151908.000000,325845174.000000
-261310856.000000,363552768.000000,1142434824.000000,6193152.000000,534.930000,269566500864.000000,532622512128.000000,18758639.000000,474007.000000,34557713.000000,54684455.000000,1347413004288.000000,1873231537152.000000,24151944.000000,325845317.000000
-262441464.000000,364822528.000000,1142434824.000000,6193152.000000,534.990000,269566504960.000000,532622512128.000000,18758639.000000,474007.000000,34557736.000000,54684492.000000,1347413004288.000000,1873231905792.000000,24151976.000000,325845340.000000
-852971872.000000,962420736.000000,1159736328.000000,9961472.000000,594.880000,269599420416.000000,532622512128.000000,18758639.000000,474007.000000,34558230.000000,54685069.000000,1347413004288.000000,1873290458112.000000,24152364.000000,325846306.000000
-562172824.000000,653303808.000000,1159736328.000000,10027008.000000,607.090000,269593329664.000000,532622512128.000000,18758639.000000,474007.000000,34558925.000000,54685907.000000,1347413004288.000000,1873356063744.000000,24152712.000000,325847358.000000
-563348968.000000,654557184.000000,1159736328.000000,10027008.000000,607.150000,269593329664.000000,532622512128.000000,18758639.000000,474007.000000,34558971.000000,54685969.000000,1347413004288.000000,1873356649472.000000,24152744.000000,325847405.000000
-563773192.000000,654860288.000000,1159736328.000000,10027008.000000,607.210000,269593329664.000000,532622512128.000000,18758639.000000,474007.000000,34559001.000000,54686009.000000,1347413004288.000000,1873357112320.000000,24152768.000000,325847438.000000
-578075816.000000,772210688.000000,1159736328.000000,8814592.000000,666.870000,269595082752.000000,532622512128.000000,18758639.000000,474007.000000,34559647.000000,54686766.000000,1347413004288.000000,1873428706304.000000,24153160.000000,325848743.000000
-314315608.000000,440467456.000000,1159736328.000000,8814592.000000,681.160000,269600399360.000000,532622512128.000000,18758639.000000,474007.000000,34560167.000000,54687344.000000,1347413004288.000000,1873489875968.000000,24153460.000000,325849768.000000
-315438328.000000,441573376.000000,1159736328.000000,8814592.000000,681.230000,269600399360.000000,532622512128.000000,18758639.000000,474007.000000,34560204.000000,54687401.000000,1347413004288.000000,1873490289664.000000,24153484.000000,325849805.000000
-316648704.000000,442736640.000000,1159736328.000000,8814592.000000,681.300000,269600403456.000000,532622512128.000000,18758639.000000,474007.000000,34560276.000000,54687435.000000,1347413004288.000000,1873490846720.000000,24153508.000000,325849858.000000
-718130672.000000,877682688.000000,1159736328.000000,10223616.000000,741.590000,269650493440.000000,532622512128.000000,18758639.000000,474007.000000,34560989.000000,54688283.000000,1347413004288.000000,1873565090816.000000,24153940.000000,325851138.000000
-574549576.000000,665747456.000000,1163930632.000000,9240576.000000,753.310000,269623820288.000000,532622512128.000000,18758639.000000,474007.000000,34561664.000000,54689088.000000,1347413004288.000000,1873625547776.000000,24154316.000000,325852246.000000
-575755496.000000,666836992.000000,1163930632.000000,9240576.000000,753.370000,269623832576.000000,532622512128.000000,18758639.000000,474007.000000,34561709.000000,54689107.000000,1347413004288.000000,1873625863168.000000,24154352.000000,325852282.000000
-576935416.000000,668106752.000000,1163930632.000000,9240576.000000,753.430000,269623840768.000000,532622512128.000000,18758639.000000,474007.000000,34561796.000000,54689210.000000,1347413004288.000000,1873626743808.000000,24154380.000000,325852357.000000
-579157328.000000,780640256.000000,1193621528.000000,10682368.000000,813.520000,269639991296.000000,532622512128.000000,18758639.000000,474007.000000,34562321.000000,54689932.000000,1347413004288.000000,1873689334784.000000,24154764.000000,325853346.000000
-405406184.000000,574406656.000000,1193818136.000000,9142272.000000,824.660000,269650558976.000000,532622512128.000000,18758643.000000,474016.000000,34562900.000000,54690564.000000,1347413057536.000000,1873750606848.000000,24155112.000000,325854410.000000
-406480008.000000,575381504.000000,1193818136.000000,9142272.000000,824.710000,269650558976.000000,532622512128.000000,18758643.000000,474016.000000,34562965.000000,54690668.000000,1347413057536.000000,1873751364608.000000,24155140.000000,325854468.000000
-407681528.000000,576471040.000000,1193818136.000000,9175040.000000,824.770000,269650563072.000000,532622512128.000000,18758648.000000,474016.000000,34563073.000000,54690718.000000,1347413413888.000000,1873752318976.000000,24155204.000000,325854576.000000
-731055768.000000,900923392.000000,1218983960.000000,10551296.000000,882.040000,269683150848.000000,532622512128.000000,18758648.000000,474016.000000,34563601.000000,54691397.000000,1347413413888.000000,1873801430016.000000,24155528.000000,325855388.000000
-303213920.000000,481206272.000000,1271153704.000000,8519680.000000,897.680000,269665996800.000000,532622512128.000000,18758648.000000,474016.000000,34564528.000000,54692459.000000,1347413413888.000000,1873900053504.000000,24156004.000000,325857093.000000
-304284168.000000,482304000.000000,1271153704.000000,8519680.000000,897.750000,269665996800.000000,532622512128.000000,18758648.000000,474016.000000,34564567.000000,54692508.000000,1347413413888.000000,1873900426240.000000,24156024.000000,325857134.000000
-305438440.000000,483540992.000000,1271153704.000000,8519680.000000,897.820000,269665996800.000000,532622512128.000000,18758648.000000,474016.000000,34564594.000000,54692546.000000,1347413413888.000000,1873900901376.000000,24156056.000000,325857160.000000
-1039274072.000000,1138180096.000000,1271153704.000000,11632640.000000,955.670000,269698936832.000000,532622512128.000000,18758648.000000,474016.000000,34565079.000000,54693185.000000,1347413413888.000000,1873957024768.000000,24156400.000000,325858110.000000
-772077424.000000,880394240.000000,1271153704.000000,12091392.000000,974.310000,269637754880.000000,532622512128.000000,18758648.000000,474016.000000,34566127.000000,54694203.000000,1347413413888.000000,1874079736832.000000,24156868.000000,325860882.000000
-773315440.000000,881680384.000000,1271153704.000000,12091392.000000,974.370000,269637746688.000000,532622512128.000000,18758648.000000,474016.000000,34566141.000000,54694234.000000,1347413413888.000000,1874080064512.000000,24156896.000000,325860897.000000
-773683024.000000,882040832.000000,1271153704.000000,12091392.000000,974.430000,269637746688.000000,532622512128.000000,18758648.000000,474016.000000,34566212.000000,54694314.000000,1347413413888.000000,1874080928768.000000,24156920.000000,325860960.000000
-1018739152.000000,1118535680.000000,1271153704.000000,11960320.000000,1034.590000,269679149056.000000,532622512128.000000,18758648.000000,474016.000000,34566762.000000,54695036.000000,1347413413888.000000,1874140099584.000000,24157292.000000,325861950.000000
-366972624.000000,544022528.000000,1271153704.000000,10878976.000000,1045.610000,269668442112.000000,532622512128.000000,18758648.000000,474016.000000,34567197.000000,54695587.000000,1347413413888.000000,1874184578048.000000,24157560.000000,325862585.000000
-368118440.000000,545038336.000000,1271153704.000000,10878976.000000,1045.670000,269668442112.000000,532622512128.000000,18758648.000000,474016.000000,34567238.000000,54695661.000000,1347413413888.000000,1874185126912.000000,24157584.000000,325862633.000000
-369224952.000000,546037760.000000,1271153704.000000,10878976.000000,1045.730000,269668442112.000000,532622512128.000000,18758648.000000,474016.000000,34567280.000000,54695709.000000,1347413413888.000000,1874185802752.000000,24157612.000000,325862675.000000
-1035080960.000000,1132691456.000000,1271153704.000000,13107200.000000,1102.360000,269702070272.000000,532622512128.000000,18758648.000000,474016.000000,34568222.000000,54697583.000000,1347413413888.000000,1874263069696.000000,24158396.000000,325864014.000000
-803081200.000000,900685824.000000,1377914936.000000,12910592.000000,1117.760000,269688258560.000000,532622512128.000000,18758648.000000,474016.000000,34569023.000000,54698260.000000,1347413413888.000000,1874335245312.000000,24158716.000000,325865391.000000
-804383808.000000,901947392.000000,1377914936.000000,12943360.000000,1117.830000,269688262656.000000,532622512128.000000,18758648.000000,474016.000000,34569079.000000,54698296.000000,1347413413888.000000,1874346267648.000000,24158764.000000,325865512.000000
-805642736.000000,903176192.000000,1377914936.000000,12943360.000000,1117.890000,269688262656.000000,532622512128.000000,18758648.000000,474016.000000,34569122.000000,54698343.000000,1347413413888.000000,1874346714112.000000,24158792.000000,325865553.000000
-1013015976.000000,1127170048.000000,1377914936.000000,13369344.000000,1176.520000,269720039424.000000,532622512128.000000,18758648.000000,474016.000000,34569732.000000,54699234.000000,1347413413888.000000,1874398737408.000000,24159204.000000,325866426.000000
-375647136.000000,558006272.000000,1377914936.000000,10682368.000000,1189.920000,269713842176.000000,532622512128.000000,18758648.000000,474016.000000,34570400.000000,54699952.000000,1347413413888.000000,1874474435584.000000,24159572.000000,325867625.000000
-376813168.000000,559013888.000000,1377914936.000000,10682368.000000,1189.990000,269713842176.000000,532622512128.000000,18758648.000000,474016.000000,34570451.000000,54700002.000000,1347413413888.000000,1874474984448.000000,24159600.000000,325867671.000000
-377914640.000000,560021504.000000,1377914936.000000,10682368.000000,1190.060000,269713846272.000000,532622512128.000000,18758648.000000,474016.000000,34570479.000000,54700039.000000,1347413413888.000000,1874475357184.000000,24159620.000000,325867696.000000
-1031916200.000000,1134051328.000000,1403411528.000000,12779520.000000,1248.920000,269764222976.000000,532622512128.000000,18758648.000000,474016.000000,34571015.000000,54700679.000000,1347413413888.000000,1874537120768.000000,24159960.000000,325868710.000000
-654099728.000000,766763008.000000,1403411528.000000,13762560.000000,1259.560000,269750325248.000000,532622512128.000000,18758648.000000,474016.000000,34571403.000000,54701136.000000,1347413413888.000000,1874577495040.000000,24160196.000000,325869419.000000
-655306736.000000,767975424.000000,1403411528.000000,13762560.000000,1259.630000,269750325248.000000,532622512128.000000,18758648.000000,474016.000000,34571426.000000,54701173.000000,1347413413888.000000,1874577859584.000000,24160224.000000,325869447.000000
-656468472.000000,769130496.000000,1403411528.000000,13762560.000000,1259.690000,269750333440.000000,532622512128.000000,18758648.000000,474016.000000,34571466.000000,54701219.000000,1347413413888.000000,1874578211840.000000,24160252.000000,325869481.000000
-881744928.000000,1026383872.000000,1403411528.000000,14188544.000000,1317.950000,269782487040.000000,532622512128.000000,18758648.000000,474016.000000,34572372.000000,54702335.000000,1347413413888.000000,1874659038208.000000,24160736.000000,325870810.000000
-369329672.000000,587595776.000000,1403411528.000000,12025856.000000,1331.360000,269765681152.000000,532622512128.000000,18758648.000000,474016.000000,34572913.000000,54703062.000000,1347413413888.000000,1874715735040.000000,24161100.000000,325871719.000000
-370403048.000000,588611584.000000,1403411528.000000,12025856.000000,1331.430000,269765681152.000000,532622512128.000000,18758648.000000,474016.000000,34572950.000000,54703110.000000,1347413413888.000000,1874716103680.000000,24161116.000000,325871762.000000
-371503824.000000,589750272.000000,1403411528.000000,12025856.000000,1331.480000,269765685248.000000,532622512128.000000,18758648.000000,474016.000000,34572974.000000,54703152.000000,1347413413888.000000,1874716550144.000000,24161144.000000,325871788.000000
-1034189040.000000,1147084800.000000,1403411528.000000,14057472.000000,1389.810000,269799989248.000000,532622512128.000000,18758648.000000,474016.000000,34573540.000000,54703771.000000,1347413413888.000000,1874781357056.000000,24161488.000000,325873035.000000
-606460192.000000,766631936.000000,1403411528.000000,12943360.000000,1403.800000,269783117824.000000,532622512128.000000,18758648.000000,474016.000000,34574348.000000,54704617.000000,1347413413888.000000,1874872427520.000000,24161948.000000,325874745.000000
-607599152.000000,767696896.000000,1403411528.000000,12943360.000000,1403.860000,269783121920.000000,532622512128.000000,18758648.000000,474016.000000,34574396.000000,54704678.000000,1347413413888.000000,1874872988672.000000,24161972.000000,325874789.000000
-608792848.000000,768786432.000000,1403411528.000000,12976128.000000,1403.930000,269783121920.000000,532622512128.000000,18758648.000000,474016.000000,34574419.000000,54704711.000000,1347413413888.000000,1874873271296.000000,24162000.000000,325874812.000000
-730223712.000000,946741248.000000,1403411528.000000,13893632.000000,1468.300000,269763469312.000000,532622512128.000000,18758648.000000,474016.000000,34575181.000000,54705462.000000,1347413413888.000000,1874975564800.000000,24162480.000000,325876525.000000
-750518952.000000,891043840.000000,1403477064.000000,14942208.000000,1478.510000,269767426048.000000,532622512128.000000,18758648.000000,474016.000000,34575575.000000,54705886.000000,1347413413888.000000,1875016111104.000000,24162728.000000,325877179.000000
-751709064.000000,892272640.000000,1403477064.000000,14942208.000000,1478.580000,269767426048.000000,532622512128.000000,18758648.000000,474016.000000,34575592.000000,54705917.000000,1347413413888.000000,1875016377344.000000,24162760.000000,325877200.000000
-753052136.000000,893485056.000000,1403477064.000000,14974976.000000,1478.640000,269767430144.000000,532622512128.000000,18758648.000000,474016.000000,34575620.000000,54705964.000000,1347413413888.000000,1875016741888.000000,24162776.000000,325877229.000000
-1323930744.000000,1392549888.000000,1458333784.000000,17661952.000000,1537.260000,269801914368.000000,532622512128.000000,18758648.000000,474016.000000,34576261.000000,54706710.000000,1347413413888.000000,1875088446464.000000,24163168.000000,325878430.000000
-408330880.000000,642899968.000000,1467443288.000000,13238272.000000,1552.500000,269772861440.000000,532622512128.000000,18758648.000000,474016.000000,34577151.000000,54707715.000000,1347413413888.000000,1875181741056.000000,24163620.000000,325880238.000000
-409367920.000000,643883008.000000,1467443288.000000,13238272.000000,1552.560000,269772873728.000000,532622512128.000000,18758648.000000,474016.000000,34577167.000000,54707763.000000,1347413413888.000000,1875182105600.000000,24163644.000000,325880256.000000
-410523152.000000,644939776.000000,1467443288.000000,13238272.000000,1552.620000,270485299200.000000,532622512128.000000,18758648.000000,474016.000000,34578056.000000,54708039.000000,1347413413888.000000,1875386762240.000000,24164032.000000,325886745.000000
-823192568.000000,1061011456.000000,1467705432.000000,15892480.000000,1611.240000,271594778624.000000,532622512128.000000,18758648.000000,474016.000000,34578518.000000,54708951.000000,1347413413888.000000,1875445040128.000000,24164404.000000,325887686.000000
-485950864.000000,696492032.000000,1467705432.000000,13697024.000000,1624.120000,271728349184.000000,532622512128.000000,18758648.000000,474016.000000,34581805.000000,54710072.000000,1347413413888.000000,1876137980928.000000,24165932.000000,325929369.000000
-487063008.000000,697499648.000000,1467705432.000000,13697024.000000,1624.190000,271728365568.000000,532622512128.000000,18758648.000000,474016.000000,34585210.000000,54710166.000000,1347413413888.000000,1877009667072.000000,24167612.000000,325983991.000000
-488189168.000000,698572800.000000,1467705432.000000,13697024.000000,1624.250000,271728365568.000000,532622512128.000000,18758649.000000,474016.000000,34586173.000000,54710259.000000,1347413544960.000000,1877247869952.000000,24168084.000000,325992996.000000
-1059214704.000000,1243299840.000000,1621459064.000000,15728640.000000,1684.570000,271761125376.000000,532622512128.000000,18758650.000000,474016.000000,34586756.000000,54710987.000000,1347413676032.000000,1877310219264.000000,24168468.000000,325994075.000000
-655908256.000000,905691136.000000,1622179960.000000,12124160.000000,1702.120000,271606738944.000000,532622512128.000000,18758650.000000,474016.000000,34587500.000000,54711603.000000,1347413676032.000000,1877406954496.000000,24168856.000000,325995707.000000
-656937488.000000,906936320.000000,1622179960.000000,12124160.000000,1702.190000,271606747136.000000,532622512128.000000,18758650.000000,474016.000000,34587557.000000,54711720.000000,1347413676032.000000,1877407822848.000000,24168888.000000,325995790.000000
-657225056.000000,907386880.000000,1622179960.000000,12124160.000000,1702.260000,271606747136.000000,532622512128.000000,18758650.000000,474016.000000,34587574.000000,54711766.000000,1347413676032.000000,1877408130048.000000,24168916.000000,325995806.000000
-1038630872.000000,1260421120.000000,1622179960.000000,15597568.000000,1759.760000,271637872640.000000,532622512128.000000,18758650.000000,474016.000000,34588131.000000,54712490.000000,1347413676032.000000,1877456503808.000000,24169256.000000,325996653.000000
-863980096.000000,994066432.000000,1622179960.000000,16613376.000000,1773.010000,271635783680.000000,532622512128.000000,18758650.000000,474016.000000,34588901.000000,54713458.000000,1347413676032.000000,1877529682944.000000,24169688.000000,325997805.000000
-865271576.000000,995246080.000000,1622179960.000000,16613376.000000,1773.060000,271635783680.000000,532622512128.000000,18758650.000000,474016.000000,34588966.000000,54713533.000000,1347413676032.000000,1877530280960.000000,24169720.000000,325997859.000000
-866381960.000000,996524032.000000,1622179960.000000,16613376.000000,1773.120000,271635791872.000000,532622512128.000000,18758650.000000,474016.000000,34589011.000000,54713592.000000,1347413676032.000000,1877530788864.000000,24169748.000000,325997902.000000
-1116598320.000000,1269948416.000000,1622179960.000000,17072128.000000,1833.260000,271650172928.000000,532622512128.000000,18758650.000000,474016.000000,34589743.000000,54715055.000000,1347413676032.000000,1877609399296.000000,24170400.000000,325999308.000000
-894538872.000000,1055662080.000000,1622179960.000000,17006592.000000,1845.480000,271661309952.000000,532622512128.000000,18758665.000000,474016.000000,34590302.000000,54715901.000000,1347413905408.000000,1877662983168.000000,24170816.000000,326000112.000000
-895855184.000000,1056899072.000000,1622179960.000000,17039360.000000,1845.550000,271661314048.000000,532622512128.000000,18758665.000000,474016.000000,34590519.000000,54716029.000000,1347413905408.000000,1877675013120.000000,24170868.000000,326000348.000000
-897165920.000000,1058201600.000000,1622179960.000000,17039360.000000,1845.620000,271661322240.000000,532622512128.000000,18758675.000000,474017.000000,34590597.000000,54716082.000000,1347414077440.000000,1877675594752.000000,24170916.000000,326000407.000000
-1157684640.000000,1300848640.000000,1672580232.000000,16908288.000000,1907.320000,271692546048.000000,532622512128.000000,18758675.000000,474017.000000,34591565.000000,54717249.000000,1347414077440.000000,1877763642368.000000,24171456.000000,326001996.000000
-721519904.000000,881025024.000000,1672580232.000000,16973824.000000,1917.250000,271684186112.000000,532622512128.000000,18758675.000000,474017.000000,34591908.000000,54717721.000000,1347414077440.000000,1877800440832.000000,24171700.000000,326002627.000000
-722706896.000000,882253824.000000,1672580232.000000,16973824.000000,1917.320000,271684075520.000000,532622512128.000000,18758677.000000,474017.000000,34592063.000000,54717833.000000,1347414085632.000000,1877801735168.000000,24171744.000000,326002753.000000
-723931344.000000,883507200.000000,1672580232.000000,16973824.000000,1917.390000,271684079616.000000,532622512128.000000,18758677.000000,474017.000000,34592179.000000,54717890.000000,1347414085632.000000,1877802591232.000000,24171776.000000,326002841.000000
-1071592408.000000,1279434752.000000,1695160200.000000,17301504.000000,1978.390000,271736532992.000000,532622512128.000000,18758677.000000,474017.000000,34592792.000000,54718602.000000,1347414085632.000000,1877862171648.000000,24172116.000000,326003825.000000
-695622096.000000,886824960.000000,1729763208.000000,16318464.000000,1996.930000,271624216576.000000,532622512128.000000,18758677.000000,474017.000000,34593747.000000,54719463.000000,1347414085632.000000,1877981606912.000000,24172588.000000,326005833.000000
-696770624.000000,887848960.000000,1729763208.000000,16318464.000000,1997.000000,271624216576.000000,532622512128.000000,18758677.000000,474017.000000,34593842.000000,54719562.000000,1347414085632.000000,1877982598144.000000,24172616.000000,326005912.000000
-697963632.000000,889004032.000000,1729763208.000000,16318464.000000,1997.060000,271624335360.000000,532622512128.000000,18758677.000000,474017.000000,34593946.000000,54719652.000000,1347414085632.000000,1877983470592.000000,24172652.000000,326005992.000000
-1151475400.000000,1317797888.000000,1729763208.000000,17793024.000000,2056.680000,271644602368.000000,532622512128.000000,18758677.000000,474017.000000,34594618.000000,54720637.000000,1347414085632.000000,1878046954496.000000,24173100.000000,326007054.000000
-616323824.000000,861667328.000000,1730090888.000000,16744448.000000,2067.260000,271650230272.000000,532622512128.000000,18758677.000000,474017.000000,34595056.000000,54721172.000000,1347414085632.000000,1878090003456.000000,24173376.000000,326007776.000000
-617433024.000000,862699520.000000,1730090888.000000,16744448.000000,2067.320000,271650238464.000000,532622512128.000000,18758677.000000,474017.000000,34595121.000000,54721269.000000,1347414085632.000000,1878090847232.000000,24173412.000000,326007840.000000
-617845952.000000,862896128.000000,1730090888.000000,16744448.000000,2067.380000,271650238464.000000,532622512128.000000,18758677.000000,474017.000000,34595318.000000,54721326.000000,1347414085632.000000,1878092043264.000000,24173452.000000,326007974.000000
-1325307888.000000,1475993600.000000,1784947608.000000,18153472.000000,2127.690000,271700029440.000000,532622512128.000000,18758677.000000,474017.000000,34595930.000000,54722102.000000,1347414085632.000000,1878156219392.000000,24173852.000000,326009085.000000
-964567264.000000,1119567872.000000,1823027112.000000,18710528.000000,2150.300000,271562907648.000000,532622512128.000000,18758677.000000,474017.000000,34596946.000000,54722933.000000,1347414085632.000000,1878297613312.000000,24174356.000000,326012844.000000
-965828720.000000,1120731136.000000,1823027112.000000,18710528.000000,2150.360000,271561428992.000000,532622512128.000000,18758677.000000,474017.000000,34596998.000000,54723029.000000,1347414085632.000000,1878298326016.000000,24174392.000000,326012906.000000
-967148728.000000,1121951744.000000,1823027112.000000,18710528.000000,2150.430000,271561433088.000000,532622512128.000000,18758677.000000,474017.000000,34597073.000000,54723085.000000,1347414085632.000000,1878299010048.000000,24174420.000000,326012969.000000
-788305272.000000,1172135936.000000,1823027112.000000,18055168.000000,2210.140000,271581515776.000000,532622512128.000000,18758677.000000,474017.000000,34597830.000000,54724084.000000,1347414085632.000000,1878372348928.000000,24174888.000000,326014130.000000
-1059929552.000000,1191215104.000000,1823616936.000000,19136512.000000,2220.720000,271589523456.000000,532622512128.000000,18758677.000000,474017.000000,34598260.000000,54724641.000000,1347414085632.000000,1878420624384.000000,24175164.000000,326014926.000000
-1061186992.000000,1192443904.000000,1823616936.000000,19136512.000000,2220.790000,271589527552.000000,532622512128.000000,18758677.000000,474017.000000,34598370.000000,54724738.000000,1347414085632.000000,1878421677056.000000,24175204.000000,326015019.000000
-1062540688.000000,1193828352.000000,1823616936.000000,19136512.000000,2220.850000,271589527552.000000,532622512128.000000,18758677.000000,474017.000000,34598423.000000,54724803.000000,1347414085632.000000,1878422344704.000000,24175232.000000,326015072.000000
-1327712152.000000,1474674688.000000,1823616936.000000,19496960.000000,2281.740000,271601229824.000000,532622512128.000000,18758678.000000,474017.000000,34599336.000000,54725921.000000,1347414089728.000000,1878502294528.000000,24175764.000000,326016470.000000
-1074771448.000000,1217126400.000000,1823616936.000000,19529728.000000,2291.220000,271613546496.000000,532622512128.000000,18758678.000000,474017.000000,34599777.000000,54726505.000000,1347414089728.000000,1878543995904.000000,24176064.000000,326017191.000000
-1076094008.000000,1218428928.000000,1823616936.000000,19529728.000000,2291.280000,271613546496.000000,532622512128.000000,18758678.000000,474017.000000,34599897.000000,54726576.000000,1347414089728.000000,1878544856064.000000,24176096.000000,326017282.000000
-1076449496.000000,1218707456.000000,1823616936.000000,19529728.000000,2291.350000,271613550592.000000,532622512128.000000,18758678.000000,474017.000000,34600104.000000,54726652.000000,1347414089728.000000,1878546338816.000000,24176136.000000,326017429.000000
-1412122656.000000,1539866624.000000,1823616936.000000,19988480.000000,2349.930000,271646502912.000000,532622512128.000000,18758678.000000,474017.000000,34600868.000000,54727563.000000,1347414089728.000000,1878620517376.000000,24176608.000000,326018721.000000
-1019495800.000000,1164550144.000000,1823616936.000000,19955712.000000,2362.270000,271634419712.000000,532622512128.000000,18758678.000000,474017.000000,34601386.000000,54728183.000000,1347414089728.000000,1878681113600.000000,24176904.000000,326019754.000000
-1020653368.000000,1165901824.000000,1823616936.000000,19955712.000000,2362.330000,271634423808.000000,532622512128.000000,18758678.000000,474017.000000,34601498.000000,54728259.000000,1347414089728.000000,1878682149888.000000,24176944.000000,326019849.000000
-1021028104.000000,1166311424.000000,1823616936.000000,19955712.000000,2362.390000,271634427904.000000,532622512128.000000,18758678.000000,474017.000000,34601525.000000,54728299.000000,1347414089728.000000,1878682424320.000000,24176964.000000,326019872.000000
-1484576920.000000,1601069056.000000,1823616936.000000,19922944.000000,2421.700000,271665766400.000000,532622512128.000000,18758678.000000,474017.000000,34602233.000000,54729134.000000,1347414089728.000000,1878751007744.000000,24177384.000000,326021029.000000
-862716656.000000,1076838400.000000,1823616936.000000,19890176.000000,2433.280000,271659827200.000000,532622512128.000000,18758678.000000,474017.000000,34602741.000000,54729673.000000,1347414089728.000000,1878809678848.000000,24177680.000000,326022038.000000
-863921568.000000,1077919744.000000,1823616936.000000,19890176.000000,2433.330000,271659831296.000000,532622512128.000000,18758678.000000,474017.000000,34602785.000000,54729758.000000,1347414089728.000000,1878810342400.000000,24177708.000000,326022085.000000
-864335472.000000,1078190080.000000,1823616936.000000,19890176.000000,2433.390000,271659839488.000000,532622512128.000000,18758678.000000,474017.000000,34602968.000000,54729799.000000,1347414089728.000000,1878811415552.000000,24177752.000000,326022206.000000
-1426989920.000000,1547386880.000000,1823616936.000000,20905984.000000,2490.550000,271686361088.000000,532622512128.000000,18758678.000000,474017.000000,34603604.000000,54730604.000000,1347414089728.000000,1878867883008.000000,24178144.000000,326023172.000000
-932222640.000000,1114046464.000000,1836658600.000000,19693568.000000,2503.260000,271689728000.000000,532622512128.000000,18758678.000000,474017.000000,34604127.000000,54731265.000000,1347414089728.000000,1878925784064.000000,24178460.000000,326024169.000000
-933306464.000000,1115299840.000000,1836658600.000000,19693568.000000,2503.310000,271689732096.000000,532622512128.000000,18758678.000000,474017.000000,34604287.000000,54731326.000000,1347414089728.000000,1878926763008.000000,24178488.000000,326024285.000000
-934482592.000000,1116438528.000000,1836658600.000000,19693568.000000,2503.380000,271689732096.000000,532622512128.000000,18758678.000000,474017.000000,34604357.000000,54731378.000000,1347414089728.000000,1878927406080.000000,24178520.000000,326024349.000000
-1465200136.000000,1592557568.000000,1895447480.000000,21299200.000000,2566.450000,271682347008.000000,532622512128.000000,18758678.000000,474017.000000,34605558.000000,54733422.000000,1347414089728.000000,1879056544768.000000,24179444.000000,326026744.000000
-1045076056.000000,1199702016.000000,1895447480.000000,21200896.000000,2579.160000,271676579840.000000,532622512128.000000,18758678.000000,474017.000000,34606305.000000,54734222.000000,1347414089728.000000,1879110263808.000000,24179812.000000,326027861.000000
-1046384072.000000,1200955392.000000,1895447480.000000,21200896.000000,2579.220000,271675162624.000000,532622512128.000000,18758678.000000,474017.000000,34606365.000000,54734271.000000,1347414089728.000000,1879121351680.000000,24179852.000000,326027977.000000
-1047659672.000000,1202192384.000000,1895447480.000000,21200896.000000,2579.280000,271675162624.000000,532622512128.000000,18758678.000000,474017.000000,34606545.000000,54734349.000000,1347414089728.000000,1879122621440.000000,24179892.000000,326028100.000000
-1494992208.000000,1631133696.000000,1895447480.000000,21168128.000000,2641.420000,271663411200.000000,532622512128.000000,18758678.000000,474017.000000,34607331.000000,54735044.000000,1347414089728.000000,1879224275968.000000,24180356.000000,326029798.000000
-967626200.000000,1159651328.000000,1895447480.000000,21626880.000000,2653.530000,271668613120.000000,532622512128.000000,18758678.000000,474017.000000,34607926.000000,54735765.000000,1347414089728.000000,1879279649792.000000,24180708.000000,326030725.000000
-968866768.000000,1160814592.000000,1895447480.000000,21626880.000000,2653.600000,271668613120.000000,532622512128.000000,18758678.000000,474017.000000,34608085.000000,54735851.000000,1347414089728.000000,1879280886784.000000,24180748.000000,326030839.000000
-970075976.000000,1161895936.000000,1895447480.000000,21626880.000000,2653.660000,271668617216.000000,532622512128.000000,18758678.000000,474017.000000,34608262.000000,54735919.000000,1347414089728.000000,1879282103296.000000,24180788.000000,326030958.000000
-1258129248.000000,1523466240.000000,1895709624.000000,20938752.000000,2714.010000,271707873280.000000,532622512128.000000,18758678.000000,474017.000000,34609017.000000,54736857.000000,1347414089728.000000,1879360054272.000000,24181268.000000,326032313.000000
-1145446784.000000,1317576704.000000,1896037304.000000,22052864.000000,2722.990000,271690555392.000000,532622512128.000000,18758683.000000,474017.000000,34609436.000000,54737495.000000,1347414171648.000000,1879398192128.000000,24181576.000000,326033032.000000
-1146833560.000000,1318985728.000000,1896037304.000000,22052864.000000,2723.040000,271689842688.000000,532622512128.000000,18768647.000000,475731.000000,34609691.000000,54737909.000000,1347462033408.000000,1879401112576.000000,24186244.000000,326035570.000000
-1147245176.000000,1319362560.000000,1896037304.000000,22052864.000000,2723.100000,271689854976.000000,532622512128.000000,18773834.000000,476136.000000,34610013.000000,54741633.000000,1347484938240.000000,1879417713664.000000,24188752.000000,326037141.000000
-1563631000.000000,1604780032.000000,1896037304.000000,21692416.000000,2776.430000,271720153088.000000,532622512128.000000,18785410.000000,476203.000000,34611270.000000,54745891.000000,1347743088640.000000,1879502025728.000000,24190728.000000,326043153.000000
-603954560.000000,973307904.000000,1921792952.000000,20840448.000000,2794.070000,271716995072.000000,532622512128.000000,18785410.000000,476203.000000,34611914.000000,54746616.000000,1347743088640.000000,1879581500416.000000,24191120.000000,326044383.000000
-605004352.000000,974274560.000000,1921792952.000000,20840448.000000,2794.130000,271716995072.000000,532622512128.000000,18785410.000000,476203.000000,34612472.000000,54747540.000000,1347743088640.000000,1879587591168.000000,24191180.000000,326044788.000000
-606072104.000000,975462400.000000,1921792952.000000,20840448.000000,2794.190000,271717003264.000000,532622512128.000000,18785410.000000,476203.000000,34612595.000000,54747599.000000,1347743088640.000000,1879588508672.000000,24191220.000000,326044870.000000
-1148844088.000000,1382367232.000000,1921792952.000000,22315008.000000,2853.750000,271740059648.000000,532622512128.000000,18785410.000000,476203.000000,34613281.000000,54748340.000000,1347743088640.000000,1879650108416.000000,24191560.000000,326045946.000000
-1072355432.000000,1421639680.000000,1921792952.000000,18644992.000000,2873.850000,271612305408.000000,532622512128.000000,18785410.000000,476203.000000,34614236.000000,54749179.000000,1347743088640.000000,1879769138176.000000,24192020.000000,326047770.000000
-1073367512.000000,1422909440.000000,1921792952.000000,18644992.000000,2873.910000,271612305408.000000,532622512128.000000,18785410.000000,476203.000000,34614378.000000,54749290.000000,1347743088640.000000,1879770293248.000000,24192052.000000,326047898.000000
-1074488112.000000,1424187392.000000,1921792952.000000,18644992.000000,2873.960000,271612309504.000000,532622512128.000000,18785410.000000,476203.000000,34614493.000000,54749327.000000,1347743088640.000000,1879770997760.000000,24192088.000000,326047978.000000
+305855736.000000,328417280.000000,677992856.000000,5799936.000000,81.030000,314598531072.000000,532622512128.000000,19479256.000000,562851.000000,71599307.000000,123424074.000000,1369619356672.000000,2710871929856.000000,49022512.000000,364109771.000000
+253643696.000000,291848192.000000,678255000.000000,3997696.000000,136.900000,314643181568.000000,532622512128.000000,19479256.000000,562851.000000,71600117.000000,123424948.000000,1369619356672.000000,2710964245504.000000,49023032.000000,364111236.000000
+254710048.000000,293011456.000000,678255000.000000,3997696.000000,136.970000,314643189760.000000,532622512128.000000,19479256.000000,562851.000000,71600755.000000,123425610.000000,1369619356672.000000,2711033795584.000000,49023224.000000,364112532.000000
+255879192.000000,294207488.000000,678255000.000000,3997696.000000,137.040000,314643189760.000000,532622512128.000000,19479256.000000,562851.000000,71600792.000000,123425680.000000,1369619356672.000000,2711034364928.000000,49023252.000000,364112564.000000
+339392248.000000,357883904.000000,678255000.000000,6094848.000000,141.770000,314643197952.000000,532622512128.000000,19479256.000000,562851.000000,71600813.000000,123425691.000000,1369619356672.000000,2711034496000.000000,49023284.000000,364112583.000000
+219319848.000000,277151744.000000,759784872.000000,4325376.000000,211.010000,314665136128.000000,532622512128.000000,19479256.000000,562851.000000,71601860.000000,123426944.000000,1369619356672.000000,2711165113344.000000,49023964.000000,364115001.000000
+255773000.000000,299958272.000000,759784872.000000,5308416.000000,211.250000,314667843584.000000,532622512128.000000,19479256.000000,562851.000000,71601916.000000,123427058.000000,1369619356672.000000,2711168451584.000000,49024016.000000,364115053.000000
+256964024.000000,301228032.000000,759784872.000000,5308416.000000,211.310000,314667851776.000000,532622512128.000000,19479256.000000,562851.000000,71601968.000000,123427124.000000,1369619356672.000000,2711169041408.000000,49024052.000000,364115101.000000
+194574488.000000,270991360.000000,759784872.000000,3866624.000000,215.600000,314667851776.000000,532622512128.000000,19479256.000000,562851.000000,71601992.000000,123427158.000000,1369619356672.000000,2711169278976.000000,49024080.000000,364115124.000000
+374225056.000000,398573568.000000,768963000.000000,4718592.000000,281.670000,314718650368.000000,532622512128.000000,19479256.000000,562851.000000,71602926.000000,123428992.000000,1369619356672.000000,2711264330752.000000,49025020.000000,364116840.000000
+240959760.000000,284499968.000000,768963000.000000,5144576.000000,282.240000,314682363904.000000,532622512128.000000,19479256.000000,562851.000000,71603008.000000,123429121.000000,1369619356672.000000,2711271388160.000000,49025084.000000,364116950.000000
+242098304.000000,285908992.000000,768963000.000000,5144576.000000,282.300000,314682363904.000000,532622512128.000000,19479256.000000,562851.000000,71603267.000000,123429232.000000,1369619356672.000000,2711283655680.000000,49025136.000000,364117202.000000
+408027632.000000,429604864.000000,768963000.000000,5832704.000000,295.810000,314682372096.000000,532622512128.000000,19479256.000000,562851.000000,71603277.000000,123429260.000000,1369619356672.000000,2711283811328.000000,49025160.000000,364117211.000000
+302762976.000000,405700608.000000,841383368.000000,5341184.000000,355.340000,314688856064.000000,532622512128.000000,19479256.000000,562851.000000,71604261.000000,123430238.000000,1369619356672.000000,2711415743488.000000,49025720.000000,364119834.000000
+303820816.000000,406913024.000000,841383368.000000,5341184.000000,355.410000,314688856064.000000,532622512128.000000,19479256.000000,562851.000000,71604267.000000,123430252.000000,1369619356672.000000,2711415825408.000000,49025732.000000,364119838.000000
+304942192.000000,408166400.000000,841383368.000000,5341184.000000,355.480000,314688856064.000000,532622512128.000000,19479256.000000,562851.000000,71604333.000000,123430331.000000,1369619356672.000000,2711416722432.000000,49025756.000000,364119902.000000
+307280992.000000,353132544.000000,841383368.000000,6324224.000000,360.210000,314688860160.000000,532622512128.000000,19479256.000000,562851.000000,71604341.000000,123430336.000000,1369619356672.000000,2711416775680.000000,49025772.000000,364119909.000000
+276951840.000000,377872384.000000,841383368.000000,5439488.000000,425.580000,314734006272.000000,532622512128.000000,19479256.000000,562851.000000,71605006.000000,123431062.000000,1369619356672.000000,2711503111168.000000,49026172.000000,364121458.000000
+305161536.000000,404381696.000000,841383368.000000,5505024.000000,425.750000,314734567424.000000,532622512128.000000,19479256.000000,562851.000000,71605105.000000,123431218.000000,1369619356672.000000,2711506879488.000000,49026252.000000,364121533.000000
+306253904.000000,405716992.000000,841383368.000000,5537792.000000,425.830000,314734567424.000000,532622512128.000000,19479256.000000,562851.000000,71605161.000000,123431276.000000,1369619356672.000000,2711507444736.000000,49026284.000000,364121588.000000
+311480424.000000,369655808.000000,841383368.000000,6684672.000000,433.670000,314734567424.000000,532622512128.000000,19479256.000000,562851.000000,71605180.000000,123431305.000000,1369619356672.000000,2711507641344.000000,49026312.000000,364121607.000000
+355662328.000000,420216832.000000,871464392.000000,6946816.000000,499.790000,314761170944.000000,532622512128.000000,19479256.000000,562851.000000,71606250.000000,123432520.000000,1369619356672.000000,2711644345344.000000,49026968.000000,364124140.000000
+357481496.000000,421634048.000000,871464392.000000,7012352.000000,499.860000,314761285632.000000,532622512128.000000,19479256.000000,562851.000000,71606272.000000,123432572.000000,1369619356672.000000,2711644738560.000000,49026996.000000,364124154.000000
+358622664.000000,422887424.000000,871464392.000000,7012352.000000,499.930000,314761289728.000000,532622512128.000000,19479256.000000,562851.000000,71606322.000000,123432638.000000,1369619356672.000000,2711645307904.000000,49027024.000000,364124203.000000
+435911504.000000,463912960.000000,871464392.000000,7208960.000000,508.960000,314761293824.000000,532622512128.000000,19479256.000000,562851.000000,71606344.000000,123432648.000000,1369619356672.000000,2711645438976.000000,49027056.000000,364124221.000000
+462738048.000000,518053888.000000,889997768.000000,7503872.000000,571.800000,314756165632.000000,532622512128.000000,19479256.000000,562851.000000,71607147.000000,123433655.000000,1369619356672.000000,2711740048384.000000,49027604.000000,364125827.000000
+463871216.000000,519503872.000000,889997768.000000,7503872.000000,571.870000,314756165632.000000,532622512128.000000,19479256.000000,562851.000000,71607151.000000,123433668.000000,1369619356672.000000,2711740118016.000000,49027616.000000,364125830.000000
+465032480.000000,520642560.000000,889997768.000000,7503872.000000,571.940000,314756165632.000000,532622512128.000000,19479256.000000,562851.000000,71607214.000000,123433752.000000,1369619356672.000000,2711740892160.000000,49027640.000000,364125897.000000
+519785024.000000,544251904.000000,889997768.000000,7110656.000000,583.620000,314756169728.000000,532622512128.000000,19479256.000000,562851.000000,71607229.000000,123433763.000000,1369619356672.000000,2711740998656.000000,49027664.000000,364125909.000000
+350615368.000000,428613632.000000,944723416.000000,7962624.000000,646.920000,314782023680.000000,532622512128.000000,19479256.000000,562851.000000,71608441.000000,123435261.000000,1369619356672.000000,2711882605568.000000,49028440.000000,364128509.000000
+351709736.000000,429875200.000000,944723416.000000,7962624.000000,646.990000,314782023680.000000,532622512128.000000,19479256.000000,562851.000000,71608445.000000,123435274.000000,1369619356672.000000,2711882675200.000000,49028452.000000,364128512.000000
+352884328.000000,431095808.000000,944723416.000000,7962624.000000,647.060000,314782023680.000000,532622512128.000000,19479256.000000,562851.000000,71608501.000000,123435357.000000,1369619356672.000000,2711883600896.000000,49028484.000000,364128578.000000
+448501768.000000,489857024.000000,944723416.000000,7012352.000000,659.190000,314782031872.000000,532622512128.000000,19479256.000000,562851.000000,71608517.000000,123435380.000000,1369619356672.000000,2711883760640.000000,49028504.000000,364128593.000000
+458298752.000000,541818880.000000,987783656.000000,8323072.000000,722.270000,314762813440.000000,532622512128.000000,19479256.000000,562851.000000,71609452.000000,123436209.000000,1369619356672.000000,2712031224832.000000,49029068.000000,364131885.000000
+459417648.000000,543014912.000000,987783656.000000,8323072.000000,722.330000,314762817536.000000,532622512128.000000,19479256.000000,562851.000000,71609458.000000,123436224.000000,1369619356672.000000,2712031310848.000000,49029084.000000,364131889.000000
+460575584.000000,544374784.000000,987783656.000000,8323072.000000,722.400000,314762817536.000000,532622512128.000000,19479256.000000,562851.000000,71609512.000000,123436306.000000,1369619356672.000000,2712032007168.000000,49029108.000000,364131941.000000
+578158120.000000,605192192.000000,987783656.000000,8486912.000000,736.330000,314762825728.000000,532622512128.000000,19479256.000000,562851.000000,71609535.000000,123436322.000000,1369619356672.000000,2712032166912.000000,49029140.000000,364131964.000000
+552250168.000000,624828416.000000,1021862376.000000,8224768.000000,799.190000,314747748352.000000,532622512128.000000,19479256.000000,562851.000000,71610854.000000,123437665.000000,1369619356672.000000,2712208659456.000000,49029900.000000,364135964.000000
+553382072.000000,626049024.000000,1021862376.000000,8224768.000000,799.260000,314747748352.000000,532622512128.000000,19479256.000000,562851.000000,71610861.000000,123437687.000000,1369619356672.000000,2712208798720.000000,49029924.000000,364135972.000000
+554508440.000000,627564544.000000,1021862376.000000,8224768.000000,799.330000,314747752448.000000,532622512128.000000,19479256.000000,562851.000000,71610916.000000,123437760.000000,1369619356672.000000,2712209437696.000000,49029960.000000,364136030.000000
+514697272.000000,558940160.000000,1021862376.000000,8912896.000000,812.500000,314747760640.000000,532622512128.000000,19479256.000000,562851.000000,71610933.000000,123437778.000000,1369619356672.000000,2712209581056.000000,49029984.000000,364136045.000000
+389808504.000000,480747520.000000,1022517736.000000,8650752.000000,871.590000,314797207552.000000,532622512128.000000,19479256.000000,562851.000000,71611848.000000,123438964.000000,1369619356672.000000,2712312013824.000000,49030612.000000,364137889.000000
+390936616.000000,481910784.000000,1022517736.000000,8650752.000000,871.660000,314797207552.000000,532622512128.000000,19479256.000000,562851.000000,71611854.000000,123438980.000000,1369619356672.000000,2712312103936.000000,49030628.000000,364137894.000000
+392095584.000000,483172352.000000,1022517736.000000,8650752.000000,871.730000,314797207552.000000,532622512128.000000,19479256.000000,562851.000000,71611908.000000,123439052.000000,1369619356672.000000,2712312816640.000000,49030660.000000,364137955.000000
+546401608.000000,587390976.000000,1022517736.000000,8617984.000000,876.640000,314797211648.000000,532622512128.000000,19479256.000000,562851.000000,71611941.000000,123439082.000000,1369619356672.000000,2712313074688.000000,49030692.000000,364137989.000000
+436601888.000000,549380096.000000,1052732920.000000,9601024.000000,945.160000,314793103360.000000,532622512128.000000,19479256.000000,562851.000000,71612937.000000,123440208.000000,1369619356672.000000,2712437945344.000000,49031300.000000,364140485.000000
+447374704.000000,557989888.000000,1052732920.000000,9601024.000000,945.280000,314793078784.000000,532622512128.000000,19479256.000000,562851.000000,71613011.000000,123440336.000000,1369619356672.000000,2712439690240.000000,49031348.000000,364140534.000000
+447780976.000000,558415872.000000,1052732920.000000,9601024.000000,945.340000,314793082880.000000,532622512128.000000,19479256.000000,562851.000000,71613207.000000,123440431.000000,1369619356672.000000,2712441156608.000000,49031396.000000,364140682.000000
+439056616.000000,532365312.000000,1052732920.000000,9994240.000000,952.170000,314793082880.000000,532622512128.000000,19479256.000000,562851.000000,71613213.000000,123440456.000000,1369619356672.000000,2712441283584.000000,49031408.000000,364140687.000000
+593982144.000000,640008192.000000,1065709048.000000,10125312.000000,1017.430000,314813480960.000000,532622512128.000000,19479256.000000,562851.000000,71614302.000000,123442591.000000,1369619356672.000000,2712549970944.000000,49032372.000000,364142543.000000
+601819248.000000,646660096.000000,1065709048.000000,10125312.000000,1017.540000,314814439424.000000,532622512128.000000,19479256.000000,562851.000000,71614477.000000,123442750.000000,1369619356672.000000,2712552166400.000000,49032432.000000,364142665.000000
+603089008.000000,647929856.000000,1065709048.000000,10125312.000000,1017.610000,314814439424.000000,532622512128.000000,19479256.000000,562851.000000,71614538.000000,123442785.000000,1369619356672.000000,2712563323904.000000,49032476.000000,364142791.000000
+528318200.000000,586022912.000000,1065709048.000000,9338880.000000,1023.740000,314814443520.000000,532622512128.000000,19479256.000000,562851.000000,71614649.000000,123442820.000000,1369619356672.000000,2712564065280.000000,49032508.000000,364142876.000000
+630398168.000000,702529536.000000,1151433224.000000,10452992.000000,1091.190000,314837487616.000000,532622512128.000000,19479256.000000,562851.000000,71615594.000000,123443822.000000,1369619356672.000000,2712689730560.000000,49033100.000000,364145217.000000
+631545448.000000,703791104.000000,1151433224.000000,10452992.000000,1091.260000,314837565440.000000,532622512128.000000,19479256.000000,562851.000000,71615605.000000,123443856.000000,1369619356672.000000,2712689914880.000000,49033116.000000,364145224.000000
+632730024.000000,705069056.000000,1151433224.000000,10452992.000000,1091.330000,314837565440.000000,532622512128.000000,19479256.000000,562851.000000,71615661.000000,123443922.000000,1369619356672.000000,2712690697216.000000,49033140.000000,364145279.000000
+649311792.000000,683393024.000000,1151433224.000000,10878976.000000,1099.050000,314837565440.000000,532622512128.000000,19479256.000000,562851.000000,71615678.000000,123443946.000000,1369619356672.000000,2712690865152.000000,49033164.000000,364145295.000000
+683288800.000000,720412672.000000,1151564296.000000,10911744.000000,1163.530000,314868514816.000000,532622512128.000000,19479256.000000,562851.000000,71616515.000000,123445064.000000,1369619356672.000000,2712786048000.000000,49033760.000000,364146992.000000
+684492936.000000,721551360.000000,1151564296.000000,10977280.000000,1163.600000,314868514816.000000,532622512128.000000,19479256.000000,562851.000000,71616547.000000,123445118.000000,1369619356672.000000,2712786420736.000000,49033780.000000,364147026.000000
+685791256.000000,722837504.000000,1151564296.000000,10977280.000000,1163.670000,314868518912.000000,532622512128.000000,19479256.000000,562851.000000,71616579.000000,123445152.000000,1369619356672.000000,2712786781184.000000,49033808.000000,364147057.000000
+627911368.000000,679247872.000000,1151564296.000000,11206656.000000,1174.060000,314868506624.000000,532622512128.000000,19479256.000000,562851.000000,71616600.000000,123445181.000000,1369619356672.000000,2712786985984.000000,49033832.000000,364147075.000000
+561551184.000000,654450688.000000,1185711640.000000,10715136.000000,1241.060000,314841956352.000000,532622512128.000000,19479256.000000,562851.000000,71617895.000000,123446557.000000,1369619356672.000000,2712960173056.000000,49034612.000000,364150408.000000
+562652016.000000,655663104.000000,1185711640.000000,10715136.000000,1241.150000,314841956352.000000,532622512128.000000,19479256.000000,562851.000000,71617900.000000,123446571.000000,1369619356672.000000,2712960275456.000000,49034628.000000,364150412.000000
+563841024.000000,656867328.000000,1185711640.000000,10715136.000000,1241.220000,314841956352.000000,532622512128.000000,19479256.000000,562851.000000,71617961.000000,123446648.000000,1369619356672.000000,2712960840704.000000,49034652.000000,364150475.000000
+470494544.000000,616341504.000000,1185711640.000000,11468800.000000,1251.550000,314841968640.000000,532622512128.000000,19479256.000000,562851.000000,71617967.000000,123446657.000000,1369619356672.000000,2712960902144.000000,49034664.000000,364150479.000000
+622930280.000000,721223680.000000,1194821144.000000,11796480.000000,1312.850000,314880311296.000000,532622512128.000000,19479256.000000,562851.000000,71618732.000000,123447584.000000,1369619356672.000000,2713053627392.000000,49035220.000000,364152039.000000
+624079088.000000,722518016.000000,1194821144.000000,11796480.000000,1312.930000,314880319488.000000,532622512128.000000,19479256.000000,562851.000000,71618765.000000,123447635.000000,1369619356672.000000,2713054012416.000000,49035240.000000,364152082.000000
+625268816.000000,723640320.000000,1194821144.000000,11796480.000000,1312.990000,314880319488.000000,532622512128.000000,19479256.000000,562851.000000,71618816.000000,123447692.000000,1369619356672.000000,2713054589952.000000,49035276.000000,364152124.000000
+655298304.000000,714186752.000000,1194821144.000000,12025856.000000,1324.660000,314880323584.000000,532622512128.000000,19479256.000000,562851.000000,71618841.000000,123447708.000000,1369619356672.000000,2713054757888.000000,49035312.000000,364152146.000000
+829546272.000000,892215296.000000,1228637720.000000,12124160.000000,1387.030000,314889940992.000000,532622512128.000000,19479256.000000,562851.000000,71619902.000000,123448839.000000,1369619356672.000000,2713191506944.000000,49035916.000000,364154676.000000
+830827504.000000,893411328.000000,1228637720.000000,12124160.000000,1387.100000,314889945088.000000,532622512128.000000,19479256.000000,562851.000000,71619908.000000,123448859.000000,1369619356672.000000,2713191613440.000000,49035932.000000,364154683.000000
+831988896.000000,894803968.000000,1228637720.000000,12124160.000000,1387.170000,314889945088.000000,532622512128.000000,19479256.000000,562851.000000,71619963.000000,123448931.000000,1369619356672.000000,2713192252416.000000,49035956.000000,364154740.000000
+495933176.000000,672210944.000000,1228637720.000000,13303808.000000,1401.240000,314889936896.000000,532622512128.000000,19479256.000000,562851.000000,71619980.000000,123448951.000000,1369619356672.000000,2713192403968.000000,49035984.000000,364154757.000000
+416059432.000000,625598464.000000,1237026328.000000,11468800.000000,1462.930000,314884075520.000000,532622512128.000000,19479256.000000,562851.000000,71621087.000000,123450098.000000,1369619356672.000000,2713346245632.000000,49036588.000000,364158382.000000
+417113920.000000,626696192.000000,1237026328.000000,11468800.000000,1463.000000,314884075520.000000,532622512128.000000,19479256.000000,562851.000000,71621093.000000,123450113.000000,1369619356672.000000,2713346331648.000000,49036604.000000,364158387.000000
+418235696.000000,627818496.000000,1237026328.000000,11468800.000000,1463.070000,314884079616.000000,532622512128.000000,19479256.000000,562851.000000,71621154.000000,123450202.000000,1369619356672.000000,2713347179520.000000,49036640.000000,364158465.000000
+753567512.000000,786923520.000000,1237026328.000000,15040512.000000,1467.980000,314884079616.000000,532622512128.000000,19479256.000000,562851.000000,71621204.000000,123450214.000000,1369619356672.000000,2713347437568.000000,49036660.000000,364158499.000000
+808786128.000000,895328256.000000,1292997160.000000,13107200.000000,1535.790000,314906832896.000000,532622512128.000000,19479256.000000,562851.000000,71622238.000000,123451547.000000,1369619356672.000000,2713467433984.000000,49037288.000000,364160883.000000
+835308816.000000,919363584.000000,1292997160.000000,13107200.000000,1535.970000,314898255872.000000,532622512128.000000,19479256.000000,562851.000000,71622307.000000,123451661.000000,1369619356672.000000,2713470149632.000000,49037332.000000,364160969.000000
+836598072.000000,920616960.000000,1292997160.000000,13107200.000000,1536.040000,314898255872.000000,532622512128.000000,19479256.000000,562851.000000,71622340.000000,123451696.000000,1369619356672.000000,2713470501888.000000,49037364.000000,364161005.000000
+664427496.000000,736362496.000000,1292997160.000000,12255232.000000,1544.230000,314898264064.000000,532622512128.000000,19479256.000000,562851.000000,71622371.000000,123451717.000000,1369619356672.000000,2713470714880.000000,49037388.000000,364161034.000000
+827173408.000000,920330240.000000,1311130664.000000,13402112.000000,1608.980000,314921054208.000000,532622512128.000000,19479256.000000,562851.000000,71623284.000000,123452711.000000,1369619356672.000000,2713581626368.000000,49037864.000000,364162974.000000
+829019408.000000,922042368.000000,1311130664.000000,13402112.000000,1609.050000,314921164800.000000,532622512128.000000,19479256.000000,562851.000000,71623306.000000,123452777.000000,1369619356672.000000,2713582072832.000000,49037892.000000,364163004.000000
+830274224.000000,923328512.000000,1311130664.000000,13402112.000000,1609.130000,314921164800.000000,532622512128.000000,19479256.000000,562851.000000,71623407.000000,123452844.000000,1369619356672.000000,2713582932992.000000,49037924.000000,364163092.000000
+824181752.000000,864722944.000000,1311130664.000000,13762560.000000,1619.200000,314921168896.000000,532622512128.000000,19479256.000000,562851.000000,71623427.000000,123452867.000000,1369619356672.000000,2713583109120.000000,49037948.000000,364163112.000000
+525004136.000000,681893888.000000,1370771512.000000,13271040.000000,1680.790000,314955726848.000000,532622512128.000000,19479256.000000,562851.000000,71624233.000000,123453898.000000,1369619356672.000000,2713675129856.000000,49038528.000000,364164725.000000
+526188576.000000,683008000.000000,1370771512.000000,13271040.000000,1680.860000,314955730944.000000,532622512128.000000,19479256.000000,562851.000000,71624240.000000,123453916.000000,1369619356672.000000,2713675256832.000000,49038548.000000,364164731.000000
+526569144.000000,683294720.000000,1370771512.000000,13271040.000000,1680.930000,314955730944.000000,532622512128.000000,19479256.000000,562851.000000,71624299.000000,123454007.000000,1369619356672.000000,2713676112896.000000,49038576.000000,364164794.000000
+904246112.000000,939720704.000000,1370771512.000000,15302656.000000,1693.600000,314955739136.000000,532622512128.000000,19479256.000000,562851.000000,71624317.000000,123454024.000000,1369619356672.000000,2713676256256.000000,49038604.000000,364164811.000000
+849273232.000000,945029120.000000,1400200264.000000,14221312.000000,1756.160000,314954559488.000000,532622512128.000000,19479256.000000,562851.000000,71625582.000000,123456225.000000,1369619356672.000000,2713818780672.000000,49039656.000000,364167543.000000
+850474912.000000,946388992.000000,1400200264.000000,14221312.000000,1756.210000,314954559488.000000,532622512128.000000,19479256.000000,562851.000000,71625589.000000,123456241.000000,1369619356672.000000,2713818899456.000000,49039676.000000,364167548.000000
+851693352.000000,947666944.000000,1400200264.000000,14221312.000000,1756.280000,314954563584.000000,532622512128.000000,19479256.000000,562851.000000,71625853.000000,123456369.000000,1369619356672.000000,2713831318528.000000,49039736.000000,364167805.000000
+865553416.000000,916873216.000000,1400200264.000000,14581760.000000,1767.460000,314954563584.000000,532622512128.000000,19479256.000000,562851.000000,71625880.000000,123456400.000000,1369619356672.000000,2713831560192.000000,49039764.000000,364167834.000000
+981327984.000000,1092034560.000000,1422744648.000000,14680064.000000,1828.730000,314985230336.000000,532622512128.000000,19479256.000000,562851.000000,71626580.000000,123457162.000000,1369619356672.000000,2713920824320.000000,49040244.000000,364169456.000000
+982411776.000000,1093533696.000000,1422744648.000000,14680064.000000,1828.800000,314985230336.000000,532622512128.000000,19479256.000000,562851.000000,71626616.000000,123457209.000000,1369619356672.000000,2713921184768.000000,49040268.000000,364169492.000000
+982834784.000000,1094000640.000000,1422744648.000000,14680064.000000,1828.870000,314985230336.000000,532622512128.000000,19479256.000000,562851.000000,71626650.000000,123457249.000000,1369619356672.000000,2713921635328.000000,49040296.000000,364169528.000000
+790178184.000000,867696640.000000,1422744648.000000,14843904.000000,1842.390000,314985242624.000000,532622512128.000000,19479256.000000,562851.000000,71626668.000000,123457266.000000,1369619356672.000000,2713921778688.000000,49040316.000000,364169544.000000
+592460408.000000,767918080.000000,1422744648.000000,15073280.000000,1904.320000,315023949824.000000,532622512128.000000,19479256.000000,562851.000000,71627746.000000,123458555.000000,1369619356672.000000,2714050171904.000000,49040988.000000,364171844.000000
+593657432.000000,768999424.000000,1422744648.000000,15073280.000000,1904.380000,315023949824.000000,532622512128.000000,19479256.000000,562851.000000,71627781.000000,123458609.000000,1369619356672.000000,2714050565120.000000,49041008.000000,364171879.000000
+594812696.000000,770293760.000000,1422744648.000000,15073280.000000,1904.460000,315023949824.000000,532622512128.000000,19479256.000000,562851.000000,71627817.000000,123458643.000000,1369619356672.000000,2714050933760.000000,49041044.000000,364171913.000000
+622071528.000000,822345728.000000,1422744648.000000,15269888.000000,1919.250000,315023958016.000000,532622512128.000000,19479256.000000,562851.000000,71627827.000000,123458652.000000,1369619356672.000000,2714051011584.000000,49041072.000000,364171921.000000
+703657512.000000,856440832.000000,1494640728.000000,15532032.000000,1982.500000,314982649856.000000,532622512128.000000,19479256.000000,562851.000000,71628927.000000,123459744.000000,1369619356672.000000,2714217292800.000000,49041712.000000,364177557.000000
+704819704.000000,857808896.000000,1494640728.000000,15532032.000000,1982.560000,314982653952.000000,532622512128.000000,19479256.000000,562851.000000,71628933.000000,123459760.000000,1369619356672.000000,2714217382912.000000,49041732.000000,364177562.000000
+705195952.000000,858095616.000000,1494640728.000000,15532032.000000,1982.630000,314982653952.000000,532622512128.000000,19479256.000000,562851.000000,71628996.000000,123459839.000000,1369619356672.000000,2714218099712.000000,49041764.000000,364177623.000000
+608812656.000000,843268096.000000,1494640728.000000,15663104.000000,1997.590000,314982662144.000000,532622512128.000000,19479256.000000,562851.000000,71629018.000000,123459858.000000,1369619356672.000000,2714218267648.000000,49041792.000000,364177644.000000
+713688152.000000,900595712.000000,1494706264.000000,15302656.000000,2056.340000,315004256256.000000,532622512128.000000,19479256.000000,562851.000000,71630124.000000,123461129.000000,1369619356672.000000,2714344248320.000000,49042408.000000,364180114.000000
+714856248.000000,901750784.000000,1494706264.000000,15302656.000000,2056.400000,315004256256.000000,532622512128.000000,19479256.000000,562851.000000,71630131.000000,123461147.000000,1369619356672.000000,2714344371200.000000,49042432.000000,364180120.000000
+716007032.000000,902938624.000000,1494706264.000000,15302656.000000,2056.490000,315004260352.000000,532622512128.000000,19479256.000000,562851.000000,71630186.000000,123461214.000000,1369619356672.000000,2714344944640.000000,49042464.000000,364180174.000000
+985264080.000000,1043243008.000000,1494706264.000000,17694720.000000,2062.930000,315004264448.000000,532622512128.000000,19479256.000000,562851.000000,71630204.000000,123461236.000000,1369619356672.000000,2714345108480.000000,49042488.000000,364180190.000000
+849464448.000000,984743936.000000,1545892968.000000,15761408.000000,2132.510000,315016851456.000000,532622512128.000000,19479256.000000,562851.000000,71631226.000000,123462101.000000,1369619356672.000000,2714498618368.000000,49043080.000000,364183920.000000
+855159480.000000,987545600.000000,1545892968.000000,15761408.000000,2132.600000,315017502720.000000,532622512128.000000,19479256.000000,562851.000000,71631253.000000,123462161.000000,1369619356672.000000,2714499589120.000000,49043112.000000,364183940.000000
+856285272.000000,988782592.000000,1545892968.000000,15761408.000000,2132.670000,315017502720.000000,532622512128.000000,19479256.000000,562851.000000,71631310.000000,123462222.000000,1369619356672.000000,2714500146176.000000,49043148.000000,364183987.000000
+717144064.000000,882286592.000000,1545892968.000000,16777216.000000,2140.010000,315017515008.000000,532622512128.000000,19479256.000000,562851.000000,71631334.000000,123462249.000000,1369619356672.000000,2714500355072.000000,49043176.000000,364184010.000000
+1127243488.000000,1224171520.000000,1568175208.000000,16875520.000000,2205.560000,315014066176.000000,532622512128.000000,19479256.000000,562851.000000,71632209.000000,123463155.000000,1369619356672.000000,2714614715392.000000,49043716.000000,364186276.000000
+1128451776.000000,1225441280.000000,1568175208.000000,16875520.000000,2205.640000,315014066176.000000,532622512128.000000,19479256.000000,562851.000000,71632214.000000,123463168.000000,1369619356672.000000,2714614813696.000000,49043732.000000,364186280.000000
+1129683248.000000,1226711040.000000,1568175208.000000,16875520.000000,2205.700000,315014066176.000000,532622512128.000000,19479256.000000,562851.000000,71632269.000000,123463231.000000,1369619356672.000000,2714615526400.000000,49043764.000000,364186329.000000
+666545256.000000,882573312.000000,1568175208.000000,17072128.000000,2215.330000,315014070272.000000,532622512128.000000,19479256.000000,562851.000000,71632287.000000,123463251.000000,1369619356672.000000,2714615682048.000000,49043796.000000,364186345.000000
+672478616.000000,864477184.000000,1572369512.000000,16646144.000000,2280.760000,315053543424.000000,532622512128.000000,19479256.000000,562851.000000,71633263.000000,123464443.000000,1369619356672.000000,2714728408064.000000,49044420.000000,364188350.000000
+673620928.000000,865558528.000000,1572369512.000000,16646144.000000,2280.830000,315053543424.000000,532622512128.000000,19479256.000000,562851.000000,71633267.000000,123464456.000000,1369619356672.000000,2714728477696.000000,49044428.000000,364188353.000000
+674780304.000000,866672640.000000,1572369512.000000,16678912.000000,2280.910000,315053543424.000000,532622512128.000000,19479256.000000,562851.000000,71633329.000000,123464521.000000,1369619356672.000000,2714729325568.000000,49044452.000000,364188412.000000
+994481000.000000,1052557312.000000,1572369512.000000,17629184.000000,2291.030000,315053551616.000000,532622512128.000000,19479256.000000,562851.000000,71633347.000000,123464553.000000,1369619356672.000000,2714729530368.000000,49044480.000000,364188432.000000
+812500464.000000,985030656.000000,1623425144.000000,17432576.000000,2354.210000,315063529472.000000,532622512128.000000,19479256.000000,562851.000000,71634377.000000,123465823.000000,1369619356672.000000,2714846696448.000000,49045108.000000,364190796.000000
+813687280.000000,986193920.000000,1623425144.000000,17432576.000000,2354.280000,315063533568.000000,532622512128.000000,19479256.000000,562851.000000,71634381.000000,123465837.000000,1369619356672.000000,2714846770176.000000,49045120.000000,364190799.000000
+813987424.000000,986439680.000000,1623425144.000000,17432576.000000,2354.350000,315063533568.000000,532622512128.000000,19479256.000000,562851.000000,71634486.000000,123465906.000000,1369619356672.000000,2714847650816.000000,49045160.000000,364190893.000000
+711556800.000000,938696704.000000,1623425144.000000,17858560.000000,2367.070000,315063541760.000000,532622512128.000000,19479256.000000,562851.000000,71634507.000000,123465928.000000,1369619356672.000000,2714847826944.000000,49045188.000000,364190911.000000
+638610360.000000,910008320.000000,1691847816.000000,16842752.000000,2427.850000,315078250496.000000,532622512128.000000,19479256.000000,562851.000000,71635556.000000,123467201.000000,1369619356672.000000,2714963448832.000000,49045816.000000,364193043.000000
+639694808.000000,911040512.000000,1691847816.000000,16842752.000000,2427.930000,315078250496.000000,532622512128.000000,19479256.000000,562851.000000,71635561.000000,123467214.000000,1369619356672.000000,2714963547136.000000,49045832.000000,364193047.000000
+640850744.000000,912146432.000000,1691847816.000000,16842752.000000,2428.000000,315078254592.000000,532622512128.000000,19479256.000000,562851.000000,71635624.000000,123467286.000000,1369619356672.000000,2714964141056.000000,49045856.000000,364193101.000000
+806852704.000000,982786048.000000,1691847816.000000,18153472.000000,2442.590000,315078262784.000000,532622512128.000000,19479256.000000,562851.000000,71635643.000000,123467300.000000,1369619356672.000000,2714964276224.000000,49045876.000000,364193116.000000
+739564168.000000,915890176.000000,1693027464.000000,18284544.000000,2503.540000,315081498624.000000,532622512128.000000,19479256.000000,562851.000000,71636821.000000,123469266.000000,1369619356672.000000,2715116307456.000000,49046880.000000,364197309.000000
+740773384.000000,917241856.000000,1693027464.000000,18284544.000000,2503.600000,315081498624.000000,532622512128.000000,19479256.000000,562851.000000,71636827.000000,123469283.000000,1369619356672.000000,2715116401664.000000,49046892.000000,364197315.000000
+741962552.000000,918339584.000000,1693027464.000000,18284544.000000,2503.670000,315081498624.000000,532622512128.000000,19479256.000000,562851.000000,71637027.000000,123469399.000000,1369619356672.000000,2715128566784.000000,49046940.000000,364197549.000000
+699075344.000000,952786944.000000,1693027464.000000,18710528.000000,2516.390000,315081502720.000000,532622512128.000000,19479256.000000,562851.000000,71637115.000000,123469433.000000,1369619356672.000000,2715129111552.000000,49046972.000000,364197616.000000
+860078672.000000,1024188416.000000,1701481608.000000,18808832.000000,2577.450000,315101392896.000000,532622512128.000000,19479256.000000,562851.000000,71638125.000000,123470594.000000,1369619356672.000000,2715243373568.000000,49047604.000000,364199714.000000
+861296912.000000,1025490944.000000,1701481608.000000,18808832.000000,2577.520000,315101392896.000000,532622512128.000000,19479256.000000,562851.000000,71638129.000000,123470607.000000,1369619356672.000000,2715243443200.000000,49047612.000000,364199718.000000
+862507872.000000,1026842624.000000,1701481608.000000,18808832.000000,2577.600000,315101392896.000000,532622512128.000000,19479256.000000,562851.000000,71638183.000000,123470656.000000,1369619356672.000000,2715243918336.000000,49047640.000000,364199764.000000
+943308120.000000,1065197568.000000,1701481608.000000,19136512.000000,2592.130000,315101392896.000000,532622512128.000000,19479256.000000,562851.000000,71638195.000000,123470664.000000,1369619356672.000000,2715244000256.000000,49047664.000000,364199774.000000
+763948960.000000,1050279936.000000,1743755416.000000,17235968.000000,2657.570000,314927493120.000000,532622512128.000000,19479256.000000,562851.000000,71639484.000000,123471703.000000,1369619356672.000000,2715438994432.000000,49048344.000000,364208889.000000
+765004256.000000,1051582464.000000,1743755416.000000,17301504.000000,2657.630000,314927497216.000000,532622512128.000000,19479256.000000,562851.000000,71639490.000000,123471751.000000,1369619356672.000000,2715439215616.000000,49048372.000000,364208912.000000
+766091024.000000,1052852224.000000,1743755416.000000,17301504.000000,2657.700000,314927497216.000000,532622512128.000000,19479256.000000,562851.000000,71639534.000000,123471825.000000,1369619356672.000000,2715439768576.000000,49048400.000000,364208954.000000
+1117176560.000000,1169891328.000000,1743755416.000000,19431424.000000,2663.720000,314927501312.000000,532622512128.000000,19479256.000000,562851.000000,71639559.000000,123471847.000000,1369619356672.000000,2715439961088.000000,49048428.000000,364208977.000000
+978271928.000000,1221427200.000000,1816437928.000000,18350080.000000,2744.140000,314823303168.000000,532622512128.000000,19479256.000000,562851.000000,71640951.000000,123473013.000000,1369619356672.000000,2715655197696.000000,49049172.000000,364214936.000000
+1025150440.000000,1239318528.000000,1816437928.000000,19464192.000000,2744.430000,314826928128.000000,532622512128.000000,19479256.000000,562851.000000,71641000.000000,123473094.000000,1369619356672.000000,2715659293696.000000,49049220.000000,364214996.000000
+1026299384.000000,1240563712.000000,1816437928.000000,19464192.000000,2744.500000,314826932224.000000,532622512128.000000,19479256.000000,562851.000000,71641061.000000,123473169.000000,1369619356672.000000,2715659932672.000000,49049252.000000,364215050.000000
+1219366472.000000,1269211136.000000,1816437928.000000,20021248.000000,2759.620000,314826940416.000000,532622512128.000000,19479256.000000,562851.000000,71641086.000000,123473200.000000,1369619356672.000000,2715660162048.000000,49049272.000000,364215071.000000
+751104224.000000,987734016.000000,1817289896.000000,19988480.000000,2818.570000,314832457728.000000,532622512128.000000,19479256.000000,562851.000000,71642086.000000,123474389.000000,1369619356672.000000,2715779834880.000000,49049904.000000,364217289.000000
+752259784.000000,988815360.000000,1817289896.000000,19988480.000000,2818.620000,314832457728.000000,532622512128.000000,19479256.000000,562851.000000,71642092.000000,123474415.000000,1369619356672.000000,2715779965952.000000,49049924.000000,364217300.000000
+753416904.000000,989954048.000000,1817289896.000000,19988480.000000,2818.710000,314832457728.000000,532622512128.000000,19479256.000000,562851.000000,71642150.000000,123474479.000000,1369619356672.000000,2715780551680.000000,49049956.000000,364217349.000000
+1120425984.000000,1199390720.000000,1817289896.000000,21168128.000000,2825.740000,314832461824.000000,532622512128.000000,19479256.000000,562851.000000,71642171.000000,123474490.000000,1369619356672.000000,2715780682752.000000,49049988.000000,364217368.000000
+899177200.000000,1112252416.000000,1834329256.000000,20447232.000000,2892.840000,314850746368.000000,532622512128.000000,19479256.000000,562851.000000,71643039.000000,123475499.000000,1369619356672.000000,2715888276480.000000,49050516.000000,364219231.000000
+901678232.000000,1114161152.000000,1834329256.000000,20447232.000000,2892.930000,314850906112.000000,532622512128.000000,19479256.000000,562851.000000,71643061.000000,123475545.000000,1369619356672.000000,2715888690176.000000,49050544.000000,364219244.000000
+901985880.000000,1114718208.000000,1834329256.000000,20447232.000000,2892.990000,314850906112.000000,532622512128.000000,19479256.000000,562851.000000,71643117.000000,123475607.000000,1369619356672.000000,2715889304576.000000,49050580.000000,364219298.000000
+848858120.000000,1071980544.000000,1834329256.000000,21004288.000000,2902.110000,314850910208.000000,532622512128.000000,19479256.000000,562851.000000,71643139.000000,123475633.000000,1369619356672.000000,2715889501184.000000,49050604.000000,364219319.000000
diff --git a/test/stress/istio/testdata/metrics/intermediate.csv b/test/stress/istio/testdata/metrics/intermediate.csv
index 643b5479..46304636 100644
--- a/test/stress/istio/testdata/metrics/intermediate.csv
+++ b/test/stress/istio/testdata/metrics/intermediate.csv
@@ -1,9 +1,9 @@
-weighted_io,rate[5m],45.53,41.5,34.70333333333333,34.33,41.96333333333333,42.196666666666665,39.61666666666667,38.47,41.82,41.836666666666666,38.093333333333334,40.33,43.58,43.61,39.35666666666667,40.00666666666667,43.03333333333333,42.913333333333334,40.97,39.04333333333334,42.516666666666666,42.50666666666667,39.02333333333333,34.04666666666667,39.25333333333333,39.31333333333333,36.18,35.84,44.92333333333333,44.86333333333334,40.723333333333336,40.60666666666667,42.6,42.58333333333333 [...]
-io_time,rate[5m],16.453333333333333,15.213333333333333,13.48,13.853333333333333,15.466666666666667,15.493333333333334,14.44,14.12,15.186666666666667,15.213333333333333,13.893333333333333,14.413333333333334,15.333333333333334,15.293333333333333,12.826666666666666,12.973333333333333,14.066666666666666,14.053333333333333,13.2,13.04,14.106666666666667,14.093333333333334,12.68,12.066666666666666,13.533333333333333,13.493333333333334,12.306666666666667,12.293333333333333,13.746666666666666,13. [...]
-write_bytes,rate[5m],2607117.6533333333,2400119.466666667,1977152.8533333333,1963130.88,2373099.52,2375092.9066666667,2210761.3866666667,2149130.24,2365808.64,2366204.5866666664,2124090.026666667,2235965.44,2437734.4,2437802.6666666665,2183099.7333333334,2208153.6,2369686.1866666665,2368061.44,2241754.453333333,2169405.44,2372430.506666667,2372198.4,2151246.506666667,1904298.6666666667,2228387.84,2228401.493333333,2034810.88,2003203.4133333333,2410291.2,2409840.64,2174074.88,2167412.0533 [...]
-read_bytes,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177.49333333333334,177.49333333333334,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1365.3333333333333,1187.84,1187.84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,436.9 [...]
-merged_write_count,rate[5m],33.07333333333333,30.183333333333334,27.633333333333333,29.033333333333335,32.3,32.38,30.376666666666665,29.276666666666667,31.81,31.886666666666667,29.123333333333335,30.133333333333333,31.783333333333335,31.83,26,26.413333333333334,28.62,28.506666666666668,26.903333333333332,26.64,28.60333333333333,28.69333333333333,24.613333333333333,23.503333333333334,26.68,26.72,24.923333333333332,24.26,27.446666666666665,27.416666666666668,25.16,25.64,27.286666666666665, [...]
-write_count,rate[5m],26.466666666666665,23.77,21.053333333333335,21.34,24.303333333333335,24.733333333333334,23.293333333333333,22.406666666666666,24.563333333333333,24.546666666666667,22.346666666666668,23.30666666666667,24.893333333333334,24.9,22.14666666666667,22.49,24.1,23.94,22.826666666666668,22.106666666666666,23.983333333333334,23.973333333333333,21.586666666666666,20.326666666666668,22.716666666666665,22.77,21.213333333333335,20.513333333333332,23.85333333333333,23.8,21.88333333 [...]
-merged_read_count,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.0033333333333333335,0.00333333 [...]
-read_count,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.013333333333333334,0.013333333333333334,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.03,0.016666666666666666,0.016666666666666666,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0033333333333333335,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0.006666666666666667,0. [...]
-process_cpu_seconds_total,rate[5m],1.2906666666666666,1.2136333333333333,1.0219,1.1714333333333333,1.2296,1.2295666666666665,1.0347333333333333,1.1849,1.2254333333333334,1.2254,1.0218,1.1845333333333334,1.2319666666666667,1.2319333333333335,1.0426999999999997,1.1882333333333335,1.2270666666666665,1.2270666666666667,1.0376333333333332,1.1865333333333332,1.2234666666666665,1.2234,1.0247,1.1572333333333331,1.2091666666666667,1.2092,1.0098000000000003,1.161933333333333,1.2238666666666667,1.2 [...]
+weighted_io,rate[5m],39.39,34.57,38.693333333333335,38.63333333333333,38.733333333333334,30.733333333333334,35.913333333333334,35.763333333333335,35.91,30.23,38.53,37.7,37.89,29.196666666666665,40.156666666666666,39.95666666666666,40.10666666666667,35.02,48.10333333333333,47.946666666666665,48.07666666666667,39.68333333333333,45.78333333333333,45.63666666666666,45.78,40.54,48.85,48.79,49.24333333333333,40.593333333333334,46.77,46.95666666666666,47.32666666666667,36.63666666666666,44.4266 [...]
+io_time,rate[5m],12.573333333333334,10.933333333333334,12.48,12.48,12.466666666666667,10.306666666666667,11.96,11.88,11.866666666666667,8.813333333333333,11.186666666666667,11.053333333333333,11.08,9.28,11.12,11.093333333333334,11.12,9.893333333333333,12.16,12.133333333333333,12.16,10.053333333333333,12.053333333333333,12.013333333333334,12.013333333333334,10.293333333333333,12.28,12.36,12.44,9.893333333333333,13.066666666666666,13.16,13.24,11.466666666666667,13.386666666666667,13.36,13. [...]
+write_bytes,rate[5m],2118382.933333333,1811319.4666666666,2035165.8666666667,2034578.7733333334,2036039.68,1601085.44,1905322.6666666667,1903588.6933333334,1905377.28,1588893.0133333334,2037391.36,1996731.7333333334,1999298.56,1560057.1733333333,2051331.4133333333,2048628.0533333332,2050771.6266666667,1763519.1466666667,2339266.56,2337846.6133333333,2339321.1733333333,1884119.04,2224250.88,2222653.44,2224592.2133333334,1910087.68,2326091.0933333333,2329326.933333333,2333859.84,1862260.05 [...]
+read_bytes,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+merged_write_count,rate[5m],24.006666666666668,21.19,23.033333333333335,22.973333333333333,23.156666666666666,19.013333333333332,21.99,21.813333333333333,21.98,15.903333333333334,20.466666666666665,20.14,20.323333333333334,17.14,19.856666666666666,19.643333333333334,19.9,17.533333333333335,21.49,21.37,21.516666666666666,17.526666666666667,21.30666666666667,21.14,21.346666666666668,18.09,21.8,21.946666666666665,22.226666666666667,17.316666666666666,24.39,24.643333333333334,24.683333333333 [...]
+write_count,rate[5m],19.513333333333332,16.876666666666665,18.316666666666666,18.266666666666666,18.363333333333333,14.946666666666667,17.436666666666667,17.276666666666667,17.406666666666666,14.343333333333334,18.11,17.26,17.413333333333334,14.186666666666667,17.283333333333335,17.083333333333332,17.236666666666668,15.096666666666666,19.163333333333334,19,19.12,15.61,18.586666666666666,18.44,18.546666666666667,15.98,19.286666666666665,19.323333333333334,19.926666666666666,15.90666666666 [...]
+merged_read_count,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+read_count,rate[5m],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+process_cpu_seconds_total,rate[5m],1.149333333333333,0.9892333333333333,1.2094000000000003,1.2094000000000003,1.1938666666666666,0.9931666666666666,1.201833333333333,1.2018666666666666,1.1878000000000002,1.0065,1.2155999999999998,1.2156333333333333,1.1708333333333332,1.0128333333333337,1.2228666666666665,1.2228333333333334,1.2073,1.0358333333333336,1.2448000000000001,1.2447666666666668,1.2188666666666668,1.0423666666666667,1.2391,1.2390999999999999,1.2092333333333334,1.0161333333333333,1 [...]
diff --git a/test/stress/istio/testdata/metrics/result.csv b/test/stress/istio/testdata/metrics/result.csv
index bc715547..0c459e72 100644
--- a/test/stress/istio/testdata/metrics/result.csv
+++ b/test/stress/istio/testdata/metrics/result.csv
@@ -1,16 +1,16 @@
Metric Name, Min, Max, Mean, Median, P90, P95, P98, P99
-go_memstats_alloc_bytes, 218348416.000000, 1563631000.000000, 734180420.519480, 719825288.000000, 1131022552.000000, 1324619316.000000, 1446095028.000000, 1489784564.000000
-go_memstats_heap_inuse_bytes, 278667264.000000, 1631133696.000000, 893808054.857143, 890023936.000000, 1318391808.000000, 1475334144.000000, 1569972224.000000, 1602924544.000000
-go_memstats_sys_bytes, 814824888.000000, 1921792952.000000, 1482575533.818182, 1403477064.000000, 1895447480.000000, 1896037304.000000, 1921792952.000000, 1921792952.000000
-go_memstats_stack_inuse_bytes, 4423680.000000, 22315008.000000, 14026193.454545, 13697024.000000, 20840448.000000, 21463040.000000, 21872640.000000, 22052864.000000
-process_cpu_seconds_total, 0.977467, 1.290667, 1.158019, 1.189967, 1.231950, 1.244400, 1.254017, 1.257467
-disk_used, 269411012608.000000, 271761125376.000000, 270591056590.129883, 269783119872.000000, 271689787392.000000, 271716999168.000000, 271728365568.000000, 271738296320.000000
+go_memstats_alloc_bytes, 194574488.000000, 1219366472.000000, 636633944.000000, 638610360.000000, 903115996.000000, 1009815720.000000, 1123834736.000000, 1129067512.000000
+go_memstats_heap_inuse_bytes, 270991360.000000, 1269211136.000000, 752114105.725490, 736362496.000000, 1068589056.000000, 1184641024.000000, 1226076160.000000, 1239941120.000000
+go_memstats_sys_bytes, 677992856.000000, 1834329256.000000, 1277992721.307189, 1237026328.000000, 1722618512.000000, 1816863912.000000, 1825809576.000000, 1834329256.000000
+go_memstats_stack_inuse_bytes, 3866624.000000, 21168128.000000, 12528512.836601, 13107200.000000, 18759680.000000, 19988480.000000, 20447232.000000, 20725760.000000
+process_cpu_seconds_total, 0.989233, 1.302133, 1.177522, 1.215433, 1.254483, 1.257000, 1.299900, 1.301167
+disk_used, 314598531072.000000, 315101392896.000000, 314877542801.568604, 314868518912.000000, 315058540544.000000, 315079880704.000000, 315091447808.000000, 315101392896.000000
disk_total, 532622512128.000000, 532622512128.000000, 532622512128.000000, 532622512128.000000, 532622512128.000000, 532622512128.000000, 532622512128.000000, 532622512128.000000
-read_count, 0.000000, 89.106667, 5.919185, 0.003333, 0.095000, 89.106667, 89.106667, 89.106667
-merged_read_count, 0.000000, 7.286667, 0.531136, 0.000000, 0.030000, 7.286667, 7.286667, 7.286667
-write_count, 19.536667, 49.663333, 27.396247, 24.276667, 46.051667, 48.198333, 48.821667, 49.085000
-merged_write_count, 22.433333, 59.706667, 30.199481, 28.736667, 32.513333, 53.538333, 58.026667, 59.323333
-read_bytes, 0.000000, 1096663.040000, 68431.821432, 13.653333, 2225.493333, 1096663.040000, 1096663.040000, 1096663.040000
-write_bytes, 1850190.506667, 8970909.013333, 3175696.459852, 2328384.853333, 8561875.626667, 8741847.040000, 8858801.493333, 8915203.413333
-io_time, 11.906667, 45.106667, 17.614716, 14.186667, 25.973333, 42.820000, 44.733333, 44.933333
-weighted_io, 32.793333, 413.340000, 94.934568, 42.806667, 405.225000, 408.570000, 410.276667, 411.773333
+read_count, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000
+merged_read_count, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000
+write_count, 14.186667, 21.900000, 18.114826, 18.260000, 20.125000, 20.715000, 21.731667, 21.798333
+merged_write_count, 15.653333, 25.333333, 21.324801, 21.073333, 24.566667, 24.740000, 25.238333, 25.291667
+read_bytes, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000
+write_bytes, 1514482.346667, 2720959.146667, 2074918.769353, 2089690.453333, 2338556.586667, 2553446.400000, 2713217.706667, 2720167.253333
+io_time, 8.813333, 13.600000, 11.646070, 11.653333, 13.113333, 13.373333, 13.553333, 13.566667
+weighted_io, 28.870000, 80.806667, 45.567090, 42.973333, 66.106667, 73.240000, 80.563333, 80.720000