Skip to content

Excessive memory consumption when syncing a long way up to the canonical head #3207

@mjfh

Description

@mjfh

Since PR #3191 the Nimbus EL has an annoying memory problem in the FC module as the syncer does not update base anymore while importing blocks. This happens at least when the syncer has to catch up a long way.

Previously, there was a kludge related to the syncer which used the forkChoice() function for base update.

Now base can only be updated if the CL triggers a forkChoiceUpdated which has no effect if the update is out of scope for the FC module, which in turn happens when syncing for an old or pristine database state.

In fact, this leads to a similar situation to when mainnet was unable to finalise transactions globally.

For the attached screenshot, I ran the syncer overnight (with turned off CL) and had the following memory usage in the morning

  • 78.9GiB virtual (from metrics screen)
  • 41.4GiB physical (from metrics screen)
  • 22GiB extra swap space freed after stopping the process

As it seems, a big machine can handle the situation to an extend but the execution throughput decreases.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    ELSyncPrevents or affects sync with Ethereum network

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions