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 }