Merge pull request #16824 from afhassan/main

tsdb: add count of histogram samples to block stats
This commit is contained in:
Björn Rabenstein 2025-07-08 20:16:13 +02:00 committed by GitHub
commit d8c921804e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 5 deletions

View File

@ -188,10 +188,12 @@ type BlockMeta struct {
// BlockStats contains stats about contents of a block. // BlockStats contains stats about contents of a block.
type BlockStats struct { type BlockStats struct {
NumSamples uint64 `json:"numSamples,omitempty"` NumSamples uint64 `json:"numSamples,omitempty"`
NumSeries uint64 `json:"numSeries,omitempty"` NumFloatSamples uint64 `json:"numFloatSamples,omitempty"`
NumChunks uint64 `json:"numChunks,omitempty"` NumHistogramSamples uint64 `json:"numHistogramSamples,omitempty"`
NumTombstones uint64 `json:"numTombstones,omitempty"` NumSeries uint64 `json:"numSeries,omitempty"`
NumChunks uint64 `json:"numChunks,omitempty"`
NumTombstones uint64 `json:"numTombstones,omitempty"`
} }
// BlockDesc describes a block by ULID and time range. // BlockDesc describes a block by ULID and time range.

View File

@ -895,7 +895,14 @@ func (c DefaultBlockPopulator) PopulateBlock(ctx context.Context, metrics *Compa
meta.Stats.NumChunks += uint64(len(chks)) meta.Stats.NumChunks += uint64(len(chks))
meta.Stats.NumSeries++ meta.Stats.NumSeries++
for _, chk := range chks { for _, chk := range chks {
meta.Stats.NumSamples += uint64(chk.Chunk.NumSamples()) samples := uint64(chk.Chunk.NumSamples())
meta.Stats.NumSamples += samples
switch chk.Chunk.Encoding() {
case chunkenc.EncHistogram, chunkenc.EncFloatHistogram:
meta.Stats.NumHistogramSamples += samples
case chunkenc.EncXOR:
meta.Stats.NumFloatSamples += samples
}
} }
for _, chk := range chks { for _, chk := range chks {

View File

@ -1098,6 +1098,13 @@ func TestCompaction_populateBlock(t *testing.T) {
s.NumChunks += uint64(len(series.chunks)) s.NumChunks += uint64(len(series.chunks))
for _, chk := range series.chunks { for _, chk := range series.chunks {
s.NumSamples += uint64(len(chk)) s.NumSamples += uint64(len(chk))
for _, smpl := range chk {
if smpl.h != nil || smpl.fh != nil {
s.NumHistogramSamples++
} else {
s.NumFloatSamples++
}
}
} }
} }
require.Equal(t, s, meta.Stats) require.Equal(t, s, meta.Stats)