github.com/ndau/noms@v1.0.5/go/nbs/stats.go (about)

     1  // Copyright 2017 Attic Labs, Inc. All rights reserved.
     2  // Licensed under the Apache License, version 2.0:
     3  // http://www.apache.org/licenses/LICENSE-2.0
     4  
     5  package nbs
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/ndau/noms/go/metrics"
    11  )
    12  
    13  type Stats struct {
    14  	OpenLatency   metrics.Histogram
    15  	CommitLatency metrics.Histogram
    16  
    17  	IndexReadLatency  metrics.Histogram
    18  	IndexBytesPerRead metrics.Histogram
    19  
    20  	GetLatency   metrics.Histogram
    21  	ChunksPerGet metrics.Histogram
    22  
    23  	FileReadLatency  metrics.Histogram
    24  	FileBytesPerRead metrics.Histogram
    25  
    26  	S3ReadLatency  metrics.Histogram
    27  	S3BytesPerRead metrics.Histogram
    28  
    29  	MemReadLatency  metrics.Histogram
    30  	MemBytesPerRead metrics.Histogram
    31  
    32  	DynamoReadLatency  metrics.Histogram
    33  	DynamoBytesPerRead metrics.Histogram
    34  
    35  	HasLatency      metrics.Histogram
    36  	AddressesPerHas metrics.Histogram
    37  
    38  	PutLatency metrics.Histogram
    39  
    40  	PersistLatency  metrics.Histogram
    41  	BytesPerPersist metrics.Histogram
    42  
    43  	ChunksPerPersist                 metrics.Histogram
    44  	CompressedChunkBytesPerPersist   metrics.Histogram
    45  	UncompressedChunkBytesPerPersist metrics.Histogram
    46  
    47  	ConjoinLatency   metrics.Histogram
    48  	BytesPerConjoin  metrics.Histogram
    49  	ChunksPerConjoin metrics.Histogram
    50  	TablesPerConjoin metrics.Histogram
    51  
    52  	ReadManifestLatency  metrics.Histogram
    53  	WriteManifestLatency metrics.Histogram
    54  }
    55  
    56  func NewStats() *Stats {
    57  	return &Stats{
    58  		OpenLatency:                      metrics.NewTimeHistogram(),
    59  		CommitLatency:                    metrics.NewTimeHistogram(),
    60  		IndexReadLatency:                 metrics.NewTimeHistogram(),
    61  		IndexBytesPerRead:                metrics.NewByteHistogram(),
    62  		GetLatency:                       metrics.NewTimeHistogram(),
    63  		FileReadLatency:                  metrics.NewTimeHistogram(),
    64  		FileBytesPerRead:                 metrics.NewByteHistogram(),
    65  		S3ReadLatency:                    metrics.NewTimeHistogram(),
    66  		S3BytesPerRead:                   metrics.NewByteHistogram(),
    67  		MemReadLatency:                   metrics.NewTimeHistogram(),
    68  		MemBytesPerRead:                  metrics.NewByteHistogram(),
    69  		DynamoReadLatency:                metrics.NewTimeHistogram(),
    70  		DynamoBytesPerRead:               metrics.NewByteHistogram(),
    71  		HasLatency:                       metrics.NewTimeHistogram(),
    72  		PutLatency:                       metrics.NewTimeHistogram(),
    73  		PersistLatency:                   metrics.NewTimeHistogram(),
    74  		BytesPerPersist:                  metrics.NewByteHistogram(),
    75  		CompressedChunkBytesPerPersist:   metrics.NewByteHistogram(),
    76  		UncompressedChunkBytesPerPersist: metrics.NewByteHistogram(),
    77  		ConjoinLatency:                   metrics.NewTimeHistogram(),
    78  		BytesPerConjoin:                  metrics.NewByteHistogram(),
    79  		ReadManifestLatency:              metrics.NewTimeHistogram(),
    80  		WriteManifestLatency:             metrics.NewTimeHistogram(),
    81  	}
    82  }
    83  
    84  func (s *Stats) Add(other Stats) {
    85  	s.OpenLatency.Add(other.OpenLatency)
    86  	s.CommitLatency.Add(other.CommitLatency)
    87  
    88  	s.IndexReadLatency.Add(other.IndexReadLatency)
    89  	s.IndexBytesPerRead.Add(other.IndexBytesPerRead)
    90  
    91  	s.GetLatency.Add(other.GetLatency)
    92  	s.ChunksPerGet.Add(other.ChunksPerGet)
    93  
    94  	s.FileReadLatency.Add(other.FileReadLatency)
    95  	s.FileBytesPerRead.Add(other.FileBytesPerRead)
    96  
    97  	s.S3ReadLatency.Add(other.S3ReadLatency)
    98  	s.S3BytesPerRead.Add(other.S3BytesPerRead)
    99  
   100  	s.MemReadLatency.Add(other.MemReadLatency)
   101  	s.MemBytesPerRead.Add(other.MemBytesPerRead)
   102  
   103  	s.DynamoReadLatency.Add(other.DynamoReadLatency)
   104  	s.DynamoBytesPerRead.Add(other.DynamoBytesPerRead)
   105  
   106  	s.HasLatency.Add(other.HasLatency)
   107  	s.AddressesPerHas.Add(other.AddressesPerHas)
   108  
   109  	s.PutLatency.Add(other.PutLatency)
   110  
   111  	s.PersistLatency.Add(other.PersistLatency)
   112  	s.BytesPerPersist.Add(other.BytesPerPersist)
   113  
   114  	s.ChunksPerPersist.Add(other.ChunksPerPersist)
   115  	s.CompressedChunkBytesPerPersist.Add(other.CompressedChunkBytesPerPersist)
   116  	s.UncompressedChunkBytesPerPersist.Add(other.UncompressedChunkBytesPerPersist)
   117  
   118  	s.ConjoinLatency.Add(other.ConjoinLatency)
   119  	s.BytesPerConjoin.Add(other.BytesPerConjoin)
   120  	s.ChunksPerConjoin.Add(other.ChunksPerConjoin)
   121  	s.TablesPerConjoin.Add(other.TablesPerConjoin)
   122  
   123  	s.ReadManifestLatency.Add(other.ReadManifestLatency)
   124  	s.WriteManifestLatency.Add(other.WriteManifestLatency)
   125  }
   126  
   127  func (s Stats) Delta(other Stats) Stats {
   128  	return Stats{
   129  		s.OpenLatency.Delta(other.OpenLatency),
   130  		s.CommitLatency.Delta(other.CommitLatency),
   131  
   132  		s.IndexReadLatency.Delta(other.IndexReadLatency),
   133  		s.IndexBytesPerRead.Delta(other.IndexBytesPerRead),
   134  
   135  		s.GetLatency.Delta(other.GetLatency),
   136  		s.ChunksPerGet.Delta(other.ChunksPerGet),
   137  
   138  		s.FileReadLatency.Delta(other.FileReadLatency),
   139  		s.FileBytesPerRead.Delta(other.FileBytesPerRead),
   140  
   141  		s.S3ReadLatency.Delta(other.S3ReadLatency),
   142  		s.S3BytesPerRead.Delta(other.S3BytesPerRead),
   143  
   144  		s.MemReadLatency.Delta(other.MemReadLatency),
   145  		s.MemBytesPerRead.Delta(other.MemBytesPerRead),
   146  
   147  		s.DynamoReadLatency.Delta(other.DynamoReadLatency),
   148  		s.DynamoBytesPerRead.Delta(other.DynamoBytesPerRead),
   149  
   150  		s.HasLatency.Delta(other.HasLatency),
   151  		s.AddressesPerHas.Delta(other.AddressesPerHas),
   152  
   153  		s.PutLatency.Delta(other.PutLatency),
   154  
   155  		s.PersistLatency.Delta(other.PersistLatency),
   156  		s.BytesPerPersist.Delta(other.BytesPerPersist),
   157  
   158  		s.ChunksPerPersist.Delta(other.ChunksPerPersist),
   159  		s.CompressedChunkBytesPerPersist.Delta(other.CompressedChunkBytesPerPersist),
   160  		s.UncompressedChunkBytesPerPersist.Delta(other.UncompressedChunkBytesPerPersist),
   161  
   162  		s.ConjoinLatency.Delta(other.ConjoinLatency),
   163  		s.BytesPerConjoin.Delta(other.BytesPerConjoin),
   164  		s.ChunksPerConjoin.Delta(other.ChunksPerConjoin),
   165  		s.TablesPerConjoin.Delta(other.TablesPerConjoin),
   166  
   167  		s.ReadManifestLatency.Delta(other.ReadManifestLatency),
   168  		s.WriteManifestLatency.Delta(other.WriteManifestLatency),
   169  	}
   170  }
   171  
   172  func (s Stats) String() string {
   173  	return fmt.Sprintf(`---NBS Stats---
   174  OpenLatecy:                       %s
   175  CommitLatency:                    %s
   176  IndexReadLatency:                 %s
   177  IndexBytesPerRead:                %s
   178  GetLatency:                       %s
   179  ChunksPerGet:                     %s
   180  FileReadLatency:                  %s
   181  FileBytesPerRead:                 %s
   182  S3ReadLatency:                    %s
   183  S3BytesPerRead:                   %s
   184  MemReadLatency:                   %s
   185  MemBytesPerRead:                  %s
   186  DynamoReadLatency:                %s
   187  DynamoBytesPerRead:               %s
   188  HasLatency:                       %s
   189  AddressesHasGet:                  %s
   190  PutLatency:                       %s
   191  PersistLatency:                   %s
   192  BytesPerPersist:                  %s
   193  ChunksPerPersist:                 %s
   194  CompressedChunkBytesPerPersist:   %s
   195  UncompressedChunkBytesPerPersist: %s
   196  ConjoinLatency:                   %s
   197  BytesPerConjoin:                  %s
   198  ChunksPerConjoin:                 %s
   199  TablesPerConjoin:                 %s
   200  ReadManifestLatency:              %s
   201  WriteManifestLatency:             %s
   202  `,
   203  		s.OpenLatency,
   204  		s.CommitLatency,
   205  
   206  		s.IndexReadLatency,
   207  		s.IndexBytesPerRead,
   208  
   209  		s.GetLatency,
   210  		s.ChunksPerGet,
   211  
   212  		s.FileReadLatency,
   213  		s.FileBytesPerRead,
   214  
   215  		s.S3ReadLatency,
   216  		s.S3BytesPerRead,
   217  
   218  		s.MemReadLatency,
   219  		s.MemBytesPerRead,
   220  
   221  		s.DynamoReadLatency,
   222  		s.DynamoBytesPerRead,
   223  
   224  		s.HasLatency,
   225  		s.AddressesPerHas,
   226  
   227  		s.PutLatency,
   228  
   229  		s.PersistLatency,
   230  		s.BytesPerPersist,
   231  
   232  		s.ChunksPerPersist,
   233  		s.CompressedChunkBytesPerPersist,
   234  		s.UncompressedChunkBytesPerPersist,
   235  
   236  		s.ConjoinLatency,
   237  		s.BytesPerConjoin,
   238  		s.ChunksPerConjoin,
   239  		s.TablesPerConjoin,
   240  		s.ReadManifestLatency,
   241  		s.WriteManifestLatency)
   242  }