KlaytnStateTrieCacheSeries#1:?确认产生Cache问题的原因
Klaytn为了提高区块链平台的性能,做了许多方面的努力。我们将通过下列文章介绍statetriecache性能改善过程。
??确认Cache问题的原因
??寻找最佳的Cache
??计算Statetriecachemiss
??进行?CacheSizeTuning
本篇将介绍进行Klaytn有关测试时出现的问题以及这些问题的来源-Go语言GC(GarbageCollector)。在进行Klaytn有关测试时,出现了下列问题。
<imgalt=""class="tuvhyaj"?src="https://miro.medium.com/max/964/0*KSFKadBeRExUlkA6"width="482"height="321"srcSet="https://miro.medium.com/max/552/0*KSFKadBeRExUlkA6276w,https://miro.medium.com/max/964/0*KSFKadBeRExUlkA6482w"sizes="482px"/>
Mobilum Technologies与Crypto.com达成合作,将提供代币流动性服务:2月22日消息,数字服务提供商(DSP)Mobilum Technologies宣布,已经与Crypto.com签署一项战略服务协议,将使用Mobilum的算法交易平台提供代币流动性服务。
Mobilum将利用其算法交易平台提供交易研究和执行服务,以进一步增强Crypto.com的客户体验。Mobilum还将向 Crypto.com提供定期报告,包括市场活动的总结和统计。Mobilum将在协议期限内获得每月预付费用。Crypto.com已授予Mobilum 200万美元的免息信贷额度,并以40万美元的保证金作为抵押。(PRNewswire)[2022/2/23 10:09:18]
利用Prometheus提供的API测试内存使用量
在Klaytnbinary中,以3500TPS处理transaction时,大约需要用到100G的内存。我们为了确认具体是哪里在消耗大量内存,利用Go语言所提供的内存分析工具,进行了确认。
??gotoolpprofcn-mem0.prof
File:kcn
BuildID:7b45b11c163a99518095ffb64083e4aa61fd321f
Type:inuse_space
Time:Mar26,2020at8:56am(KST)
Enteringinteractivemode(type"help"forcommands,"o"foroptions)
“无聊猿”BAYC地板价跌至57.5 ETH:金色财经报道,随着加密市场全面走低,NFT 市场也受到了影响,不少 NFT 持有者担心 ETH 价格下降而选择恐慌性抛售。根据 NFTGo.io 数据显示,目前“无聊猿” BYAC 地板价已经跌至 57.5 ETH(约合 76,400 美元),过去 24 小时降幅为 4.96%。另据 Proof.xyz 市场研究负责人 NFTstatistics.eth 在社交媒体透露,OpenSea 平台上的 WETH 交易量占比首次超过 50%,表明很多持有者在抛售 NFT。不过,CryptoPunks 地板价却涨至 66.75 ETH,过去 24 小时涨幅达到 6.6%,分析认为投资者可能将 CryptoPunks 视为更耐用的 NFT 资产。(decrypt )[2022/11/11 12:46:57]
(pprof)top
Showingnodesaccountingfor41.91GB,96.33%of43.50GBtotal
Dropped382nodes(cum<=0.22GB)
Showingtop10nodesoutof77
?flatflat%sum%cumcum%
?30GB68.97%68.97%30GB68.97%github.com/allegro/bigcache/queue.NewBytesQueue
?5.65GB12.98%81.95%5.65GB12.99%github.com/allegro/bigcache.(*cacheShard).set
Gate.io公布GateChain 2020年总结和2021年发展规划:自2020年6月创世发布以来,Gate Chain共完成4次大版本升级,发布DeFi生态系统规划、创新DeFi兑换协议HipoSwap白皮书,上线了稳定币USDG。新一年GateChain建设重点,将从底层协议转移到上层生态和应用上。Gate.io宣布GateChain-EVM将于近期在TestNet上线,进入公测阶段,优异性能包括:完全兼容以太坊虚拟机;用户无需跨链迁移资产即可使用智能合约;GT是GateChain-EVM中支付Gas费用的唯一资产。
目前,GateChain的生态产品正紧锣密鼓推进中,包括聚合交易平台HipoSwap、资产跨链产品、钱包Wallet.io、浏览器Explorer、智能合约开发工具IDE、智能合约一键迁移工具等。GateChain将力争在2021年,建设成完整的DeFi生态链。[2021/1/4 16:24:08]
?1.53GB3.52%85.47%1.53GB3.52%reflect.New
?1.25GB2.87%88.35%2.60GB5.97%github.com/klaytn/klaytn/ser/rlp.decodeBigInt
通过内存分析工具,我们可以看到每个部分所消耗的内存。在上述结果中,可以通过?Showingnodesaccountingfor41.91GB,96.33%of43.50GBtotal看到kcnbinary占了43.5GB,还可以看到其中的96.33%,即41.91GB具体用在哪里。不仅如此,通过30GB68.97%github.com/allegro/bigcache/queue.NewBytesQueue,可以看到有30GB(68.97%)用于bigcache上。
动态 | 英国Bladetech公司欲放弃建立比特币矿场的计划:据 cryptonewsreview消息,但随着2018年加密货币价格下跌,越来越多的人退出了加密矿业市场。英国一家名为 Bladetech的公司的项目,该公司一直在为建立英国最大的比特币矿场制定计划,目前从该公司传出的声音是,由于市场激荡,这一计划被无限搁置,也许就随之消失了。[2018/12/20]
??
这两个测试结果中,我们发现了问题。根据Prometheus所提供的内存使用library,kcn大约占了100GB,但内存分析结果(43.50GBtotal)表明,kcnbinary只占了?43.5GB。我们无法确认其余56.5GB(=100GB-43.5GB)的内存去了哪里。?
于是我们猜测应该是Bigcache占据了大部分内存。为了确认Bigcache是否占据了内存,我们在相同环境的2台服务器上设置了不同的cachesize进行测试,设置分别为30GB和0GB。2台服务器的top和内存分析结果如下。
(Top命令结果是GiB,Prometheus所提供的library的结果是GB,两者为相同的量)
Cypresssynctest
AWSInstance:m5.8xlarge
memorysize:128G
cachesize:30G,0G
动态 | TIS INTEC Group旗下两家公司设置区块链研发据点:据日经新闻消息,日本TIS INTEC集团旗下的两家子公司INTEC(富山市)和TIS(东京新宿)新成立了东京研发中心,将推进人工智能(AI)和区块链(分布式账本)技术的开发。[2018/12/6]
<imgalt=""class="tuvhyaj"src="https://miro.medium.com/max/1484/1*BUBXxboSlBArnNSfLo4KDw.png"width="742"height="366"srcSet="https://miro.medium.com/max/552/1*BUBXxboSlBArnNSfLo4KDw.png276w,https://miro.medium.com/max/1000/1*BUBXxboSlBArnNSfLo4KDw.png500w"sizes="500px"/>
<imgalt=""class="tuvhyaj"src="https://miro.medium.com/max/1484/1*KydRE8pnP0G5-3s5h9KVSw.png"width="742"height="366"srcSet="https://miro.medium.com/max/552/1*KydRE8pnP0G5-3s5h9KVSw.png276w,https://miro.medium.com/max/1000/1*KydRE8pnP0G5-3s5h9KVSw.png500w"sizes="500px"/>
top命令结果(左:cache30G;右:cache0GB)
<imgalt=""class="tuvhyaj"src="https://miro.medium.com/max/2156/1*pKdGJgwuIBTPgAjBH_JLNQ.png"width="1078"height="564"srcSet="https://miro.medium.com/max/552/1*pKdGJgwuIBTPgAjBH_JLNQ.png276w,https://miro.medium.com/max/1000/1*pKdGJgwuIBTPgAjBH_JLNQ.png500w"sizes="500px"/>
<imgalt=""class="tuvhyaj"src="https://miro.medium.com/max/2156/1*0VudYV4vE8HnwT0bXF6CiQ.png"width="1078"height="564"srcSet="https://miro.medium.com/max/552/1*0VudYV4vE8HnwT0bXF6CiQ.png276w,https://miro.medium.com/max/1000/1*0VudYV4vE8HnwT0bXF6CiQ.png500w"sizes="500px"/>
GoMemoryProfiling结果(左:cache30G;右:cache0GB)
我们可以看到,被分配Bigcache的服务器其Top和内存分析结果中内存使用量分别为70GB和35GB,有35GB的内存追踪不到。而没有分配Bigcache的服务器其Top和内存分析结果中内存使用量分别为5GB和2GB,有3GB的内存追踪不到。?
通过以上测试,我们可以推断,若使用Bigcache,会占用大于分配额的内存。而就算不使用Bigcache,也会出现3GB左右的遗漏。当然,GC(GarbageCollector)的运作,可能令不管使用什么样的Go程序都有机会出现内存分析结果和实际使用量的误差。
而且,我们通过这篇文章可以得知,长时间占据大量的heap内存,并在分配时使用pointer的话,会消耗非常大的内存。
<imgalt=""class="tuvhyaj"src="https://miro.medium.com/max/3200/0*E7gDbvMeS8E_YPgO"width="1600"height="572"srcSet="https://miro.medium.com/max/552/0*E7gDbvMeS8E_YPgO276w,https://miro.medium.com/max/1104/0*E7gDbvMeS8E_YPgO552w,https://miro.medium.com/max/1280/0*E7gDbvMeS8E_YPgO640w,https://miro.medium.com/max/1400/0*E7gDbvMeS8E_YPgO700w"sizes="700px"/>
GC(GarbageCollector)可寻找程序动态分配的内存中不再运作的部分,收回该部分的内存并分配给其他区域。为此,Go语言的GC(GarbageCollector)会对没有运作的区域进行确认,看是否被分配了内存。这时,用于确认的标志就是pointer,如果某个区域有很多pointer或占据了大量内存,GC在搜查过程中会消耗较大内存。
话句话说,在运行GC(GarbageCollector)之前,内存使用量为44GB,一旦开始运行,内存使用量就会增加100GB。再加上进行内存分析的时间刚好在GC完成运转后,所以只看到了运转前的内存使用量,即44GB。由于Klaytn分配的Bigcache量很大,所以GC一直在消耗更多的内存。
这类情况会导致系统突然出现内存不足的情况。因为Klaytn需要长时间运转,必须避免由于占用过多内存导致系统突然崩溃的情况。在下一篇文章内,我们将会介绍解决该内存遗漏问题的过程。
关于Klaytn
项目名称:Klaytn
英文缩写:KLAY
官方网站:https://www.klaytn.com/??
项目简介:Klaytn是以服务为中心的企业级分布式信任区块链平台,通过高效的“混合”设计,结合了公有链和私有链的最优功能。Klaytn与全球众多知名品牌的参与合作,通过共同的不懈努力,创建可靠的去中心化业务平台。Klaytn治理委员会是一个由跨国企业和组织组成的联盟,负责运营共识节点网络,推动生态系统发展。Kakao的区块链开发部门「GroundX」已正式推出Klaytn,并可用于商业用途。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。