Jungle Testnet演示了EOSIO TPS新峰值:9179

CryptoLions
12 min readDec 7, 2018

--

来源文章 (original article): https://medium.com/@cryptolions/new-maximum-eosio-tps-demonstrated-in-jungle-testnet-9179-15a485f2e79

预发布的EOS Dawn v2.0已于1年前2017年12月5日发布。

https://github.com/EOSIO/eos/releases/tag/dawn-v2.0.0

最近,Block Producers小组在新发布的Jungle Testnet 2.0上测试了EOSIO的极限。系列测试于11月28日星期三,11月29日星期四和12月4日星期一进行。

参与的团队(按字母顺序排列):Attic Lab,BlockMatrix,CryptoLions,EOS Barcelona,EOS Rio,EOS Metal,eosDAC,SW / Eden。

预发布的EOS Dawn v2.0已于1年前2017年12月5日发布。

https://github.com/EOSIO/eos/releases/tag/dawn-v2.0.0

最近,Block Producers小组在新发布的Jungle Testnet 2.0上测试了EOSIO的极限。系列测试于11月28日星期三,11月29日星期四和12月4日星期一进行。

参与的团队(按字母顺序排列):Attic Lab,BlockMatrix,CryptoLions,EOS Barcelona,EOS Rio,EOS Metal,eosDAC,SW / Eden。

为什么?

  • 尝试一种新的方法来进行更密集的压力测试。
  • 测试对不同全局变量的调整。
  • 突破EOSIO软件的极限。

怎么样?

新的测试方法涉及严格的“垃圾邮件”节点的时钟同步,即在网络上不加选择地向(大量收件人)发送相同消息,并从网络传输中单独准备和打包交易。测试人员将此方式称为“装枪”。

以下这些全局变量在测试期间进行了调整:

  • min_transaction_cpu_usage
  • max_block_cpu_usage

一些Nodeoes参数也是如此:

  • chain-threads
  • last-block-time-offset-us

我们还试图测试了延期交易的影响。

最后,我们调整了投票,以便证明在此测试期间只有最强大的服务器才能在Jungle Testnet中生成区块,即出块。

压力测试团队的一些基础设施:

EOSMetal

BP节点,拥有64GB和i7 Intel处理器

一个64vcpus和480GB RAM的全节点,运行10个nodeos进程

一个64vcpus和480GB RAM服务器,用于“射击”(即在网络上不加选择地向(大量收件人)发送相同消息,并从网络传输中单独准备和打包交易。测试人员将此方式称为“装枪”。)

Attic Lab

BP节点,拥有64GB和Intel Core i9 9900处理器

两个全节点64 GB和Intel Core i7 8700处理器

CryptoLions

一个Intel Xeon W-2145 Octa-Core,128 GB RAM DDR4 ECC,SSD HDD,1 GB Internet 配置的服务器

一个Intel Xeon W-2145 Octa-Core,128 GB RAM DDR4 ECC,NVE HDD,1 GB Internet 配置的服务器

测试日志

第1天(11月28日星期三)

新想法:

  • “垃圾邮件发送者”准备和打包交易的脚本,以准备同步发送它们。 (我们让每个垃圾邮件发送者发送10个有1000个脚本的打包脚本件。)

然后cleos推送交易。

  • 使用Ntp守护程序来确保时间同步。垃圾邮件将同时为所有垃圾邮件发送者提供5分钟间隔的脉冲,这对于BP节点的巨大乐趣而言,可以实现戏剧性的倒计时和热闹的.gif动图分享。
  • 创建脚本以使用空白操作发送大量传输。
  • 我们向所有垃圾邮件发送者提供200k EOS,然后当它证明不足时,我们提供400k EOS。
  • 在测试的第一天,我们无法打破每块1998的交易限制,或3996 TPS。此数字一直是EOS网络监视器(https://eosnetworkmonitor.io/ )检测到的最大TPS。我们甚至推测可能有一些硬编码限制限制了这一点。

EOS Sweden

EOS Barcelona

EOS Rio

Attic Lab

EOS Barcelona — TPS = 3992

Attic Lab — TPS = 3996

我们对只匹配并且不超过历史最大3996 TPS很失望

在第1天结束时,我们升级到了v1.5.0-rc1。

来自EOS Rio Ihor的建议:并添加chain-threads = 8

第2天

我们尝试了这些全局变量:

min_transaction_cpu_usage

max_block_cpu_usage

Bohdan CryptoLions,[03.12.18 22:57]

1. min_transaction_cpu_usage:100 → 80 → 70 → 60

2. max_block_cpu_usage:200000 → 300000 → 350000 → 400000

3. both 1 and 2

默认的全局值是:

{
“max_block_net_usage”:1048576,
“target_block_net_usage_pct”:1000,
“max_transaction_net_usage”:524288,
“base_per_transaction_net_usage”:12,
“net_usage_leeway”:500,
“context_free_discount_net_usage_num”:20,
“context_free_discount_net_usage_den”:100,
“max_block_cpu_usage”:200000,
“target_block_cpu_usage_pct”:2000,
“max_transaction_cpu_usage”:150000,
“min_transaction_cpu_usage”:100,
“max_transaction_lifetime”:3600,
“deferred_trx_expiration_window”:600,
“max_transaction_delay”:3888000,
“max_inline_action_size”:4096,
“max_inline_action_depth”:4,
“max_authority_depth”:6}

此图显示了在atticlab更新为1.5-rc1后,执行时间缩短约15%的行为?或许这是巧合……

然后乐趣又开始了:

一些BP节点的报告明显延迟:

我们调整了这个nodeos参数以更快地关闭最后一个区块,我们认为这将有助于下一个BP更快地同步:

last-block-time-offset-us = -300000

区块1025381和1025382包含我们最高的TPS — — 9179交易。

虽然这些区块周围都有分岔。但我们还是实现了全新的6977 TPS。

我们为单个区块中的交易设置的记录是6101.(区块号1025825)。

重复像是魔力一般。 (重复的难题是我们推出Jungle 2 https://monitor.jungletestnet.io/的原因,并弃用了我们现在称之为Jungle Classic的测试网http://jungle.cryptolions.io/。)

第3天

制定议程:

Eric — sw / eden,[29.11.18 20:26]

1. Block Twitter最多txs垃圾邮件?

2.每个出块者之间有一或两个自由空间

3. Bnet

4.推迟tx

5.不同的参数

还有什么呢?

Michael Yeates,[29.11.18 20:26]

延期交易

Bohdan CryptoLions,[29.11.18 20:26]

重复测试不同的全局参数

Bohdan CryptoLions,[29.11.18 20:27]

测试递延tx我们需要创建特殊的合同..

并且它似乎正确的方式,我们达到了一个新TPS记录,这超过第2天实现的9179 TPS:

这样的最大数量的交易出现在一个单一区块,是13,965 TPS。

但奇怪的是 — — 尽管有高的交易但操作低。

(这是早期类似“Jungle Classic” Testnet中的中毒块,其中包含无交易机构的交易信息。)

调查后我们发现,区块被填满了过期的交易:

所以我们该怎么称呼这种情况?一秒钟内生成了两个包含16,992笔交易的区块,但它们是过期交易。

这是一个新的TPS记录?或者一个“eTPS”记录?

此外,Jungle Testnet monitor(https://monitor.jungletestnet.io/)自动抓取了这个数字作为一个新的记录。CryptoLions手动将其更改为9179,并把etps记录移动到说明中备查。

收获和机会:

  • 增加max_block_cpu_usage参数,从200k至300k至400k,会增加分叉,但不会破坏链。
  • 机会:尝试确定最佳各种条件设置下,捕获和研究#丢失的交易。
  • 降低最小CPU表现出了良好的效果,增加至5或6k TPS。
  • 在第1天显示EOS主网限制在3996TPS,原因似乎是吞吐量与min_transaction_cpu_usage相对冲导致。
  • 希望从Jungle Testnet 2获得的这些测试数据和良好信息将有益于核心开发人员。

其他屏幕截图和动图:

屏幕截图来自EOSMetal使用服务器64vcpus,480GB RAM准备推送的2k * 10.000交易包。但是失败,因为推送极限为1k(数组中最多元素)。

一些测试中的讨论采访:

感谢所有支持这些测试的团队,谢谢你们分享自己的服务器,时间,幽默,热情,好奇,和想法!

说说你对治理,EOSIO的看法,这项技术运作得非常出色,并且具有巨大的有待实现的潜力!

--

--