erigon-pulse/cmd/hack/scripts/geth_log_parse.py

60 lines
2.4 KiB
Python
Raw Normal View History

import datetime
with open('/Users/alexeyakhunov/workspace/src/github.com/ledgerwatch/turbo-geth/badger.log') as f:
lines = f.readlines()
print(len(lines))
seconds_before_reset = 0
seconds_since_reset = 0
last_reset = None
last_block = 0
trie_nodes = 0
db_size = 0
heap = 0
with open('/Users/alexeyakhunov/workspace/src/github.com/ledgerwatch/turbo-geth/badger.csv', 'w') as w:
for l in lines:
if l.startswith('Oct'):
l = l[49:]
if l.startswith('INFO ['):
# Line with date time, parse it INFO [01-29|01:31:18]
# datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]])
dt = datetime.datetime(2018, int(l[6:8]), int(l[9:11]), int(l[12:14]), int(l[15:17]), int(l[18:20]))
if 'Block synchronisation started' in l:
print(l)
last_reset = dt
print('Before Reset. Hours before reset:', (seconds_before_reset/3600.0), '. Hours since last reset:', (seconds_since_reset/3600.0))
seconds_before_reset += seconds_since_reset
seconds_since_reset = 0
print('After Reset. Hours before reset:', (seconds_before_reset / 3600.0), '. Hours since last reset:', (seconds_since_reset / 3600.0))
if ('Memory' in l) and ('nodes=' in l):
ns = l.index('nodes=') + len('nodes=')
ne = len(l)
if ' ' in l[ns:]:
ne = l.index(' ', ns)
trie_nodes = int(l[ns:ne])
if ('Database' in l) and ('size=' in l):
ns = l.index('size=') + len('size=')
ws = l.index(' written=', ns)
s = int(l[ns:ws])
if s > db_size:
db_size = s
if ('Memory' in l) and ('alloc=' in l):
ns = l.index('alloc=') + len('alloc=')
ne = l.index(' ', ns)
heap = int(l[ns:ne])
if 'Imported new chain segment' in l:
ns = l.index('number=') + len('number=')
ne = l.index(' ', ns)
block = int(l[ns:ne])
if block > last_block:
if not last_reset is None:
seconds_since_reset = (dt - last_reset).total_seconds()
print(block/1000000.0, ',', \
(seconds_before_reset + seconds_since_reset)/3600.0, ',', \
db_size/1024.0/1024.0/1024.0, ',', \
trie_nodes/1000000.0, ',', \
heap/1024.0/1024.0, file=w)