Klaytn State Trie Cache Series #2: 寻找最佳的Cache Klaytn为了提高区块链平台的性能,做了许多方面的努力。我们将通过下列文章介绍 state trie cache性能改善过程。 ??确认Cache问题的原因 ??寻找最佳的Cache ??计算State trie cache miss ??进行?Cache Size Tuning 在上一篇,我们确认了内存使用过多的原因在于长时间分配Heap。而像fastcache或freecache的Go GC overhead会相对较低。在本篇中,我们将介绍寻找内存使用量较低的cache的方法。 来源:https://dgraph.io/blog/post/introducing-ristretto-high-perf-go-cache/ 在上一篇,我们看到在Go中速度较快的cache有ristretto、bigcache、freecache和fastcache。为了确认上述cache是否适用于Klaytn,我们在Klaytn平台上进行了下列测试。 KLAY 传输测试 使用AWS instance : m5.2xlarge CN 4, PN 4, EN 4, locust slave 4 memory size : 32G cache size : 6G RPS 2000, accounts : 0.5M Cache比较测试结果。 内存总使用量是含gc在内的总使用量。 Entry存储数使用了每个cache所提供的stat值。 Bigcache是原先使用的cache。 Ristretto有管理LFU(Least Frequently Used)的功能,即可追踪确认近期使用频率。正因如此,占用了大量内存,出现了内存不足的情况。同时,我们还看到出现了很多cache miss,可推断entry存储数也相对较低。 Ristretto的测试结果在意料之外,可这个问题并不只是出现在Klaytn上。根据CODASYL所发表的基准,Ristretto的hit ratio比其他cache明显低了很多。由于数据输入方式不同,符合LRU的方式和符合LFU的方式就会不同,根据Klaytn的state trie生成方式,LRU更符合Kalytn,因为生成新的trie的时候需要重新接触最近存储的node。尽管上图中的throughput表明Ristretto的性能最佳,但是在有关Klaytn的测试中出现的cache遗漏却是最多的。 总的来说,由于Ristretto的性能不如其他cache,因此我们认为不适合Klaytn使用。 Freecache拥有全新结构,可以消除?GC overhead。它与Bigcache相比,内存消耗更低,而entry存储数更多。 Fastcache的结构与Bigcache相同,但执行效率更高。它与Freecache一样,相比于Bigcache,内存消耗更低,而entry存储数更多。 虽然Freecache和Fastcache的存储量相同,但是在内存用量方面存在明显差异。因此,我们最终选择在Klaytn使用内存用量最少的Fastcache。 为了确认Fastcache和Bigcache的性能差异,我们采用了更大的instance对TPS进行测试。在相同配置的2台instance上,分别使用不同的cache进行了测试。 KLAY传输测试 AWS instance : m5.18xlarge CN 4, PN 8, EN 8, locust slave 4 memory size : 144G RPS 4000, accounts : 5M Bigcache和Fastcache的比较测试 我们可以看到内存使用量减少了约30%,从98G下降至69G;entry存储数也增加了12%,从147M上升至165M。 同时,我们通过Cypress sync测试确认速度是否有所提高。尽管instance的规模小,但依然可以看到由于cache miss导致了sync速度上的差异。 Cypress sync test AWS instance : m5.2xlarge memory size : 32G cache : Bigcache, Fastcache cache Size : 6GB, 9GB Bigcache和Fastcache的sync test结果 从左侧图表可以看出,Fastcache所存储的entry比Bigcache多,cache miss出现得更少更慢。而右侧图表显示的是当前的区块数量,也可以看到Fastcache的区块数也比Bigcache高。可以看出Fastcache同步 Cypress block的速度比Bigcache更快。 在本篇中,我们测试了多个可以替代Bigcache的cache,并通过测试发现Fastcache在内存管理和性能方面比Bigcache更优秀。因此从Klaytn v1.5.0版本开始,我们采用了Fastcache,如果目前用于节点运营的版本低于该版本,建议用户进行升级。 在下一篇,我们将探讨造成state trie cache miss的因素。 关于Klaytn 项目名称: Klaytn 英文缩写: KLAY 官方网站: https://www.klaytn.com/ 项目简介:Klaytn是以服务为中心的企业级分布式信任区块链平台,通过高效的“混合”设计,结合了公有链(分布式数据和控制、分布式治理)和私有链(低延迟、高可扩展性)的最优功能。Klaytn与全球众多知名品牌的参与合作,通过共同的不懈努力,创建可靠的去中心化业务平台。Klaytn治理委员会是一个由跨国企业和组织组成的联盟,负责运营共识节点网络,推动生态系统发展。Kakao 的区块链开发部门「Ground X」已正式推出 Klaytn,并可用于商业用途。 —- 编译者/作者:Klaytn爱好者 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
TechatKlaytn技术系列:寻找最佳的Cache
2021-01-27 Klaytn爱好者 来源:区块链网络
LOADING...
相关阅读:
- 顶级加密货币分析师看好四种山寨币,称比特币创下历史新高2021-01-27
- IPFS领域的应用发展极为迅猛IPFS生态的不断丰富为Filecoin网络带来了哪些2021-01-27
- 俄罗斯主要银行Sberbank申请启动自己的稳定币申请-可能盯住了菲亚特卢2021-01-27
- 万维生态:一文看懂万维生态WWW节点2021-01-27
- 牛市继续!Defi热潮全面开花!寿司sushi分叉币火热空投2021-01-27