这篇客座文章是由 EOSphere 的 Ross Dold 撰写的。 在本文末尾了解有关 EOSphere 在 EOS 生态系统中的工作的更多信息。
Antelope Leap v5.0.0 大约一个月前发布,现在随着节点运营商开始升级其生产环境,许多基于 Antelope 的网络都采用了它。
Leap v5.0.0 的设计比以前的版本更加性能、高效和可靠,这对于节点运营商来说是个好消息,因为即使是微小的改进也可以转化为 100 个托管节点群的巨大收益。
考虑到这一点,EOSphere 团队在下面的文章中记录了 Leap v4.0.4 和 v5.0.0 之间 CPU、内存和磁盘 IO 改进的实际比较。
Leap v5.0.0 CPU、内存和磁盘 IO 性能
以下文章是根据收集 EOSphere EOS 主网公共对等节点之一的统计数据编写的。 选择该节点是因为它已投入生产,且利用率很高,有 180-195 个自然传入的公共节点。 硬件配置如下:
Ubuntu 22.04
在 KVM 7.2.0 中虚拟化
4个CPU核心
32GB RAM
128GB SWAP
驱动器 1:操作系统和状态:256 GB 企业 NVMe
驱动器 2:Blocks:4TB 企业 NVMe (ZFS)
CPU
下面是每月 CPU 使用率图表,显示了 v4.0.4 的利用率,然后在 2024 年 1 月 22 日(20:00)升级到 v5.0.0。
EOSphere 公共对等节点的 KVM CPU 利用率
CPU 利用率立即从平均 85% 下降到标准化的 60%。
对于在物理、虚拟或云环境中运行多个节点来说,这是个好消息。 这也可能意味着对于公共节点,传统配置的 max-clients对等限制 200 可以扩展到 250 甚至 300。
磁盘IO和内存
如果您读过我们之前的 Antelope 链文章,您就会知道 EOSphere 一直倡导使用 tmpfs 策略运行 Leap 节点。
tmpfs 策略涉及在 tmpfs 挂载中运行 nodeos chainbase 数据库state 文件夹,允许我们通过 SWAP 超额订阅 RAM,并提高内存利用率和磁盘 IO 的效率。
tmpfs 是一个 Linux 文件系统,它将所有文件保存在虚拟内存中,该文件夹的内容是临时的,这意味着如果卸载该文件夹或服务器重新启动,所有内容都将丢失。
使用 tmpfs 的挑战是临时的,所有数据在重新启动时都会丢失,然后 Nodeos 将需要通过快照重新启动。
Leap v5.0.0 带来了一个名为 mapped_private 的新数据库映射模式,作为默认 mapped 模式的替代方案。 Instead of the constant writing to disk with mapped mode, mapped_private mode better utilises memory and reduces disk IO. 它通过使用私有映射将链库数据库映射到内存来实现这一点,这意味着在执行期间访问的任何链库数据都保留在内存中,并且没有资格写回shared_memory.bin磁盘文件。
如果这听起来很熟悉,确实如此。 mapped_private 是 tmpfs 策略的绝佳替代品。 这意味着无需挂载 tmpfs 分区,并且由于内存中的链库数据在退出时写入磁盘,因此无需在重新启动时使用快照重新启动。
mapped_private 配置
mapped_private的配置只需将以下内容添加到 config.ini
> nano config.ini
database-map-mode = mapped_private
为了启动节点 mapped_private需要足够的内存来覆盖配置的chain-state-db-size-mb = 的私有映射,物理 RAM 可以替换为允许过度订阅的 SWAP。
在撰写本文时,32GB 物理 RAM 和 128Gb SWAP 足以运行 EOS 主网节点。
mapped_private 操作和结果
在第一个节点 mapped_private 启动时,假设您从快照开始,整个链库将上传到内存(RAM 和 SWAP),并且可能需要一些时间。
第一次启动mapped_private模式的CPU和内存利用率
在节点退出时,内存中的链库被写入磁盘,这可能需要一些时间,具体取决于它的大小。
随后的节点启动速度更快,不需要快照,并且仅将执行所需的数据添加到内存中,显示利用率要低得多。
mapped_private 模式的 CPU 和内存利用率第二次启动
随后的 Nodeos 退出也会更快,具体取决于节点运行的时间,因为 mapped_private 跟踪脏页,仅在退出时写出脏页。
与 mapped模式相比,内存利用率也略有提高。
映射模式的CPU和内存利用率
除了 RAM 过度订阅和较低的利用率之外,使用mapped_private的真正价值以及 EOSphere 最初开始使用此模式的原因是磁盘 IO 低得多。
性能要求使得操作员必须将包含 chainbase 数据库的state文件夹放置在高速 SSD 驱动器上。 SSD 驱动器具有制造商分配的耐用等级,说明在发生故障之前可以写入驱动器的最大数据量。 这通常以 TerraByte 写入 (TBW) 为单位,在消费者磁盘上,该值通常在 150–2000TBW 之间,在企业驱动器上,该值通常在 PB 范围内。 本质上,过多的磁盘写入可能会磨损 SSD 磁盘,从而导致故障。
下面是使用mapped 模式的示例对等节点的驱动器 1 磁盘 IO(写入),网络看到每秒 10-15 个事务 (TPS)。
使用映射模式驱动器 1 磁盘 IO(写入)
这是我们示例对等节点的驱动器 1 磁盘 IO(写入),使用 mapped_private 模式,网络看到相同的 10-15 TPS。
使用mapped_private模式驱动器1磁盘IO(写入)
这表明使用 mapped_private大大减少了写入量。
大约每秒 4 兆字节 (MB) 到每秒 12 千字节 (KB)。 大约 120TBW/年减少到 0.378TBW/年。
这意味着 SSD 的使用寿命更长,虚拟环境可更好地扩展,并且云环境不受 IO 限制的限制。
总之,使用mapped_private时,Antelope Leap v5.0.0 具有更低的 CPU 利用率、更高效的内存占用以及易于管理的更低磁盘 IO。
请务必在 EOSphere Telegram 和 EOS Global Telegram 中提出任何问题。
这篇客座文章由 EOSphere 的 Ross Dold 撰写。 EOxSphere 是 EOS 主网以及其他基于 Antelope 的区块链的区块生产者和基础设施提供商。 通过 EOSphere.io 和下面的链接了解有关他们工作的更多信息。
关于EOS 网络
EOS 网络是区块链 3.0 时代的典范之作,由 EOS VM 提供支持。EOS VM 是一个低延迟、高性能和可扩展的 WebAssembly 引擎,能够近乎无感的实现确定性交易执行。EOS 网络专为 Web3 设计,致力于实现最佳的 Web3 用户和开发人员体验。 EOS 是 Antelope 协议的旗舰区块链和金融中心,并通过 EOS 网络基金会(ENF)作为多链协作和发展公共基础产品的工具,进一步完善基础设施,驱动 EOS 快速发展。
关于 EOS 网络基金会
EOS 网络基金会(ENF)诞生旨在为 EOS 生态营造一个繁荣、去中心化和未来。 通过鼓励 EOS 生态主要利益相关者的积极参与、扶持社区项目、提供生态系统资助和支持开放技术生态系统建设等举措,ENF 正在掀起新一轮 Web3 变革。 作为 EOS 网络的中心和一个领先的开源平台,ENF 成立于 2021 年并拥有一套稳定的框架、工具和区块链部署库。 我们一起实现了社区建设的创新,并致力于为所有人创造更强大的未来。