logo

OpenAtom XuperChainV5.2版本抢先看!性能稳定性全面升级!

作者:技术兴奋剂2022.02.10 15:09浏览量:186

简介:OpenAtom XuperChainV5.2

OpenAtom-XuperChainV5.2版本将于近期上线,今天小编就带大家抢先看看V5.2版本都有哪些功能的优化升级。

本次V5.2版本在OpenAtom XuperChain的性能稳定性上做出了大幅提升,在功能方面,除了在共识及merkle算法部分做了优化,此次版本也同时支持了arm架构。

主要包括:

【性能稳定性】降低内存以及CPU的使用;

【账本】增加未确认交易池

【区块同步】优化区块同步方案

【共识】提升共识稳定性以及正确性

【架构】支持arm架构

【log】提升日志写入速度

OpenAtom XuperChain性能稳定性升级

本次升级,从多个方面针对交易的性能以及稳定性进行优化:

区块同步方案优化

在节点间同步区块时,将被动接收区块改为主动拉取区块的方式,同步区块从逆序同步改为顺序同步(高度从低到高),最大化利用网络带宽,提升了同步效率。

账本状态机优化

在账本、状态机层面,完善了未确认交易池,在向链上提交交易时,会根据交易的依赖关系进行拓扑排序,因此在mempool中的交易以DAG图形式存在,在区块打包时可以从根节点开始遍历打包交易,提升打包速度,在执行区块时,可以直接找到相关冲突交易,提升了区块打包以及区块执行的速度。

想了解OpenAtom XuperChain更多账本状态机详情?请点击:

https://xuper.baidu.com/n/xuperdoc/design_documents/ledger.html

共识升级

在共识层面将QCTree回滚的逻辑变更以及增加mutex、kernel和bcs层,分别按照不同粒度锁解决脏写问题,提升共识稳定性与正确性,增加矿工收集签名的时延保证旷工打包的时间得到保证。

还不了解OpenAtom XuperChain共识算法?点击下方链接了解更多:

https://xuper.baidu.com/n/xuperdoc/advanced_usage/consensus_usage.html

https://xuper.baidu.com/n/xuperdoc/design_documents/consensus.html

通过以上三方面对交易的性能以及稳定性进行优化,转账类交易内存使用整体降低了33%左右,CPU使用整体降低了50%;合约类交易内存使用整体降低了50%左右,CPU使用整体降低了30%,性能大幅提升。

功能优化

本次全新版本下,OpenAtom Xuperchain以及crypto仓库现已支持arm架构。

在日志方面,原有的日志库直接使用os.File.Write来写入每一条日志,系统调用开销比较大,同时,日志的格式化在锁内,并发写入日志时耗时比较大。经过优化后,使用bufio.Writer来写入日志,从而减少了系统调用的次数,提升了日志写入效率。除此之外,也实现了在锁外格式化日志,在锁内写入日志buffer,大大降低并发写入日志耗时。

在共识层面,本次新版本中,Chained-BFT支持候选人组数量为1,确保单个候选人仍能按照QCTree流程执行。

在算法层面,经过优化后,可以大幅减少merkle算法的内存分配。通常情况下,提交交易会增加内存分配次数,内存分配主要在sha256的生成上,每个double sha256都要进行2次分配,然而随着单个区块中交易数量的增多,生成默克尔树时就会比较耗时。

在OpenAtom XuperChainV5.2版本中,使用了arena分配算法,通过“一次申请,单独分配“的方式,一次性申请够所有的内存,再在每次计算sha256的时候单独分配, 另外,使用了零分配的sha256函数来辅助计算sha256,大大减少了内存分配次数。经过测试,对于一个10000个交易的区块,内存分配次数从30017降到了5。

Bug修复

OpenAtom XuperChainV5.2版本针对xchain-cli以及共识、cache等地方进行了bug修复。包括:

xchain-cli

  • 修复了xchain-cli中merge命令会失败问题,目前已支持utxo的merge以及split;

  • 修复了裁剪账本命令裁剪失败以及程序再启动失败问题;

  • 修复指定链名功能不可用问题;

  • 修复提案高度相关bug。

XuperCore

  • 修复utxo cache配置数值较小时区块交易执行失败问题;

  • 修复状态机walk时验证timer合约可能失败的bug;

  • 修复poa和pos类合约共识配置init_proposer为空可能导致程序退出的bug;

  • 修复重新加载平行链时可能导致程序退出的bug;

  • 修复共识升级时节点不出块问题,V5.2版本在此功能上稳定性提升至99%以上。

以上便是本次版本升级的全部内容,你对OpenAtom XuperChainV5.2有哪些建议和心得体会?欢迎联系小助手(XuperChain-Help)加入超级链官方微信群交流。

图片.jpg

发表评论