好久以前在试过在内存中replay HIVE/STEEM节点,但是后来每次replay的时候都是主备切换着来,所以并不急,也就一直没用内存模式。
(图源 :pixabay)
最近被朋友问及在内存中操作,发现已经忘记的差不多了,于是在电脑上试着弄一遍。
准备/dev/shm
在这之前,我们先来了解一下/dev/shm
,如果你听过ramdisk,那么对这个东西一定不会陌生,简单来讲就是在内存中开辟的磁盘,可以像磁盘一样使用,又能享受内存的超快读写速度。
在内存中Replay节点,首先要保证/dev/shm
分配的空间大于Replay完成后的shared_memory.bin
文件的大小,否则有可能出问题。
我的系统上,系统自动为我分配了63G的/dev/shm
空间,倒是足够了:
tmpfs 63G 0 63G 0% /dev/shm
如果觉得不够用,可以用以下命令调整:
sudo mount -o remount,size=68G /dev/shm
修改shared-file-dir & Replay
在节点配置文件中
将:shared-file-dir = "blockchain"
修改为:shared-file-dir = /dev/shm
然后使用如下指令Replay区块链:
steemd --replay-blockchain
恢复设置
如果服务器/电脑内存不吃紧,那么Replay 完成后,可以让shared_memory.bin
一直放在/dev/shm
下运行,否则我们需要把它弄回磁盘上去(ssd)。
大致步骤如下:
- 使用
Ctrl+C
关闭程序 - 复制
/dev/shm/shared_memory.bin
到blockchain
目录(根据你自己的设置) - 修改
shared-file-dir = "blockchain"
然后,重新启动程序就行。
/dev/shm的恢复
可以使用之前的命令将/dev/shm
容量恢复成之前的大小。
当然还有一种方法就是重启系统,将其恢复至默认状态。(重启之前不要忘记先关闭节点,否则数据会损坏)。
效率提升多少
我使用当前最新的block_log
文件(北京时间4月21日上午10时),包含区块数为:42720937
, 全部Replay完,耗时情况如下:
Done reindexing, elapsed time: 19888.23536099999910221 sec
有图有真相:
折算下来约为5小时30分,而我在硬盘(ssd)上弄,大概需要8-10小时左右(还是之前区块更少一些的时候)。
所以在内存中Replay,对效率还是会有提升的。
其它
Replay完成的时间与程序编译时的参数、开启的插件、CPU主频、硬盘读写速度、block_log的新旧(亦即大小)等都高度相关,本文中使用的时间仅供参考。
Very cool photo. It’s all I could understand.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Google Translate is a handy extension to add if you are using the Chrome or Brave browsers. One can just highlight the area of text on the screen they wish translated and then hit the extension icon. Boom, your James Kirk with your Universal Translator. 🤓
They are basically talking about how to run a replay of the HIVE/STEEM chain(s) in memory as opposed to disk like it was done prior to the RocksDB installation of HF20 or so.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hi! Did you know that steemit.com is now censoring users and posts based on their opinions?
All the posts of these users are gone!
https://github.com/steemit/condenser/commit/3394af78127bdd8d037c2d49983b7b9491397296
Here's a list of some banned users:
'roelandp', 'blocktrades', 'anyx', 'ausbitbank', 'gtg', 'themarkymark', 'lukestokes.mhth', 'netuoso', 'innerhive'
See anyone you recognize? There could be more, they also have a remote IP ban list.
Will you be censored next?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit