Skip to content

Commit

Permalink
GITBOOK-591: Disk requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
marcindsobczak authored and gitbook-bot committed Jun 28, 2023
1 parent ff9adc2 commit 49fb781
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 24 deletions.
Binary file added .gitbook/assets/image (2) (2) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (2) (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion ethereum-client/running-nethermind/running-the-client.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ sudo apt install libzstd1 -y


:warning: If you are prompted with a warning related to not being able to verify the developer of the program, open _System Preferences > Security & Privacy_ and click on "Allow Anyway" \
![](<../../.gitbook/assets/image (2).png>)\
![](<../../.gitbook/assets/image (2) (2).png>)\
More info can be found here: [https://support.apple.com/en-us/HT202491](https://support.apple.com/en-us/HT202491)
5. Select desired configuration
{% endtab %}
Expand Down
66 changes: 43 additions & 23 deletions first-steps-with-nethermind/system-requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,39 +53,59 @@ Supported operating systems

## Hardware requirements

Generally **the faster IO operations the better**. For this reason [Digital Ocean](https://www.digitalocean.com/) and [UpCloud](https://upcloud.com/) are so far the best cloud providers we have tested when running Nethermind nodes.
Suggested requirements can be found below.

When syncing locally make sure that you get the fastest SSD possible. Assume that any storage at HDD speed level is not supported (most likely will take many times longer to sync and possibly will not be able to catch up with the network).
| Network | Memory | Cores |
| ------------------- | :----: | :---: |
| **Mainnet** | 16 | 4 |
| **Mainnet Archive** | 128 | 8 |
| **Goerli** | 8 | 2 |
| **Goerli Archive** | 8 | 4 |
| **Gnosis** | 16 | 2 |
| **EnergyWeb** | 8 | 2 |
| **Volta** | 8 | 2 |

Internal testing showed the following IOPS required to sync mainnet, please note that this was a test environement ans results may vary. We recommend **at least 5000 IOPS** to properly sync mainnet. &#x20;
### Disk requirements

| IOPS | Sync time |
| ----- | --------- |
| 2000 | \~15:30h |
| 3000 | \~12:00h |
| 5000 | \~12:00h |
| 10000 | \~12:00h |
Running an Ethereum Mainnet full node requires at least a 1 TB fast disk, such as **NVMe or a fast SSD**. However, **2 TB is recommended** to minimize maintenance requirements. To choose a concrete disk model we recommend checking [Great and less great SSDs for Ethereum nodes](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038#the-good).\
\
Choosing a 2 TB disk is a comfortable option for most common Mainnet node usage patterns, including staking. Nonetheless, for a comprehensive understanding of disk growth and usage, we recommend delving further into the topic.

After startup the node will display the estimated max memory usage but not everything is accounted for and some block processing / some fast sync temporary caches may go above these values.
#### Database growth

You can use the config option --Init.MemoryHint to suggest the amount of memory to be used by the database and some network operations. During the sync process there will be more memory used for caches.
Nethermind requires approximately 504 GB of disk space (as of May 2023) after a fresh Ethereum Mainnet sync using default parameters. This size increases over time as the Ethereum chain grows. The node's database is in its most optimal state immediately after a sync or full pruning. Following the initial sync, the database grows at a rate of approximately 27 GB per week. To maintain this process, occasional resyncing or pruning of the node is necessary to bring it back to its optimal database size. For more info on managing node disk growth, see [How to reduce database size](https://docs.nethermind.io/nethermind/guides-and-helpers/how-to-reduce-database-size). \
Having a larger disk space allocation reduces the need for frequent maintenance and alleviates concerns about the chain outgrowing the available space. It's worth noting that the only drawback of running a smaller disk is the requirement for more regular resyncing or pruning. We believe that a 2 TB disk will suffice for most users. However, the choice between 1 TB and 2 TB depends on factors such as hardware costs, cloud provider expenses, and individual requirements.

Suggested requirements can be found below.
#### Disk speed

The speed of the disk often acts as a bottleneck for the node's performance. It is crucial for optimizing your validator's performance rewards and the syncing process. We highly recommend a disk with a minimum of 10,000 IOPS for both write and read operations. Slower disks may hinder your ability to synchronize the blockchain successfully.

#### Sync modes and disk usage

A node can be run using different syncing options, and each option has different characteristics of disk space usage.

* **Archive node.** This mode stores the full historical state for all blocks. As of July 2023, an archive node requires at least 14 TB of disk space, and it grows by approximately 60 GB per week.&#x20;
* **Ancient barriers.** Nethermind allows you to specify how many old block bodies and receipts you want to store. By default, Nethermind sets the ancient barrier at block 11052984. This block is significant because it marks the deployment of the deposit contract required for consensus client deposit scanning for validators. Peers and JSON-RPC requests will not have access to block bodies and receipts older than the ancient barrier.
* **NonValidatorMode.** This mode drops all historical receipts and bodies, but it cannot be used as a validator node.

For more detailed information about the various sync modes, see [Sync modes](https://docs.nethermind.io/nethermind/ethereum-client/sync-modes).

#### Database size with different configuration

You can try much lower setups with smaller networks.
The below table presents the Nethermind database size after fresh sync with different configurations and networks (as of May 2023).

| **Mainnet** | 800+ | 16 | 4 |
| ------------------- | :------------: | :-: | :-: |
| **Mainnet Archive** | 14000+ (14 TB) | 128 | 8 |
| **Goerli** | 100+ | 8 | 2 |
| **Goerli Archive** | 400+ | 8 | 4 |
| **Gnosis** | 120+ | 16 | 2 |
| **EnergyWeb** | 120+ | 8 | 2 |
| **Volta** | 200+ | 8 | 2 |
| Network/configuration | Database size after fresh sync |
| --------------------------------------- | ------------------------------ |
| Mainnet (default settings) | 504 GB |
| Mainnet without ancient barriers | 664 GB |
| Mainnet archive | 14 TB |
| Mainnet without old bodies and receipts | 178 GB |
| Gnosis | 112 GB |
| Goerli | 240 GB |

### Disk space requirements:
#### Database in details

A freshly fast synced Mainnet disk space usage (as of May 2023)
A freshly fast synced Mainnet disk space with details about concrete databases (as of May 2023).

<table><thead><tr><th width="238">Database</th><th width="251.33333333333331">Mainnet</th><th>Mainnet with Ancient Barriers</th></tr></thead><tbody><tr><td>State</td><td>161 GB</td><td>161 GB</td></tr><tr><td>Receipts</td><td>152 GB</td><td>104 GB</td></tr><tr><td>Blocks</td><td>334 GB</td><td>222 GB</td></tr><tr><td>Bloom</td><td>5.3 GB</td><td>5.3 GB</td></tr><tr><td>Headers</td><td>8.1 GB</td><td>8.1 GB</td></tr><tr><td>Code</td><td>3 GB</td><td>3 GB</td></tr><tr><td>Other</td><td>...</td><td>..</td></tr><tr><td><strong>Total</strong></td><td><strong>664 GB</strong></td><td><strong>504 GB</strong></td></tr></tbody></table>

0 comments on commit 49fb781

Please sign in to comment.