Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: enable receipt prefetching by default #7661

Merged
merged 2 commits into from
Sep 23, 2022

Commits on Sep 23, 2022

  1. feat: enable receipt prefetching by default

    Prefetch receipt meta data (account and access keys) ahead of time.
    This recent performance optimization has been disabled by default.
    
    In lab settings, performance improvement is confirmed. Using the
    estimator to measure the time it takes to process empty receipts,
    on a DB with 2 million accounts, on a local SSD, with enabled shard
    caches. The result is as follows.
    
    - sender = receiver:  737us -> 386 us
    - sender != receiver: 1014us -> 644us
    - overhead per block: 6.9us -> 7.4us
    
    Note that this is with 100 empty receipts in the same block, with all
    different accounts. In real traffic it usually does not happen that so
    many different accounts are accessed in the same block. But it is
    allowed and we must be able process this case in reasonable time.
    So even if it might not help in the average case, it makes sense to
    activate this feature to speed up the worst-case.
    
    Currently we use 8 IO threads per shard. Repeated experiments with
    more threads showed no difference.
    Decreasing it to 4 threads is about equal to 8 threads. Going lower is
    significantly worse. Thus, overall, 8 threads seems reasonable here.
    
    Canary nodes in testnet and mainnet with the feature enabled show that
    the feature also works as expected on real traffic. The memory impact is
    minimal, usually less than 40MB of reserved capacity, which is less than
    8MB actual memory because 8 threads reserve 4MB each ahead of actually
    fetching the data.
    jakmeier committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    6158cc2 View commit details
    Browse the repository at this point in the history
  2. update changelog

    jakmeier committed Sep 23, 2022
    Configuration menu
    Copy the full SHA
    d98d7b9 View commit details
    Browse the repository at this point in the history