Jungle Testnet演示了EOSIO TPS新峰值:9179
来源文章 (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的看法,这项技术运作得非常出色,并且具有巨大的有待实现的潜力!