github.com/ethereum/go-ethereum@v1.14.4-0.20240516095835-473ee8fc07a3/core/txpool/blobpool/metrics.go (about) 1 // Copyright 2023 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package blobpool 18 19 import "github.com/ethereum/go-ethereum/metrics" 20 21 var ( 22 // datacapGauge tracks the user's configured capacity for the blob pool. It 23 // is mostly a way to expose/debug issues. 24 datacapGauge = metrics.NewRegisteredGauge("blobpool/datacap", nil) 25 26 // The below metrics track the per-datastore metrics for the primary blob 27 // store and the temporary limbo store. 28 datausedGauge = metrics.NewRegisteredGauge("blobpool/dataused", nil) 29 datarealGauge = metrics.NewRegisteredGauge("blobpool/datareal", nil) 30 slotusedGauge = metrics.NewRegisteredGauge("blobpool/slotused", nil) 31 32 limboDatausedGauge = metrics.NewRegisteredGauge("blobpool/limbo/dataused", nil) 33 limboDatarealGauge = metrics.NewRegisteredGauge("blobpool/limbo/datareal", nil) 34 limboSlotusedGauge = metrics.NewRegisteredGauge("blobpool/limbo/slotused", nil) 35 36 // The below metrics track the per-shelf metrics for the primary blob store 37 // and the temporary limbo store. 38 shelfDatausedGaugeName = "blobpool/shelf_%d/dataused" 39 shelfDatagapsGaugeName = "blobpool/shelf_%d/datagaps" 40 shelfSlotusedGaugeName = "blobpool/shelf_%d/slotused" 41 shelfSlotgapsGaugeName = "blobpool/shelf_%d/slotgaps" 42 43 limboShelfDatausedGaugeName = "blobpool/limbo/shelf_%d/dataused" 44 limboShelfDatagapsGaugeName = "blobpool/limbo/shelf_%d/datagaps" 45 limboShelfSlotusedGaugeName = "blobpool/limbo/shelf_%d/slotused" 46 limboShelfSlotgapsGaugeName = "blobpool/limbo/shelf_%d/slotgaps" 47 48 // The oversized metrics aggregate the shelf stats above the max blob count 49 // limits to track transactions that are just huge, but don't contain blobs. 50 // 51 // There are no oversized data in the limbo, it only contains blobs and some 52 // constant metadata. 53 oversizedDatausedGauge = metrics.NewRegisteredGauge("blobpool/oversized/dataused", nil) 54 oversizedDatagapsGauge = metrics.NewRegisteredGauge("blobpool/oversized/datagaps", nil) 55 oversizedSlotusedGauge = metrics.NewRegisteredGauge("blobpool/oversized/slotused", nil) 56 oversizedSlotgapsGauge = metrics.NewRegisteredGauge("blobpool/oversized/slotgaps", nil) 57 58 // basefeeGauge and blobfeeGauge track the current network 1559 base fee and 59 // 4844 blob fee respectively. 60 basefeeGauge = metrics.NewRegisteredGauge("blobpool/basefee", nil) 61 blobfeeGauge = metrics.NewRegisteredGauge("blobpool/blobfee", nil) 62 63 // pooltipGauge is the configurable miner tip to permit a transaction into 64 // the pool. 65 pooltipGauge = metrics.NewRegisteredGauge("blobpool/pooltip", nil) 66 67 // addwait/time, resetwait/time and getwait/time track the rough health of 68 // the pool and whether it's capable of keeping up with the load from the 69 // network. 70 addwaitHist = metrics.NewRegisteredHistogram("blobpool/addwait", nil, metrics.NewExpDecaySample(1028, 0.015)) 71 addtimeHist = metrics.NewRegisteredHistogram("blobpool/addtime", nil, metrics.NewExpDecaySample(1028, 0.015)) 72 getwaitHist = metrics.NewRegisteredHistogram("blobpool/getwait", nil, metrics.NewExpDecaySample(1028, 0.015)) 73 gettimeHist = metrics.NewRegisteredHistogram("blobpool/gettime", nil, metrics.NewExpDecaySample(1028, 0.015)) 74 pendwaitHist = metrics.NewRegisteredHistogram("blobpool/pendwait", nil, metrics.NewExpDecaySample(1028, 0.015)) 75 pendtimeHist = metrics.NewRegisteredHistogram("blobpool/pendtime", nil, metrics.NewExpDecaySample(1028, 0.015)) 76 resetwaitHist = metrics.NewRegisteredHistogram("blobpool/resetwait", nil, metrics.NewExpDecaySample(1028, 0.015)) 77 resettimeHist = metrics.NewRegisteredHistogram("blobpool/resettime", nil, metrics.NewExpDecaySample(1028, 0.015)) 78 79 // The below metrics track various cases where transactions are dropped out 80 // of the pool. Most are exceptional, some are chain progression and some 81 // threshold cappings. 82 dropInvalidMeter = metrics.NewRegisteredMeter("blobpool/drop/invalid", nil) // Invalid transaction, consensus change or bugfix, neutral-ish 83 dropDanglingMeter = metrics.NewRegisteredMeter("blobpool/drop/dangling", nil) // First nonce gapped, bad 84 dropFilledMeter = metrics.NewRegisteredMeter("blobpool/drop/filled", nil) // State full-overlap, chain progress, ok 85 dropOverlappedMeter = metrics.NewRegisteredMeter("blobpool/drop/overlapped", nil) // State partial-overlap, chain progress, ok 86 dropRepeatedMeter = metrics.NewRegisteredMeter("blobpool/drop/repeated", nil) // Repeated nonce, bad 87 dropGappedMeter = metrics.NewRegisteredMeter("blobpool/drop/gapped", nil) // Non-first nonce gapped, bad 88 dropOverdraftedMeter = metrics.NewRegisteredMeter("blobpool/drop/overdrafted", nil) // Balance exceeded, bad 89 dropOvercappedMeter = metrics.NewRegisteredMeter("blobpool/drop/overcapped", nil) // Per-account cap exceeded, bad 90 dropOverflownMeter = metrics.NewRegisteredMeter("blobpool/drop/overflown", nil) // Global disk cap exceeded, neutral-ish 91 dropUnderpricedMeter = metrics.NewRegisteredMeter("blobpool/drop/underpriced", nil) // Gas tip changed, neutral 92 dropReplacedMeter = metrics.NewRegisteredMeter("blobpool/drop/replaced", nil) // Transaction replaced, neutral 93 94 // The below metrics track various outcomes of transactions being added to 95 // the pool. 96 addInvalidMeter = metrics.NewRegisteredMeter("blobpool/add/invalid", nil) // Invalid transaction, reject, neutral 97 addUnderpricedMeter = metrics.NewRegisteredMeter("blobpool/add/underpriced", nil) // Gas tip too low, neutral 98 addStaleMeter = metrics.NewRegisteredMeter("blobpool/add/stale", nil) // Nonce already filled, reject, bad-ish 99 addGappedMeter = metrics.NewRegisteredMeter("blobpool/add/gapped", nil) // Nonce gapped, reject, bad-ish 100 addOverdraftedMeter = metrics.NewRegisteredMeter("blobpool/add/overdrafted", nil) // Balance exceeded, reject, neutral 101 addOvercappedMeter = metrics.NewRegisteredMeter("blobpool/add/overcapped", nil) // Per-account cap exceeded, reject, neutral 102 addNoreplaceMeter = metrics.NewRegisteredMeter("blobpool/add/noreplace", nil) // Replacement fees or tips too low, neutral 103 addNonExclusiveMeter = metrics.NewRegisteredMeter("blobpool/add/nonexclusive", nil) // Plain transaction from same account exists, reject, neutral 104 addValidMeter = metrics.NewRegisteredMeter("blobpool/add/valid", nil) // Valid transaction, add, neutral 105 )