Closed dib542 closed 10 months ago
Here is an example of the import speeds after several thousand transactions have been imported:
[start] info: import progress: 82.7% (3,600 items) (fetching: 4,614ms, parsing: 381ms, processing: 21,250ms per item)
--
[start] info: timing:
[start] fetching : 4614.45ms (called 101 times: 45.688ms per call)
[start] fetching:height : 259.52ms (called 100 times: 2.595ms per call)
[start] fetching:height:try-000 : 259.52ms (called 100 times: 2.595ms per call)
[start] fetching:height:try-000:last : 259.52ms (called 100 times: 2.595ms per call)
[start] fetching:txs : 4354.94ms (called 1 times: 4354.936ms per call)
[start] fetching:txs:try-000 : 4354.94ms (called 1 times: 4354.936ms per call)
[start] fetching:txs:try-000:last : 4354.94ms (called 1 times: 4354.936ms per call)
[start] parsing : 381.10ms (called 101 times: 3.773ms per call)
[start] parsing:height : 15.68ms (called 100 times: 0.157ms per call)
[start] parsing:txs : 365.42ms (called 1 times: 365.418ms per call)
[start] parsing:txs:size-100 : 365.42ms (called 1 times: 365.418ms per call)
[start] processing : 2125047.65ms (called 399645 times: 5.317ms per call)
[start] processing:txs : 2125047.65ms (called 399645 times: 5.317ms per call)
[start] processing:txs:block : 41.62ms (called 100 times: 0.416ms per call)
[start] processing:txs:derived.tick_state : 10654.45ms (called 58665 times: 0.182ms per call)
[start] processing:txs:derived.tick_state:get : 6313.35ms (called 39064 times: 0.162ms per call)
[start] processing:txs:derived.tick_state:get:tick_state : 6313.35ms (called 39064 times: 0.162ms per call)
[start] processing:txs:derived.tick_state:set : 4341.10ms (called 19601 times: 0.221ms per call)
[start] processing:txs:derived.tick_state:set:tick_state : 4341.10ms (called 19601 times: 0.221ms per call)
[start] processing:txs:derived.tx_price_data : 2073475.75ms (called 58614 times: 35.375ms per call)
[start] processing:txs:derived.tx_price_data:get : 2060363.50ms (called 39202 times: 52.558ms per call)
[start] processing:txs:derived.tx_price_data:get:tick_state : 2055715.09ms (called 19601 times: 104.878ms per call)
[start] processing:txs:derived.tx_price_data:get:tx_price_data : 4648.41ms (called 19601 times: 0.237ms per call)
[start] processing:txs:derived.tx_price_data:set : 13112.25ms (called 19412 times: 0.675ms per call)
[start] processing:txs:derived.tx_price_data:set:tx_price_data : 13112.25ms (called 19412 times: 0.675ms per call)
[start] processing:txs:derived.tx_volume_data : 2073077.26ms (called 58734 times: 35.296ms per call)
[start] processing:txs:derived.tx_volume_data:get : 2067400.52ms (called 39202 times: 52.737ms per call)
[start] processing:txs:derived.tx_volume_data:get:tick_state : 2061672.99ms (called 19601 times: 105.182ms per call)
[start] processing:txs:derived.tx_volume_data:get:tx_volume_data : 5727.54ms (called 19601 times: 0.292ms per call)
[start] processing:txs:derived.tx_volume_data:set : 5676.73ms (called 19532 times: 0.291ms per call)
[start] processing:txs:derived.tx_volume_data:set:tx_volume_data : 5676.73ms (called 19532 times: 0.291ms per call)
[start] processing:txs:dex.pairs : 6640.34ms (called 41144 times: 0.161ms per call)
[start] processing:txs:dex.tokens : 6994.06ms (called 41144 times: 0.170ms per call)
[start] processing:txs:event.Deposit : 19.03ms (called 80 times: 0.238ms per call)
[start] processing:txs:event.PlaceLimitOrder : 10.76ms (called 40 times: 0.269ms per call)
[start] processing:txs:event.TickUpdate : 12126.87ms (called 58596 times: 0.207ms per call)
[start] processing:txs:event.TickUpdate:get : 6512.63ms (called 39064 times: 0.167ms per call)
[start] processing:txs:event.TickUpdate:get:event.TickUpdate : 6512.63ms (called 39064 times: 0.167ms per call)
[start] processing:txs:event.TickUpdate:set : 5614.24ms (called 19532 times: 0.287ms per call)
[start] processing:txs:event.TickUpdate:set:event.TickUpdate : 5614.24ms (called 19532 times: 0.287ms per call)
[start] processing:txs:event.Withdraw : 8.92ms (called 40 times: 0.223ms per call)
[start] processing:txs:tx : 21.37ms (called 100 times: 0.214ms per call)
[start] processing:txs:tx_msg : 703.46ms (called 41144 times: 0.017ms per call)
[start] processing:txs:tx_result.events : 15379.93ms (called 41144 times: 0.374ms per call)
The main issue appears to be the "get tick state" step of processing data for both the derived.tx_price_data
and derived.tx_volume_data
tables.
this PR adds much more detailed timings in the logs of the indexer to details how fast each part of the transaction syncing takes the most time.
Previously
A single line was used per import request and processing
Now
A breakdown of the timing is included, and the "fetching" category is broken down into "fetching" and "back-off" to distinguish between active fetching and waiting in between fetches due to the back-off algorithm.
Here is a typical breakdown of the syncing of a single transaction after many requests to a cloud node have failed.