LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > TechatKlaytn技术系列:寻找最佳的Cache

TechatKlaytn技术系列:寻找最佳的Cache

2021-01-27 Klaytn爱好者 来源:区块链网络

Klaytn State Trie Cache Series #2: 寻找最佳的Cache

Klaytn为了提高区块链平台的性能,做了许多方面的努力。我们将通过下列文章介绍 state trie cache性能改善过程。

??确认Cache问题的原因

??寻找最佳的Cache

??计算State trie cache miss

??进行?Cache Size Tuning

在上一篇,我们确认了内存使用过多的原因在于长时间分配Heap。而像fastcachefreecache的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爱好者

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...