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,,并可用于贸易用途。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。