change(docs): Refactor the system requirements (#6697)

* Simplify the summary in the book

* Refactor the system requirements

* Apply suggestions from code review

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>

---------

Co-authored-by: Alfredo Garcia <oxarbitrage@gmail.com>
This commit is contained in:
Marek 2023-05-18 23:25:05 +02:00 committed by GitHub
parent de08b01fd4
commit 0c1abadd0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 87 additions and 129 deletions

111
README.md
View File

@ -13,16 +13,11 @@
- [Using Zebra](#using-zebra)
- [Release Candidates](#release-candidates)
- [Getting Started](#getting-started)
- [Docker](#docker)
- [Building Zebra](#building-zebra)
- [Optional Features](#optional-features)
- [Configuring JSON-RPC for lightwalletd](#configuring-json-rpc-for-lightwalletd)
- [System Requirements](#system-requirements)
- [Memory Troubleshooting](#memory-troubleshooting)
- [macOS Test Troubleshooting](#macos-test-troubleshooting)
- [Network Ports and Data Usage](#network-ports-and-data-usage)
- [Network Troubleshooting](#network-troubleshooting)
- [Disk Usage](#disk-usage)
- [Disk Troubleshooting](#disk-troubleshooting)
- [Network Ports](#network-ports)
- [Known Issues](#known-issues)
- [Future Work](#future-work)
- [Documentation](#documentation)
@ -73,7 +68,12 @@ Zebra validates blocks and transactions, but needs extra software to generate th
## Getting Started
You can run Zebra using our Docker image.
You can run Zebra using our Docker image or you can build it manually. Please
see the [requirements section of the Zebra Book](https://zebra.zfnd.org/user/requirements.html) for system
requirements.
### Docker
This command will run our latest release, and sync it to the tip:
```sh
@ -176,103 +176,16 @@ See the [RPC config documentation](https://doc.zebra.zfnd.org/zebra_rpc/config/s
It is recommended to use [adityapk00/lightwalletd](https://github.com/adityapk00/lightwalletd) because that is used in testing.
Other `lightwalletd` forks have limited support, see the [detailed `lightwalletd` instructions](https://github.com/ZcashFoundation/zebra/blob/main/book/src/user/lightwalletd.md#sync-lightwalletd).
### System Requirements
The recommended requirements for compiling and running `zebrad` are:
- 4 CPU cores
- 16 GB RAM
- 300 GB available disk space for building binaries and storing cached chain state
- 100 Mbps network connection, with 300 GB of uploads and downloads per month
We continuously test that our builds and tests pass on:
The _latest_ [GitHub Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources) for:
- macOS
- Ubuntu
Docker:
- Debian Bullseye
Zebra's tests can take over an hour, depending on your machine.
We're working on making them faster.
`zebrad` might build and run fine on smaller and slower systems - we haven't
tested its exact limits yet.
For more detailed requirements, refer to the [documentation](https://zebra.zfnd.org/user/requirements.html).
#### Memory Troubleshooting
If Zebra's build runs out of RAM, try setting:
`export CARGO_BUILD_JOBS=2`
If Zebra's tests timeout or run out of RAM, try running:
`cargo test -- --test-threads=2`
(cargo uses all the processor cores on your machine by default.)
#### macOS Test Troubleshooting
Some of Zebra's tests deliberately cause errors that make Zebra panic.
macOS records these panics as crash reports.
If you are seeing "Crash Reporter" dialogs during Zebra tests,
you can disable them using this Terminal.app command:
```sh
defaults write com.apple.CrashReporter DialogType none
```
### Network Ports and Data Usage
### Network Ports
Zebra uses the following inbound and outbound TCP ports:
- 8233 on Mainnet
- 18233 on Testnet
Outbound connections are required to sync, inbound connections are optional.
Zebra also needs access to the Zcash DNS seeders, via the OS DNS resolver (usually port 53).
Zebra needs some peers which have a round-trip latency of 2 seconds or less.
If this is a problem for you, please
[open a ticket.](https://github.com/ZcashFoundation/zebra/issues/new/choose)
`zebrad`'s typical mainnet network usage is:
- Initial sync: 100 GB download, we expect the initial download to grow to hundreds of gigabytes over time
- Ongoing updates: 10 MB - 10 GB upload and download per day, depending on user-created transaction size and peer requests
Zebra performs an initial sync every time its internal database version changes,
so some version upgrades might require a full download of the whole chain.
For more detailed information, refer to the [documentation](https://zebra.zfnd.org/user/run.html).
#### Network Troubleshooting
Some of Zebra's tests download Zcash blocks, so they might be unreliable depending on your network connection.
You can set `ZEBRA_SKIP_NETWORK_TESTS=1` to skip the network tests.
Zebra may be unreliable on Testnet, and under less-than-perfect network conditions.
See our [roadmap](#future-work) for details.
### Disk Usage
Zebra uses around 200 GB of space for cached mainnet data, and 10 GB of space for cached testnet data.
We expect disk usage to grow over time, so we recommend reserving at least 300 GB for mainnet nodes.
Zebra's database cleans up outdated data periodically, and when Zebra is shut down and restarted.
#### Disk Troubleshooting
Zebra's state commits changes using RocksDB database transactions.
If you forcibly terminate Zebra, or it panics,
any incomplete changes will be rolled back the next time it starts.
So Zebra's state should always be valid, unless your OS or disk hardware is corrupting data.
Please see the [Network
Requirements](https://zebra.zfnd.org/user/requirements.html#network-requirements-and-ports)
section of the Zebra book for more details.
## Known Issues

View File

@ -1,8 +1,9 @@
# Summary
[Zebra](README.md)
- [User Documentation](user.md)
- [Zebra System Requirements](user/requirements.md)
- [System Requirements](user/requirements.md)
- [Supported Platforms](user/supported-platforms.md)
- [Platform Tier Policy](user/target-tier-policies.md)
- [Installing Zebra](user/install.md)

View File

@ -1,46 +1,90 @@
# System Requirements
We usually build `zebrad` on systems with:
We recommend the following requirements for compiling and running `zebrad`:
- 2+ CPU cores
- 7+ GB RAM
- 14+ GB of disk space
- 4 CPU cores
- 16 GB RAM
- 300 GB available disk space for building binaries and storing cached chain
state
- 100 Mbps network connection, with 300 GB of uploads and downloads per month
On many-core machines (like, 32-core) the build is very fast; on 2-core machines
it's less fast.
Zebra's tests can take over an hour, depending on your machine. Note that you
might be able to build and run Zebra on slower systems — we haven't tested its
exact limits yet.
We continuously test that our builds and tests pass on:
## Disk Requirements
- macOS Big Sur 11.0
- Ubuntu 18.04 / the latest LTS
- Debian Buster
Zebra uses around 300 GB for cached Mainnet data, and 10 GB for cached Testnet
data. We expect disk usage to grow over time.
We usually run `zebrad` on systems with:
Zebra cleans up its database periodically, and also when you shut it down or
restart it. Changes are committed using RocksDB database transactions. If you
forcibly terminate Zebra, or it panics, any incomplete changes will be rolled
back the next time it starts. So Zebra's state should always be valid, unless
your OS or disk hardware is corrupting data.
- 4+ CPU cores
- 16+ GB RAM
- 50GB+ available disk space for finalized state
- 100+ Mbps network connections
## Network Requirements and Ports
`zebrad` might build and run fine on smaller and slower systems - we haven't
tested its exact limits yet.
Zebra uses the following inbound and outbound TCP ports:
# Additional Features
- 8233 on Mainnet
- 18233 on Testnet
Outbound connections are required to sync, inbound connections are optional.
Zebra also needs access to the Zcash DNS seeders, via the OS DNS resolver
(usually port 53).
The typical Mainnet network usage is:
- Initial sync: 300 GB download, as already noted, we expect the initial
download to grow.
- Ongoing updates: 10 MB - 10 GB upload and download per day, depending on
user-created transaction size and peer requests.
Zebra performs an initial sync every time its internal database version changes,
so some version upgrades might require a full download of the whole chain.
Zebra needs some peers which have a round-trip latency of 2 seconds or less. If
this is a problem for you, please [open a
ticket.](https://github.com/ZcashFoundation/zebra/issues/new/choose)
## Sentry Production Monitoring
Compile Zebra with `--features sentry` to monitor it using Sentry in production.
## Lightwalletd Test Requirements
# Troubleshooting
To test Zebra's `lightwalletd` RPC methods:
We continuously test that our builds and tests pass on the _latest_ [GitHub
Runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)
for:
- compile Zebra with the `--features lightwalletd-grpc-tests`
- install a `lightwalletd` binary
- Zebra's tests currently target [adityapk00/lightwalletd](https://github.com/adityapk00/lightwalletd)
- some tests might fail on other lightwalletd versions, due to differences in the logs
- install the `protoc` Protobuf compiler:
- the `protobuf-compiler` or `protobuf` package, or
- `cmake` to automatically compile `protoc` in the `zebrad` build script
- set the required test environmental variables:
- TODO: list or link to test environmental variables - [see ticket #4363](https://github.com/ZcashFoundation/zebra/issues/4363)
- macOS,
- Ubuntu,
- Docker:
- Debian Bullseye.
## Memory Issues
- If Zebra's build runs out of RAM, try setting `export CARGO_BUILD_JOBS=2`.
- If Zebra's tests timeout or run out of RAM, try running `cargo test -- --test-threads=2`. Note that `cargo` uses all processor cores on your machine
by default.
## Network Issues
- Some of Zebra's tests download Zcash blocks, so they might be unreliable
depending on your network connection. You can set `ZEBRA_SKIP_NETWORK_TESTS=1`
to skip the network tests.
- Zebra may be unreliable on Testnet, and under less-than-perfect network
conditions. See our [future
work](https://github.com/ZcashFoundation/zebra#future-work) for details.
## Issues with Tests on macOS
Some of Zebra's tests deliberately cause errors that make Zebra panic. macOS
records these panics as crash reports. If you are seeing "Crash Reporter"
dialogs during Zebra tests, you can disable them using this Terminal.app
command:
```sh
defaults write com.apple.CrashReporter DialogType none
```