core/state/snapshot: fix expensive metric, track snapshot flushed keys

This commit is contained in:
Péter Szilágyi 2022-06-07 17:36:55 +03:00 committed by Marius van der Wijden
parent b40fade42c
commit 157bc26b5a

View file

@ -550,8 +550,10 @@ func diffToDisk(bottom *diffLayer) *diskLayer {
base.cache.Set(hash[:], data) base.cache.Set(hash[:], data)
snapshotCleanAccountWriteMeter.Mark(int64(len(data))) snapshotCleanAccountWriteMeter.Mark(int64(len(data)))
snapshotFlushAccountItemMeter.Mark(1) snapshotFlushAccountItemMeter.Mark(1)
snapshotFlushAccountSizeMeter.Mark(int64(len(data))) snapshotFlushAccountSizeMeter.Mark(common.HashLength + int64(len(data)))
if metrics.EnabledExpensive { if metrics.EnabledExpensive {
if oldbytes := len(rawdb.ReadAccountSnapshot(base.diskdb, hash)); oldbytes == 0 { if oldbytes := len(rawdb.ReadAccountSnapshot(base.diskdb, hash)); oldbytes == 0 {
snapshotAccountCountGrowthMeter.Mark(1) snapshotAccountCountGrowthMeter.Mark(1)
@ -596,16 +598,19 @@ func diffToDisk(bottom *diffLayer) *diskLayer {
} else { } else {
snapshotStorageBytesGrowthMeter.Mark(int64(len(data) - oldbytes)) snapshotStorageBytesGrowthMeter.Mark(int64(len(data) - oldbytes))
} }
snapshotFlushStorageItemMeter.Mark(1)
snapshotFlushStorageSizeMeter.Mark(2*common.HashLength + int64(len(data)))
} }
} else { } else {
rawdb.DeleteStorageSnapshot(batch, accountHash, storageHash) rawdb.DeleteStorageSnapshot(batch, accountHash, storageHash)
base.cache.Set(append(accountHash[:], storageHash[:]...), nil) base.cache.Set(append(accountHash[:], storageHash[:]...), nil)
snapshotStorageCountGrowthMeter.Mark(-1) if metrics.EnabledExpensive {
snapshotStorageBytesGrowthMeter.Mark(-int64(2*common.HashLength + len(rawdb.ReadStorageSnapshot(base.diskdb, accountHash, storageHash)))) snapshotStorageCountGrowthMeter.Mark(-1)
snapshotStorageBytesGrowthMeter.Mark(-int64(2*common.HashLength + len(rawdb.ReadStorageSnapshot(base.diskdb, accountHash, storageHash))))
}
snapshotFlushStorageItemMeter.Mark(1)
} }
snapshotFlushStorageItemMeter.Mark(1)
snapshotFlushStorageSizeMeter.Mark(int64(len(data)))
} }
} }
// Update the snapshot block marker and write any remainder data // Update the snapshot block marker and write any remainder data