Документация: erigon.gitbook.io Блог: erigon.substack.com Twitter: x.com/ErigonEth
Erigon — это реализация Ethereum (уровень выполнения со встроенным уровнем консенсуса) на границе эффективности. Узел архива по умолчанию.
erigon
caplin
портыbeaconAPI
shared
портыother
портыsystemd
htop
показывает неправильное использование памяти Важные настройки по умолчанию : Erigon по умолчанию является узлом архива: используйте --prune.mode
, если нужно уменьшить его (не допускается изменение после первого запуска)
In-depth links are marked by the microscope sign (?)
Оперативная память: >= 32 ГБ, Голанг >= 1,22; GCC 10+ или Clang; В Linux: ядро > v4. 64-битная архитектура.
SSD или NVMe. Не рекомендуется использовать HDD - на HDD Erigon всегда будет оставаться на N блоков позади кончика цепи, но не отставать. Имейте в виду, что производительность SSD снижается, когда емкость приближается к пределу. CloudDrives (например, gp3): выполнение блоков происходит медленно на облачных сетевых дисках.
? Более подробная информация о размере каталога данных Erigon3
? Подробнее о том, какой тип данных хранится здесь
Примечания к выпуску и двоичные файлы
Сборка последней версии (это подойдет большинству пользователей, которым просто нужно запустить узел):
git clone --branch release/ < x.xx > --single-branch https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon
Увеличьте скорость загрузки на --torrent.download.rate=20mb
. ? See Downloader docs
Используйте --datadir
, чтобы выбрать, где хранить данные.
Используйте --chain=gnosis
для Gnosis Chain, --chain=bor-mainnet
для основной сети Polygon и --chain=amoy
для Polygon Amoy. Для Gnosis Chain вам понадобится клиент уровня консенсуса вместе с Erigon (https://docs.gnosischain.com/category/step--3---run-consensus-client).
При запуске make help
будут перечислены и описаны удобные команды, доступные в файле Makefile.
datadir
chaindata # "Recently-updated Latest State", "Recent History", "Recent Blocks"
snapshots # contains `.seg` files - it's old blocks
domain # Latest State
history # Historical values
idx # InvertedIndices: can search/filtering/union/intersect them - to find historical data. like eth_getLogs or trace_transaction
accessors # Additional (generated) indices of history - have "random-touch" read-pattern. They can serve only `Get` requests (no search/filters).
txpool # pending transactions. safe to remove.
nodes # p2p peers. safe to remove.
temp # used to sort data bigger than RAM. can grow to ~100gb. cleaned at startup.
# There is 4 domains: account, storage, code, commitment
Если вы можете позволить себе хранить данные на 1 nvme-raid — отлично. Если нет - можно хранить историю на дешевом диске.
# place (or ln -s) `datadir` on slow disk. link some sub-folders to fast (low-latency) disk.
# Example: what need link to fast disk to speedup execution
datadir
chaindata # link to fast disk
snapshots
domain # link to fast disk
history
idx
accessors
temp # buffers to sort data >> RAM. sequential-buffered IO - is slow-disk-friendly
# Example: how to speedup history access:
# - go step-by-step - first try store `accessors` on fast disk
# - if speed is not good enough: `idx`
# - if still not enough: `history`
# eth-mainnet - archive - April 2024
du -hsc /erigon/ *
6G /erigon/caplin
50G /erigon/chaindata
1.8T /erigon/snapshots
1.9T total
du -hsc /erigon/snapshots/ *
100G /erigon/snapshots/accessor
240G /erigon/snapshots/domain
260G /erigon/snapshots/history
410G /erigon/snapshots/idx
1.7T /erigon/snapshots
# bor-mainnet - archive - Jun 2024
du -hsc /erigon/ *
160M /erigon/bor
50G /erigon/chaindata
3.7T /erigon/snapshots
3.8T total
du -hsc /erigon/snapshots/ *
260G /erigon-data/snapshots/accessor
850G /erigon-data/snapshots/domain
650G /erigon-data/snapshots/history
1.4T /erigon-data/snapshots/idx
4.1T /erigon/snapshots
debug_getModifiedAccountsByNumber
возвращает его.--internalcl
включен по умолчанию. чтобы отключить, используйте --externalcl
.chaindata
составляет менее 15gb
. Это нормально для rm -rf chaindata
. (чтобы предотвратить рост: рекомендуется --batchSize <= 1G
)--prune
изменены : см. --prune.mode
(по умолчанию: archive
, полный: full
, EIP-4444: minimal
)--sync.loop.block.limit=5_000
включен по умолчанию.Флаги:
verbosity
log.console.verbosity
(переопределяющий псевдоним для verbosity
)log.json
log.console.json
(псевдоним log.json
)log.dir.path
log.dir.prefix
log.dir.verbosity
log.dir.json
Чтобы вести журнал только на stdout/stderr, можно использовать флаг --verbosity
(или log.console.verbosity
) для предоставления значения int, указывающего самый высокий уровень выходного журнала:
LvlCrit = 0
LvlError = 1
LvlWarn = 2
LvlInfo = 3
LvlDebug = 4
LvlTrace = 5
Чтобы установить выходной каталог для сбора журналов на диске, установите --log.dir.path
Если вы хотите изменить имя файла, созданного из erigon
вам также следует установить для флага --log.dir.prefix
альтернативное имя. Флаг --log.dir.verbosity
также доступен для управления подробностью этого журнала с тем же целым значением, что и выше, или строковым значением, например, «отладка» или «информация». Подробность по умолчанию — «отладка» (4) для ведения журнала диска.
Формат журнала может быть установлен в json с помощью логических флагов log.json
или log.console.json
или для вывода на диск --log.dir.json
.
По умолчанию Erigon представляет собой решение «все в одном двоичном файле», но можно запускать TxPool как отдельные процессы. То же самое относится и к: уровню JSON RPC (RPCDaemon), уровню p2p (Sentry), уровню загрузки истории (Downloader), консенсусу. Не запускайте сервисы как отдельные процессы, если у вас нет для этого четкой причины: ограничение ресурсов, масштабирование, замена собственной реализацией, безопасность. Как запустить службы Erigon как отдельные процессы, смотрите в docker-compose.yml. У каждого сервиса есть собственный файл ./cmd/*/README.md
. Блог Эригона.
Встроенный консенсус для Ethereum Mainnet, Sepolia, Holesky, Gnosis. Чтобы использовать внешний уровень консенсуса: --externalcl
.
Если вы хотите попробовать Erigon: хороший вариант — начать синхронизацию с одной из общедоступных тестовых сетей, Holesky (или Amoy). Синхронизируется гораздо быстрее и занимает не так много места на диске:
git clone https://github.com/erigontech/erigon.git
cd erigon
make erigon
./build/bin/erigon --datadir= < your_datadir > --chain=holesky --prune.mode=full
Обратите внимание на параметр --datadir
, который позволяет хранить файлы Erigon не в папке по умолчанию. Имя каталога --datadir
не обязательно должно совпадать с именем цепочки в --chain
.
Производство блоков полностью поддерживается для Ethereum и Gnosis Chain. Для Polygon это все еще экспериментально.
Вы можете установить флаги Erigon через файл конфигурации TOML с помощью флага --config
. Флаги, установленные в файле конфигурации, можно перезаписать, написав их непосредственно в командной строке Erigon.
./build/bin/erigon --config ./config.toml --chain=sepolia
Предполагая, что в нашем файле конфигурации есть chain : "mainnet"
, добавление --chain=sepolia
позволяет перезаписать флаг внутри файла конфигурации toml и устанавливает цепочку в sepolia.
datadir = ' your datadir '
port = 1111
chain = " mainnet "
http = true
"private.api.addr" = " localhost:9090 "
"http.api" = [ " eth " , " debug " , " net " ]
Erigon можно использовать в качестве уровня выполнения (EL) для клиентов уровня консенсуса (CL). Конфигурация по умолчанию в порядке.
Если ваш клиент CL находится на другом устройстве, добавьте --authrpc.addr 0.0.0.0
(API Engine по умолчанию прослушивает локальный хост), а также --authrpc.vhosts
, где
— это ваш исходный хост или any
.
Чтобы установить безопасное соединение между уровнем консенсуса и уровнем выполнения, автоматически генерируется секретный ключ JWT.
Секретный ключ JWT по умолчанию будет присутствовать в каталоге данных под именем jwt.hex
, а его путь можно указать с помощью флага --authrpc.jwtsecret
.
Эту информацию также необходимо указать на уровне консенсуса, чтобы успешно установить соединение. Более подробную информацию можно найти здесь.
После запуска Erigon вам необходимо указать клиенту CL
, где
— это либо localhost
, либо IP-адрес устройства, на котором работает Erigon, а также указать секретный путь JWT, созданный Erigon.
Caplin — это полноценный консенсусный клиент для проверки, такой как Prysm, Lighthouse, Teku, Nimbus и Lodestar. Его цель:
Основная причина разработки нового уровня консенсуса — экспериментирование с возможными преимуществами, которые он может принести. Например, API Engine не работает с Erigon. Engine API отправляет данные по одному блоку за раз, что не соответствует принципу работы Erigon. Erigon предназначен для одновременной обработки множества блоков и требует эффективной сортировки и обработки данных. Поэтому для Erigon было бы лучше обрабатывать блоки независимо, а не полагаться на Engine API.
Caplin включен по умолчанию. чтобы отключить его и включить Engine API, используйте флаг --externalcl
. с этого момента внешний уровень консенсуса больше не понадобится.
У Кэплина также есть архивный режим для исторических государств и кварталов. его можно включить с помощью флага --caplin.archive
. Чтобы включить API Beacon каплина, необходимо добавить флаг --beacon.api=
. например: --beacon.api=beacon,builder,config,debug,node,validator,lighthouse
включит все конечные точки. **ПРИМЕЧАНИЕ. Caplin не готов к размещению ставок, поэтому конечные точки агрегации еще предстоит реализовать. Кроме того, включение Beacon API приведет к увеличению использования оперативной памяти на 6 ГБ.
Определите 6 флагов, чтобы избежать конфликтов: --datadir --port --http.port --authrpc.port --torrent.port --private.api.addr
. Пример нескольких цепочек на одной машине:
# mainnet
./build/bin/erigon --datadir="" --chain=mainnet --port=30303 --http.port=8545 --authrpc.port=8551 --torrent.port=42069 --private.api.addr=127.0.0.1:9090 --http --ws --http.api=eth,debug,net,trace,web3,erigon
# sepolia
./build/bin/erigon --datadir="" --chain=sepolia --port=30304 --http.port=8546 --authrpc.port=8552 --torrent.port=42068 --private.api.addr=127.0.0.1:9091 --http --ws --http.api=eth,debug,net,trace,web3,erigon
Укажите свой путь, если в нем есть пробелы.
? Detailed explanation is DEV_CHAIN.
При хорошей пропускной способности сети EthereumMainnet FullNode синхронизируется за 3 часа: OtterSync может синхронизироваться.
Плоское хранилище КВ. Erigon использует базу данных «ключ-значение» и хранит учетные записи и хранилище простым способом.
? See our detailed DB walkthrough here.
Предварительная обработка . Для некоторых операций Erigon использует временные файлы для предварительной обработки данных перед их вставкой в основную БД. Это уменьшает усиление записи, а вставка в БД происходит на порядки быстрее.
? See our detailed ETL explanation here.
Простое состояние
Отдельные учетные записи/государственная попытка . Erigon использует одно дерево Меркла как для учетных записей, так и для хранилища.
? Staged Sync Readme
Большинство компонентов Erigon (txpool, rpcdaemon, загрузчик снимков, Sentry, ...) могут работать внутри Erigon и как независимый процесс на том же Сервере (или другом Сервере). Пример:
make erigon rpcdaemon
./build/bin/erigon --datadir=/my --http=false
# To run RPCDaemon as separated process: use same `--datadir` as Erigon
./build/bin/rpcdaemon --datadir=/my --http.api=eth,erigon,web3,net,debug,trace,txpool --ws
--rpc.batch.concurrency
, --rpc.batch.limit
, --db.read.concurrency
--http.compression
, --ws.compression
? See RPC-Daemon docs
docker compose up prometheus grafana
, подробная документация.
# please use git branch name (or commit hash). don't use git tags
go mod edit -replace github.com/erigontech/erigon-lib=github.com/erigontech/erigon/erigon-lib@5498f854e44df5c8f0804ff4f0747c0dec3caad5
go get github.com/erigontech/erigon@main
go mod tidy
erigon
Компонент | Порт | Протокол | Цель | Должен разоблачить |
---|---|---|---|---|
двигатель | 9090 | TCP | gRPC-сервер | Частный |
двигатель | 42069 | TCP и UDP | Snap-синхронизация (Bittorrent) | Общественный |
двигатель | 8551 | TCP | API движка (аутентификация JWT) | Частный |
часовой | 30303 | TCP и UDP | пиринг eth/68 | Общественный |
часовой | 30304 | TCP и UDP | пиринг eth/67 | Общественный |
часовой | 9091 | TCP | входящие соединения gRPC | Частный |
rpcdaemon | 8545 | TCP | HTTP, веб-сокеты и GraphQL | Частный |
Обычно номера 30303 и 30304 доступны в Интернете, чтобы разрешить входящие пиринговые соединения. 9090 доступен только внутренне для rpcdaemon или других соединений (например, rpcdaemon -> erigon). Порт 8551 (с аутентификацией JWT) доступен только для внутренних запросов API Engine API JSON-RPC из узла уровня консенсуса.
caplin
портыКомпонент | Порт | Протокол | Цель | Должен разоблачить |
---|---|---|---|---|
дозорный | 4000 | UDP | Пиринг | Общественный |
дозорный | 4001 | TCP | Пиринг | Общественный |
Для настройки портов используйте:
--caplin.discovery.addr value Address for Caplin DISCV5 protocol (default: "127.0.0.1")
--caplin.discovery.port value Port for Caplin DISCV5 protocol (default: 4000)
--caplin.discovery.tcpport value TCP Port for Caplin DISCV5 protocol (default: 4001)
beaconAPI
Компонент | Порт | Протокол | Цель | Должен разоблачить |
---|---|---|---|---|
ОТДЫХ | 5555 | TCP | ОТДЫХ | Общественный |
shared
портыКомпонент | Порт | Протокол | Цель | Должен разоблачить |
---|---|---|---|---|
все | 6060 | TCP | ппроф | Частный |
все | 6061 | TCP | метрики | Частный |
Можно включить дополнительные флаги, которые включают pprof или метрики (или и то, и другое). Используйте --help
с двоичным файлом для получения дополнительной информации.
other
порты Зарезервировано для будущего использования: порты gRPC : механизм консенсуса 9092
, загрузчик снимков 9093
, 9094
TxPool.
0.0.0.0/8 "This" Network RFC 1122, Section 3.2.1.3
10.0.0.0/8 Private-Use Networks RFC 1918
100.64.0.0/10 Carrier-Grade NAT (CGN) RFC 6598, Section 7
127.16.0.0/12 Private-Use Networks RFC 1918
169.254.0.0/16 Link Local RFC 3927
172.16.0.0/12 Private-Use Networks RFC 1918
192.0.0.0/24 IETF Protocol Assignments RFC 5736
192.0.2.0/24 TEST-NET-1 RFC 5737
192.88.99.0/24 6to4 Relay Anycast RFC 3068
192.168.0.0/16 Private-Use Networks RFC 1918
198.18.0.0/15 Network Interconnect
Device Benchmark Testing RFC 2544
198.51.100.0/24 TEST-NET-2 RFC 5737
203.0.113.0/24 TEST-NET-3 RFC 5737
224.0.0.0/4 Multicast RFC 3171
240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4
255.255.255.255/32 Limited Broadcast RFC 919, Section 7
RFC 922, Section 7
То же самое в синтаксисе IpTables
systemd
Запуск erigon из build/bin
от имени отдельного пользователя может привести к ошибке:
error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
Библиотеку необходимо установить для другого пользователя с помощью make DIST=
. В качестве пути установки вы можете использовать $HOME/erigon
или /opt/erigon
, например:
make DIST=/opt/erigon install
kill -SIGUSR1
, получить трассировку и остановить: kill -6
--pprof
и запуститеgo tool pprof -png http://127.0.0.1:6060/debug/pprof/profile?seconds=20 > cpu.png
--pprof
и запуститеgo tool pprof -inuse_space -png http://127.0.0.1:6060/debug/pprof/heap > mem.png
? Detailed explanation is here.
Docker использует пользователя erigon с UID/GID 1000 (по соображениям безопасности). Вы можете увидеть, как этот пользователь создается в Dockerfile. Можно исправить, указав право собственности пользователя хоста на папку, где UID/GID пользователя хоста совпадает с UID/GID пользователя докера (1000). Подробности в посте
--txpool.nolocals=true
admin
в список --http.api
--http.corsdomain="*"
— плохая практика: установите точное имя хоста или IP--rpc.batch.concurrency
, --rpc.batch.limit
https://github.com/mathMakesArt/Erigon-on-RPi-4
Docker позволяет создавать и запускать Erigon через контейнеры. Это устраняет необходимость установки зависимостей сборки в ОС хоста.
UID/GID пользователя необходимо синхронизировать между ОС хоста и контейнером, чтобы файлы записывались с правильным разрешением.
Возможно, вы захотите настроить выделенного пользователя/группу в операционной системе хоста, и в этом случае будут доступны следующие цели make
.
# create "erigon" user
make user_linux
# or
make user_macos
В корне репозитория находится файл .env.example
.
DOCKER_UID
— UID пользователя докера.DOCKER_GID
— GID пользователя докера.XDG_DATA_HOME
— каталог данных, который будет подключен к контейнерам докеров.Если не указано, UID/GID будет использовать текущего пользователя.
Хорошим выбором для XDG_DATA_HOME
является использование каталога ~erigon/.ethereum
созданного вспомогательными целями make user_linux
или make user_macos
.
Проверка разрешений: во всех случаях XDG_DATA_HOME
(указанный или по умолчанию) должен быть доступен для записи пользовательским UID/GID в Docker, который будет определяться DOCKER_UID
и DOCKER_GID
во время сборки. Если при запуске сборки или службы произошел сбой из-за разрешений, проверьте правильность всех каталогов, UID и GID, контролируемых этими переменными среды.
Запускаются следующие команды: Erigon на порту 30303, rpcdaemon на порту 8545, prometheus на порту 9090 и grafana на порту 3000.
#
# Will mount ~/.local/share/erigon to /home/erigon/.local/share/erigon inside container
#
make docker-compose
#
# or
#
# if you want to use a custom data directory
# or, if you want to use different uid/gid for a dedicated user
#
# To solve this, pass in the uid/gid parameters into the container.
#
# DOCKER_UID: the user id
# DOCKER_GID: the group id
# XDG_DATA_HOME: the data directory (default: ~/.local/share)
#
# Note: /preferred/data/folder must be read/writeable on host OS by user with UID/GID given
# if you followed above instructions
#
# Note: uid/gid syntax below will automatically use uid/gid of running user so this syntax
# is intended to be run via the dedicated user setup earlier
#
DOCKER_UID= $( id -u ) DOCKER_GID= $( id -g ) XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
#
# if you want to run the docker, but you are not logged in as the $ERIGON_USER
# then you'll need to adjust the syntax above to grab the correct uid/gid
#
# To run the command via another user, use
#
ERIGON_USER=erigon
sudo -u ${ERIGON_USER} DOCKER_UID= $( id -u ${ERIGON_USER} ) DOCKER_GID= $( id -g ${ERIGON_USER} ) XDG_DATA_HOME= ~ ${ERIGON_USER} /.ethereum DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose
Makefile создает исходные каталоги для erigon, prometheus и grafana. Пространство имен PID используется совместно erigon и rpcdaemon, что необходимо для открытия базы данных Erigon из другого процесса (локальный режим RPCDaemon). См.: https://github.com/erigontech/erigon/pull/2392/files.
Если ваша установка Docker требует, чтобы демон Docker запускался от имени пользователя root (что по умолчанию), вам нужно будет добавить к приведенной выше команде префикс sudo
. Однако иногда из соображений безопасности рекомендуется запускать Docker (и, следовательно, его контейнеры) от имени пользователя без полномочий root. Дополнительную информацию о том, как это сделать, можно найти в этой статье.
почта
--sync.loop.block.limit=10_000
SNAPSHOT_MADV_RND=false
vmtouch -vdlw /mnt/erigon/snapshots/domain/*bt
ls /mnt/erigon/snapshots/domain/*.kv | parallel vmtouch -vdlw
# if it failing with "can't allocate memory", try:
sync && sudo sysctl vm.drop_caches=3
echo 1 > /proc/sys/vm/compact_memory
Пользователи Windows могут запустить erigon тремя возможными способами:
Создавайте исполняемые двоичные файлы специально для Windows, используя предоставленный сценарий PowerShell wmake.ps1
. Синтаксис использования такой же, как у команды make
, поэтому вам нужно запустить .wmake.ps1 [-target]
. Пример: .wmake.ps1 erigon
создает исполняемый файл erigon. Все двоичные файлы помещаются в подпапку .buildbin
. Есть некоторые требования для успешной сборки в Windows:
chocolatey
менеджер пакетов - см. следующий пункт).wmake.ps1 db-tools
), необходимо установить менеджер пакетов Chocolatey для Windows. Для Chocolatey вам необходимо установить следующие компоненты: cmake
, make
, mingw
by choco install cmake make mingw
. Убедитесь, что переменная «Путь» системы Windows имеет: C:ProgramDatachocolateylibmingwtoolsinstallmingw64bin Важное примечание об антивирусах. На этапе обнаружения компилятора MinGW генерируются некоторые временные исполняемые файлы для проверки возможностей компилятора. Сообщается, что некоторые антивирусные программы определяют эти файлы как возможно зараженные троянским конем Win64/Kryptic.CIS
(или его вариантом). Хотя это ложные срабатывания, мы не имеем контроля над более чем 100 поставщиками продуктов безопасности для Windows и их соответствующими алгоритмами обнаружения, и мы понимаем, что это может сделать вашу работу со сборками Windows неудобной. Чтобы обойти эту проблему, вы можете либо установить исключения для вашего антивируса специально для подпапки buildbinmdbxCMakeFiles
клонированного репозитория, либо запустить erigon, используя следующие два других параметра.
Используйте Docker: см. docker-compose.yml.
Используйте WSL (подсистему Windows для Linux) строго в версии 2 . В этом варианте вы можете собрать Erigon так же, как и в обычном дистрибутиве Linux. Вы также можете указать свои данные на любой из смонтированных разделов Windows (например, /mnt/c/[...]
, /mnt/d/[...]
и т. д.), но в этом случае имейте в виду, что это повлияет на производительность: это Это связано с тем, что эти точки монтирования используют DrvFS
, которая представляет собой сетевую файловую систему, и, кроме того, MDBX блокирует базу данных для монопольного доступа, что означает, что только один процесс одновременно может получить доступ к данным. Это повлияет на запуск rpcdaemon
, который необходимо настроить как удаленную базу данных, даже если он выполняется на том же компьютере. Если вместо этого ваши данные размещаются в собственной файловой системе Linux, ограничения не применяются. Также обратите внимание, что среда WSL2 по умолчанию имеет собственный IP-адрес, который не соответствует IP-адресу сетевого интерфейса хоста Windows: учтите это при настройке NAT для порта 30303 на вашем маршрутизаторе.
Основные обсуждения происходят на нашем сервере Discord. Чтобы получить приглашение, отправьте электронное письмо на bloxster [at] proton.me
указав свое имя, род занятий, краткое объяснение, почему вы хотите присоединиться к Discord и откуда вы узнали об Erigon.
erigon.substack.com
x.com/ErigonEth
Отправьте электронное письмо на security [at] torquem.ch
.
htop
показывает неправильное использование памяти Внутренняя база данных Erigon (MDBX) с использованием MemoryMap
- когда ОС управляет всеми операциями read, write, cache
вместо приложения (linux, windows)
htop
в столбце res
показывает память «Приложение + ОС, используемую для хранения кэша страниц для данного приложения», но это неинформативно, потому что, если htop
говорит, что приложение использует 90% памяти, вы все равно можете запустить еще 3 экземпляра приложения на том же компьютере. - потому что большая часть этих 90%
- это «кеш страниц ОС». ОС автоматически освобождает этот кеш каждый раз, когда ей требуется память. Меньший «размер кэша страниц» может вообще не повлиять на производительность Erigon.
Следующие инструменты показывают правильное использование памяти Erigon:
vmmap -summary PID | grep -i "Physical footprint"
. Без grep
вы можете увидеть деталиsection MALLOC ZONE column Resident Size
показывает использование памяти приложения, section REGION TYPE column Resident Size
показывает размер кэша страниц ОС.Prometheus
показывает память приложения Go без кеша страниц ОС ( make prometheus
, откройте в браузере localhost:3000
, учетные данные admin/admin
)cat /proc//smaps
Erigon использует ~4 ГБ ОЗУ во время синхронизации Genesis и ~1 ГБ при нормальной работе. Кэш страниц ОС может использовать неограниченный объем памяти.
Предупреждение: несколько экземпляров Erigon на одном компьютере будут одновременно обращаться к Диску, это влияет на производительность - одна из основных оптимизаций Erigon: «уменьшить произвольный доступ к Диску». «Этап выполнения блоков» по-прежнему выполняет много случайных операций чтения — поэтому это самый медленный этап. Мы не рекомендуем запускать несколько синхронизаций Genesis на одном Диске. Если синхронизация Genesis прошла успешно, можно запускать несколько экземпляров Erigon на одном Диске.
(Как gp3) Вы можете прочитать: #1516 (комментарий) Короче говоря: сетевые диски плохи для выполнения блоков - потому что выполнение блоков считывает данные из базы данных непараллельным непакетным способом. Хитрости: если вы выделите достаточно оперативной памяти и установите переменную env ERIGON_SNAPSHOT_MADV_RND=false
- тогда Erigon будет достаточно хорошо работать на облачных дисках - за счет более высокого ввода-вывода.
Например: опция автодефрагментации btrfs — может увеличить количество операций ввода-вывода в 100 раз.
Gnome Tracker - обнаруживайте майнеров и убивайте их.
Для всех, у кого возникла ошибка BuildKit при попытке запустить Erigon старым способом, вы можете использовать приведенное ниже...
XDG_DATA_HOME=/preferred/data/folder DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 make docker-compose