github.com/jbendotnet/noms@v0.0.0-20190904222105-c43e4293ea92/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/attic-labs/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 }