github.com/hasnat/dolt/go@v0.0.0-20210628190320-9eb5d843fbb7/store/nbs/stats.go (about)

     1  // Copyright 2019 Dolthub, Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  //
    15  // This file incorporates work covered by the following copyright and
    16  // permission notice:
    17  //
    18  // Copyright 2017 Attic Labs, Inc. All rights reserved.
    19  // Licensed under the Apache License, version 2.0:
    20  // http://www.apache.org/licenses/LICENSE-2.0
    21  
    22  package nbs
    23  
    24  import (
    25  	"fmt"
    26  
    27  	"github.com/dolthub/dolt/go/store/metrics"
    28  )
    29  
    30  type Stats struct {
    31  	OpenLatency   metrics.Histogram
    32  	CommitLatency metrics.Histogram
    33  
    34  	IndexReadLatency  metrics.Histogram
    35  	IndexBytesPerRead metrics.Histogram
    36  
    37  	GetLatency   metrics.Histogram
    38  	ChunksPerGet metrics.Histogram
    39  
    40  	FileReadLatency  metrics.Histogram
    41  	FileBytesPerRead metrics.Histogram
    42  
    43  	S3ReadLatency  metrics.Histogram
    44  	S3BytesPerRead metrics.Histogram
    45  
    46  	MemReadLatency  metrics.Histogram
    47  	MemBytesPerRead metrics.Histogram
    48  
    49  	DynamoReadLatency  metrics.Histogram
    50  	DynamoBytesPerRead metrics.Histogram
    51  
    52  	HasLatency      metrics.Histogram
    53  	AddressesPerHas metrics.Histogram
    54  
    55  	PutLatency metrics.Histogram
    56  
    57  	PersistLatency  metrics.Histogram
    58  	BytesPerPersist metrics.Histogram
    59  
    60  	ChunksPerPersist                 metrics.Histogram
    61  	CompressedChunkBytesPerPersist   metrics.Histogram
    62  	UncompressedChunkBytesPerPersist metrics.Histogram
    63  
    64  	ConjoinLatency   metrics.Histogram
    65  	BytesPerConjoin  metrics.Histogram
    66  	ChunksPerConjoin metrics.Histogram
    67  	TablesPerConjoin metrics.Histogram
    68  
    69  	ReadManifestLatency  metrics.Histogram
    70  	WriteManifestLatency metrics.Histogram
    71  }
    72  
    73  func NewStats() *Stats {
    74  	return &Stats{
    75  		OpenLatency:                      metrics.NewTimeHistogram(),
    76  		CommitLatency:                    metrics.NewTimeHistogram(),
    77  		IndexReadLatency:                 metrics.NewTimeHistogram(),
    78  		IndexBytesPerRead:                metrics.NewByteHistogram(),
    79  		GetLatency:                       metrics.NewTimeHistogram(),
    80  		FileReadLatency:                  metrics.NewTimeHistogram(),
    81  		FileBytesPerRead:                 metrics.NewByteHistogram(),
    82  		S3ReadLatency:                    metrics.NewTimeHistogram(),
    83  		S3BytesPerRead:                   metrics.NewByteHistogram(),
    84  		MemReadLatency:                   metrics.NewTimeHistogram(),
    85  		MemBytesPerRead:                  metrics.NewByteHistogram(),
    86  		DynamoReadLatency:                metrics.NewTimeHistogram(),
    87  		DynamoBytesPerRead:               metrics.NewByteHistogram(),
    88  		HasLatency:                       metrics.NewTimeHistogram(),
    89  		PutLatency:                       metrics.NewTimeHistogram(),
    90  		PersistLatency:                   metrics.NewTimeHistogram(),
    91  		BytesPerPersist:                  metrics.NewByteHistogram(),
    92  		CompressedChunkBytesPerPersist:   metrics.NewByteHistogram(),
    93  		UncompressedChunkBytesPerPersist: metrics.NewByteHistogram(),
    94  		ConjoinLatency:                   metrics.NewTimeHistogram(),
    95  		BytesPerConjoin:                  metrics.NewByteHistogram(),
    96  		ReadManifestLatency:              metrics.NewTimeHistogram(),
    97  		WriteManifestLatency:             metrics.NewTimeHistogram(),
    98  	}
    99  }
   100  
   101  func (s *Stats) Clone() Stats {
   102  	return Stats{
   103  		*s.OpenLatency.Clone(),
   104  		*s.CommitLatency.Clone(),
   105  		*s.IndexReadLatency.Clone(),
   106  		*s.IndexBytesPerRead.Clone(),
   107  		*s.GetLatency.Clone(),
   108  		*s.ChunksPerGet.Clone(),
   109  		*s.FileReadLatency.Clone(),
   110  		*s.FileBytesPerRead.Clone(),
   111  		*s.S3ReadLatency.Clone(),
   112  		*s.S3BytesPerRead.Clone(),
   113  		*s.MemReadLatency.Clone(),
   114  		*s.MemBytesPerRead.Clone(),
   115  		*s.DynamoReadLatency.Clone(),
   116  		*s.DynamoBytesPerRead.Clone(),
   117  		*s.HasLatency.Clone(),
   118  		*s.AddressesPerHas.Clone(),
   119  		*s.PutLatency.Clone(),
   120  		*s.PersistLatency.Clone(),
   121  		*s.BytesPerPersist.Clone(),
   122  		*s.ChunksPerPersist.Clone(),
   123  		*s.CompressedChunkBytesPerPersist.Clone(),
   124  		*s.UncompressedChunkBytesPerPersist.Clone(),
   125  		*s.ConjoinLatency.Clone(),
   126  		*s.BytesPerConjoin.Clone(),
   127  		*s.ChunksPerConjoin.Clone(),
   128  		*s.TablesPerConjoin.Clone(),
   129  		*s.ReadManifestLatency.Clone(),
   130  		*s.WriteManifestLatency.Clone(),
   131  	}
   132  }
   133  
   134  func (s Stats) String() string {
   135  	return fmt.Sprintf(`---NBS Stats---
   136  OpenLatecy:                       %s
   137  CommitLatency:                    %s
   138  IndexReadLatency:                 %s
   139  IndexBytesPerRead:                %s
   140  GetLatency:                       %s
   141  ChunksPerGet:                     %s
   142  FileReadLatency:                  %s
   143  FileBytesPerRead:                 %s
   144  S3ReadLatency:                    %s
   145  S3BytesPerRead:                   %s
   146  MemReadLatency:                   %s
   147  MemBytesPerRead:                  %s
   148  DynamoReadLatency:                %s
   149  DynamoBytesPerRead:               %s
   150  HasLatency:                       %s
   151  AddressesHasGet:                  %s
   152  PutLatency:                       %s
   153  PersistLatency:                   %s
   154  BytesPerPersist:                  %s
   155  ChunksPerPersist:                 %s
   156  CompressedChunkBytesPerPersist:   %s
   157  UncompressedChunkBytesPerPersist: %s
   158  ConjoinLatency:                   %s
   159  BytesPerConjoin:                  %s
   160  ChunksPerConjoin:                 %s
   161  TablesPerConjoin:                 %s
   162  ReadManifestLatency:              %s
   163  WriteManifestLatency:             %s
   164  `,
   165  		s.OpenLatency,
   166  		s.CommitLatency,
   167  
   168  		s.IndexReadLatency,
   169  		s.IndexBytesPerRead,
   170  
   171  		s.GetLatency,
   172  		s.ChunksPerGet,
   173  
   174  		s.FileReadLatency,
   175  		s.FileBytesPerRead,
   176  
   177  		s.S3ReadLatency,
   178  		s.S3BytesPerRead,
   179  
   180  		s.MemReadLatency,
   181  		s.MemBytesPerRead,
   182  
   183  		s.DynamoReadLatency,
   184  		s.DynamoBytesPerRead,
   185  
   186  		s.HasLatency,
   187  		s.AddressesPerHas,
   188  
   189  		s.PutLatency,
   190  
   191  		s.PersistLatency,
   192  		s.BytesPerPersist,
   193  
   194  		s.ChunksPerPersist,
   195  		s.CompressedChunkBytesPerPersist,
   196  		s.UncompressedChunkBytesPerPersist,
   197  
   198  		s.ConjoinLatency,
   199  		s.BytesPerConjoin,
   200  		s.ChunksPerConjoin,
   201  		s.TablesPerConjoin,
   202  		s.ReadManifestLatency,
   203  		s.WriteManifestLatency)
   204  }