README: architectures section rewritten without test measurements
CI / unittests (ubuntu-24.04) (push) Canceled after 0s
CI / unittests (ubuntu-24.04-arm) (push) Canceled after 0s
CI / pycodestyle (push) Canceled after 0s
CI / build_docs (push) Canceled after 0s
CI / docker (ubuntu-24.04) (push) Canceled after 0s
CI / docker (ubuntu-24.04-arm) (push) Canceled after 0s
CI / integration (leveldb, ubuntu-24.04) (push) Canceled after 0s
CI / integration (leveldb, ubuntu-24.04-arm) (push) Canceled after 0s
CI / integration (rocksdb, ubuntu-24.04) (push) Canceled after 0s
CI / integration (rocksdb, ubuntu-24.04-arm) (push) Canceled after 0s
CI / unittests (ubuntu-24.04) (push) Canceled after 0s
CI / unittests (ubuntu-24.04-arm) (push) Canceled after 0s
CI / pycodestyle (push) Canceled after 0s
CI / build_docs (push) Canceled after 0s
CI / docker (ubuntu-24.04) (push) Canceled after 0s
CI / docker (ubuntu-24.04-arm) (push) Canceled after 0s
CI / integration (leveldb, ubuntu-24.04) (push) Canceled after 0s
CI / integration (leveldb, ubuntu-24.04-arm) (push) Canceled after 0s
CI / integration (rocksdb, ubuntu-24.04) (push) Canceled after 0s
CI / integration (rocksdb, ubuntu-24.04-arm) (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b53f9fdf5b
commit
be689666cd
1 file changed
+11
-31
@@ -54,41 +54,21 @@ describes a full installation.
|
|||||||
|
|
||||||
## Architectures (amd64 and ARM)
|
## Architectures (amd64 and ARM)
|
||||||
|
|
||||||
The code is pure Python, the Docker images (server and integration-test node) pick the right binaries
|
amd64 and arm64 (for example a Raspberry Pi 5) are both supported. The code is pure Python, and the Docker images
|
||||||
for the architecture (`TARGETARCH`, Debian packages), so amd64 and arm64 are both meant to work.
|
(server and integration-test node) pick the right binaries for the architecture (`TARGETARCH`, Debian packages).
|
||||||
|
The CI runs the `unittests`, `integration` (LevelDB and RocksDB) and `docker` jobs on both architectures
|
||||||
|
(`ubuntu-24.04` and `ubuntu-24.04-arm`).
|
||||||
|
|
||||||
Verified on aarch64 (Raspberry Pi, Debian 12, Docker 29):
|
Without Docker, the DB engine bindings are compiled from source, so the development headers are needed;
|
||||||
|
`rocksdb-ng` requires RocksDB >= 8.0 (Debian 13 or the Docker image, not Debian 12). See the "Architectures" section
|
||||||
|
of `DEPLOY.md`.
|
||||||
|
|
||||||
- the integration-test node image builds (official `aarch64-linux-gnu` release, signature checked);
|
To build the server image for both architectures:
|
||||||
- `tests/integration` with LevelDB: 21 passed; unit tests (without `test_storage.py`): 181 passed; `pycodestyle` clean;
|
|
||||||
- the server image builds, `contrib/docker-smoke-test.sh` passes and `rocksdb` imports inside it;
|
|
||||||
- `tests/integration` with RocksDB 9.10 (`python:3.14-trixie` container): 21 passed;
|
|
||||||
- the systemd unit in `contrib/systemd` starts, syncs a regtest chain, answers on the Electrum protocol and
|
|
||||||
`electrumx_rpc`, and stops cleanly through its `ExecStop`.
|
|
||||||
|
|
||||||
Verified on amd64 (Ubuntu 24.04, Docker 29): `pycodestyle` clean; unit tests 181 passed; `tests/integration` with LevelDB
|
docker buildx build --platform linux/amd64,linux/arm64 -t <registry>/plm-electrumx:<tag> --push .
|
||||||
and with RocksDB 9.10 (`python:3.14-trixie` container): 21 passed each; `tests/server/test_storage.py` with both engines:
|
|
||||||
16 passed; `docker build --no-cache` and `contrib/docker-smoke-test.sh` pass.
|
|
||||||
|
|
||||||
Full sync on amd64 (server image with default `CACHE_MB=1200`, against a mainnet Palladium node in Docker, both started on empty
|
Building the arm64 variant on an amd64 host needs QEMU emulation (`docker run --privileged --rm tonistiigi/binfmt --install arm64`)
|
||||||
data directories, 23 GB RAM, WSL2): the server was at the chain tip (height 544,059, 663,860 txs) 18 minutes after the start,
|
and is slow, because `rocksdb-ng` is compiled from source; building on an arm64 host is much faster.
|
||||||
in parallel with the node download (the node is the bottleneck). Observed (5 minute samples): server memory up to about 330 MiB,
|
|
||||||
node up to about 650 MiB; server database 359 MB.
|
|
||||||
|
|
||||||
Added: the `unittests`, `docker` and `integration` CI jobs run on amd64 and arm64 (`ubuntu-24.04-arm`);
|
|
||||||
`DEPLOY.md` has an "Architectures" section (headers needed to compile `plyvel` and `rocksdb-ng`).
|
|
||||||
The first run of the amd64/arm64 CI matrix on GitHub passed (all jobs, both architectures).
|
|
||||||
`docker build --no-cache` of the server image on arm64 works (`rocksdb-ng` compiles from scratch), and the
|
|
||||||
RocksDB tests in `tests/server/test_storage.py` pass with RocksDB 9.10 (the fixture now closes the DB before the `chdir`).
|
|
||||||
|
|
||||||
`rocksdb-ng` needs RocksDB >= 8.0: Debian 12 (7.8.3) is too old, use Debian 13 or the Docker image.
|
|
||||||
|
|
||||||
Still to do or verify:
|
|
||||||
|
|
||||||
- **A full sync on ARM** of the server image against a real Palladium node (speed, memory, `CACHE_MB`): the amd64 numbers
|
|
||||||
are above, they are only a reference.
|
|
||||||
- **Published image** (none is published today): build it multi-arch with
|
|
||||||
`docker buildx build --platform linux/amd64,linux/arm64`.
|
|
||||||
|
|
||||||
## Fork notes
|
## Fork notes
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user