关于 “每10分钟处理8M区块数据,相当于每秒处理13KB数据,这能撑爆屌丝电脑哪方面?CPU?内存?带宽?硬盘”

每10分钟处理8M区块数据,相当于每秒处理13KB数据,这能撑爆屌丝电脑哪方面?CPU?内存?带宽?硬盘?

其实这是一个伪命题,因为有效节点需要24小时开机,个人电脑基本不会这样做干,但是可以就这个问题提供一些信息方便讨论:

一.这个8M的区块不是在10分钟内平均处理,资源占用曲线不是一条直线,所以不能相当于“每秒处理13KB数据”, 而是每隔10分钟处理8M数据,这需要在收到数据后马上处理所以实际的资源占用应该是一个波状曲线,电脑的资源占用每隔10分钟会有一个波峰起,但这也是理想状态

二. 我们来看看这8M数据需要处理什么,占用多少资源?

验证一个区块需要依赖很多东西:

1.软件版本 通常新的版本性能会高一些

2.UTXO 缓存的大小, 越大的缓存,访问硬盘上的数据库就越少,这会导致几毫秒到几秒的差异

3.签名缓存和cpu速度 ,越大的缓存,可以避免更多签名验证操作,签名验证在每个版本是不同的,每验证一个大约需要0.01ms~0.6ms,

验证一个区块的需要45ms ~ 2.7s

4. 内存池与新区块的关系,如果大部分交易在mempool中,验证区块将需要更少的时间

5. 网络延时,0.13以前的区块总是整个传输,当一个新区块产生时候需要占用不少资源

5. 和对端节点的网络延时,发送一个区块需要多次传输,和对端的延时会影响处理速度

6. 连接节点的数量,如果有多个连接,那么节点需要把新的区块广播到更多节点,将占用更多CPU和网络带宽资源

7. utxo的规模,初期utxo是很小的,当后来增长越来越大的时候会占用更多资源查询验证

8. 老版本的比特币代码签名验证存在一个效率低下的bug,即交易规模可能为O(n ^ 2)。这可能导致单个交易花费几分钟来计算签名散列。这在BIP144中得到了解决,BIP144总是在SegWit交易输入中使用,最坏的情况是O(n)(在最坏的情况下,对于普通硬件,小于10ms)。

然后看看真实的情况 一. @狙击手2113 举的例子是初始化下载,这个过程中会连续验证大量区块,当然这样会连续耗费大量系统资源,这普通人应该不能接受 这个就不讨论了

二. 假设区块已经同步完毕,再来看看收到区块号处理需要多少时间 在bitcoind运行的时候添加-debug=bench, 就会在debug.log里生成区块处理的时间记录

./bitcoind  -debug=bench

debug.log 里会发现如下类似的记录:

2018-01-05 08:46:31  - Load block from disk: 0.00ms [0.00s]

2018-01-05 08:46:31    - Sanity checks: 0.00ms [0.00s]

2018-01-05 08:46:31    - Fork checks: 0.39ms [0.00s]

2018-01-05 08:46:31      - Connect 2519 transactions: 362.22ms (0.144ms/tx, 0.086ms/txin) [0.36s]

2018-01-05 08:46:31    - Verify 4205 txins: 362.37ms (0.086ms/txin) [0.36s]

2018-01-05 08:46:31 Pre-allocating up to position 0x700000 in rev01128.dat

2018-01-05 08:46:31    - Index writing: 11.97ms [0.01s]

2018-01-05 08:46:31    - Callbacks: 0.05ms [0.00s]

2018-01-05 08:46:31  - Connect total: 375.14ms [0.38s]

2018-01-05 08:46:31  - Flush: 10.05ms [0.01s]

2018-01-05 08:46:31  - Writing chainstate: 0.11ms [0.00s]

2018-01-05 08:46:34 UpdateTip: new best=00000000000000000086834f4afa2fde67a20b4fdedc27e778f3c510d8a8b854 height=502664 version    =0x20000000 log2_work=87.80422 tx=289373815 date='2018-01-05 08:44:33' progress=0.999999 cache=19.6MiB(144282txo)

2018-01-05 08:46:34  - Connect postprocess: 2147.39ms [2.15s]

2018-01-05 08:46:34 - Connect block: 2532.70ms [2.53s]

其中最后这条就是总的处理时间

2018-01-05 08:46:34 - Connect block: 2532.70ms [2.53s]

前面就是各种检查,验证,cache, 写硬盘等等,总计2532.70ms,当然这个区块是比较长的

下面数据是在一台服务器生成的, 用的bitcoin 0.15分支,ssd硬盘,32G内存,8核cpu Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz 抓了一点数据,从区块502664 ~ 502807

2018-01-05 08:46:34 - Connect block: 2532.70ms [2.53s]

2018-01-05 08:58:54 - Connect block: 139.53ms [2.67s]

2018-01-05 09:05:19 - Connect block: 176.13ms [2.85s]

2018-01-05 09:07:36 - Connect block: 272.23ms [3.12s]

2018-01-05 09:09:19 - Connect block: 189.65ms [3.31s]

2018-01-05 09:13:51 - Connect block: 214.62ms [3.52s]

2018-01-05 09:17:45 - Connect block: 203.60ms [3.73s]

2018-01-05 09:19:05 - Connect block: 335.54ms [4.06s]

2018-01-05 09:37:25 - Connect block: 135.15ms [4.20s]

2018-01-05 09:47:10 - Connect block: 94.84ms [4.29s]

2018-01-05 09:47:37 - Connect block: 99.03ms [4.39s]

2018-01-05 09:57:17 - Connect block: 111.59ms [4.50s]

2018-01-05 10:33:57 - Connect block: 100.12ms [4.60s]

2018-01-05 10:34:04 - Connect block: 106.79ms [4.71s]

2018-01-05 10:41:31 - Connect block: 97.01ms [4.81s]

2018-01-05 10:42:03 - Connect block: 103.70ms [4.91s]

2018-01-05 11:22:08 - Connect block: 97.24ms [5.01s]

2018-01-05 11:25:23 - Connect block: 113.08ms [5.12s]

2018-01-05 11:36:11 - Connect block: 108.54ms [5.23s]

2018-01-05 11:38:24 - Connect block: 98.62ms [5.33s]

2018-01-05 11:45:35 - Connect block: 290.71ms [5.62s]

2018-01-05 11:48:54 - Connect block: 250.84ms [5.87s]

2018-01-05 11:55:22 - Connect block: 362.05ms [6.23s]

2018-01-05 12:06:08 - Connect block: 108.19ms [6.34s]

2018-01-05 12:08:50 - Connect block: 263.63ms [6.61s]

2018-01-05 12:29:27 - Connect block: 428.03ms [7.03s]

2018-01-05 12:43:41 - Connect block: 943.21ms [7.98s]

2018-01-05 12:44:58 - Connect block: 116.12ms [8.09s]

2018-01-05 12:52:22 - Connect block: 98.15ms [8.19s]

2018-01-05 13:04:52 - Connect block: 116.28ms [8.31s]

2018-01-05 13:15:34 - Connect block: 331.70ms [8.64s]

2018-01-05 13:28:30 - Connect block: 185.83ms [8.82s]

2018-01-05 13:36:25 - Connect block: 302.89ms [9.13s]

2018-01-05 13:42:03 - Connect block: 81.50ms [9.21s]

2018-01-05 13:50:58 - Connect block: 70.95ms [9.28s]

2018-01-05 14:12:27 - Connect block: 73.40ms [9.35s]

2018-01-05 14:22:13 - Connect block: 77.62ms [9.43s]

2018-01-05 14:26:32 - Connect block: 394.93ms [9.83s]

2018-01-05 14:33:17 - Connect block: 73.67ms [9.90s]

2018-01-05 14:52:27 - Connect block: 72.17ms [9.97s]

2018-01-05 15:27:53 - Connect block: 2148.74ms [2.15s]

2018-01-05 15:41:51 - Connect block: 104.38ms [2.25s]

2018-01-05 15:46:35 - Connect block: 91.57ms [2.34s]

2018-01-05 15:54:48 - Connect block: 88.23ms [2.43s]

2018-01-05 15:57:49 - Connect block: 94.94ms [2.53s]

2018-01-05 16:03:20 - Connect block: 145.27ms [2.67s]

2018-01-05 16:03:40 - Connect block: 96.68ms [2.77s]

2018-01-05 16:07:37 - Connect block: 92.15ms [2.86s]

2018-01-05 16:33:01 - Connect block: 75.64ms [2.94s]

2018-01-05 16:38:44 - Connect block: 69.83ms [3.01s]

2018-01-05 16:39:29 - Connect block: 85.15ms [3.09s]

2018-01-05 16:46:24 - Connect block: 70.07ms [3.16s]

2018-01-05 16:47:48 - Connect block: 89.63ms [3.25s]

2018-01-05 16:57:22 - Connect block: 79.59ms [3.33s]

2018-01-05 17:00:42 - Connect block: 74.84ms [3.41s]

2018-01-05 17:04:45 - Connect block: 87.91ms [3.49s]

2018-01-05 17:06:10 - Connect block: 92.97ms [3.59s]

2018-01-05 17:10:46 - Connect block: 88.91ms [3.68s]

2018-01-05 17:15:12 - Connect block: 67.22ms [3.74s]

2018-01-05 17:26:54 - Connect block: 77.37ms [3.82s]

2018-01-05 17:33:23 - Connect block: 65.43ms [3.89s]

2018-01-05 17:38:08 - Connect block: 69.34ms [3.96s]

2018-01-05 17:59:04 - Connect block: 72.14ms [4.03s]

2018-01-05 18:09:56 - Connect block: 73.71ms [4.10s]

2018-01-05 18:11:24 - Connect block: 72.10ms [4.17s]

2018-01-05 18:14:50 - Connect block: 77.95ms [4.25s]

2018-01-05 18:27:03 - Connect block: 76.83ms [4.33s]

2018-01-05 18:32:16 - Connect block: 81.21ms [4.41s]

2018-01-05 18:48:59 - Connect block: 75.84ms [4.49s]

2018-01-05 19:03:47 - Connect block: 77.86ms [4.56s]

2018-01-05 19:11:18 - Connect block: 79.90ms [4.64s]

2018-01-05 19:23:34 - Connect block: 72.16ms [4.72s]

2018-01-05 19:44:54 - Connect block: 71.59ms [4.79s]

2018-01-05 19:45:50 - Connect block: 95.71ms [4.88s]

2018-01-05 20:01:16 - Connect block: 76.38ms [4.96s]

2018-01-05 20:24:48 - Connect block: 72.82ms [5.03s]

2018-01-05 20:38:30 - Connect block: 78.33ms [5.11s]

2018-01-05 20:52:29 - Connect block: 76.22ms [5.19s]

2018-01-05 21:00:02 - Connect block: 85.11ms [5.27s]

2018-01-05 21:02:23 - Connect block: 69.26ms [5.34s]

2018-01-05 21:08:56 - Connect block: 78.06ms [5.42s]

2018-01-05 21:41:32 - Connect block: 71.23ms [5.49s]

2018-01-05 21:54:17 - Connect block: 75.79ms [5.57s]

2018-01-05 22:07:33 - Connect block: 70.95ms [5.64s]

2018-01-05 22:45:49 - Connect block: 71.13ms [5.71s]

2018-01-05 23:02:05 - Connect block: 77.69ms [5.79s]

2018-01-05 23:02:30 - Connect block: 90.44ms [5.88s]

2018-01-05 23:03:13 - Connect block: 79.05ms [5.96s]

2018-01-05 23:18:31 - Connect block: 66.09ms [6.02s]

2018-01-05 23:22:10 - Connect block: 79.78ms [6.10s]

2018-01-05 23:28:47 - Connect block: 72.75ms [6.17s]

2018-01-05 23:28:47 - Connect block: 82.79ms [6.26s]

2018-01-05 23:59:46 - Connect block: 75.39ms [6.33s]

2018-01-06 00:02:52 - Connect block: 78.58ms [6.41s]

2018-01-06 00:17:43 - Connect block: 75.23ms [6.49s]

2018-01-06 00:28:13 - Connect block: 80.44ms [6.57s]

2018-01-06 00:52:00 - Connect block: 100.88ms [6.67s]

2018-01-06 00:54:51 - Connect block: 87.12ms [6.75s]

2018-01-06 00:59:57 - Connect block: 78.43ms [6.83s]

2018-01-06 01:17:52 - Connect block: 92.19ms [6.93s]

2018-01-06 01:36:12 - Connect block: 117.87ms [7.04s]

2018-01-06 01:45:07 - Connect block: 70.66ms [7.11s]

2018-01-06 01:51:36 - Connect block: 89.60ms [7.20s]

2018-01-06 01:53:22 - Connect block: 79.21ms [7.28s]

2018-01-06 02:05:38 - Connect block: 90.48ms [7.37s]

2018-01-06 02:06:42 - Connect block: 112.38ms [7.49s]

2018-01-06 02:12:37 - Connect block: 71.84ms [7.56s]

2018-01-06 02:18:03 - Connect block: 75.82ms [7.63s]

2018-01-06 02:25:26 - Connect block: 80.17ms [7.71s]

2018-01-06 02:25:47 - Connect block: 135.73ms [7.85s]

2018-01-06 02:35:43 - Connect block: 105.62ms [7.95s]

2018-01-06 02:38:39 - Connect block: 98.60ms [8.05s]

2018-01-06 02:40:45 - Connect block: 161.57ms [8.21s]

2018-01-06 03:08:44 - Connect block: 78.00ms [8.29s]

2018-01-06 03:17:53 - Connect block: 76.59ms [8.37s]

2018-01-06 03:26:21 - Connect block: 69.61ms [8.44s]

2018-01-06 04:08:09 - Connect block: 72.50ms [8.51s]

2018-01-06 04:08:27 - Connect block: 76.52ms [8.59s]

2018-01-06 04:08:49 - Connect block: 80.24ms [8.67s]

2018-01-06 04:12:32 - Connect block: 129.10ms [8.80s]

2018-01-06 04:14:19 - Connect block: 87.78ms [8.88s]

2018-01-06 04:19:25 - Connect block: 120.86ms [9.01s]

2018-01-06 04:20:25 - Connect block: 164.79ms [9.17s]

2018-01-06 04:23:56 - Connect block: 245.29ms [9.42s]

2018-01-06 04:24:50 - Connect block: 327.44ms [9.74s]

2018-01-06 04:28:17 - Connect block: 250.22ms [9.99s]

2018-01-06 04:38:17 - Connect block: 388.64ms [10.38s]

2018-01-06 04:44:30 - Connect block: 250.66ms [10.63s]

2018-01-06 05:02:32 - Connect block: 108.86ms [10.74s]

2018-01-06 05:15:35 - Connect block: 84.31ms [10.83s]

2018-01-06 05:16:11 - Connect block: 586.11ms [11.41s]

2018-01-06 05:26:30 - Connect block: 288.76ms [11.70s]

2018-01-06 05:29:48 - Connect block: 56.41ms [11.76s]

2018-01-06 06:04:00 - Connect block: 84.79ms [11.84s]

2018-01-06 06:04:36 - Connect block: 113.70ms [11.96s]

2018-01-06 06:27:45 - Connect block: 80.85ms [12.04s]

2018-01-06 06:32:36 - Connect block: 86.82ms [12.12s]

2018-01-06 06:40:21 - Connect block: 282.38ms [12.41s]

2018-01-06 06:42:07 - Connect block: 497.73ms [12.90s]

2018-01-06 06:46:46 - Connect block: 2429.33ms [15.33s]

2018-01-06 06:46:46 - Connect block: 1.74ms [15.33s]

2018-01-06 06:50:54 - Connect block: 7089.67ms [22.42s]

2018-01-06 06:55:26 - Connect block: 4698.15ms [27.12s]

2018-01-06 06:58:33 - Connect block: 288.08ms [27.41s]

2018-01-06 07:05:42 - Connect block: 982.20ms [28.39s]

汇总得到的数据,

block number 145 avg 264.581034ms, min 1.740000ms, max 7089.670000ms

假如区块增大8倍,假设处理时间也线性增长

8M: block number 145  avg 2116.648276ms, min 13.920000ms, max 56717.360000ms

另外注意这是一个节点的验证时间,还有因为区块传输可能需要跨越多个节点,假设一个区块一个节点验证需要1分钟,考虑到网络延时,那么10分钟内8M的区块最多跨越10个节点,这样会会导致极端情况下,节点会连续收到多个区块,如果普通用户的cpu被连续100%占用几分钟,那应该是不可接受的,当然这个数据并不严谨,只是举个例子

Jameson Lopp 在这里记录了他自己服务器的使用情况,因为还有网站什么在跑,不是很准确,但可以用来参考

cpu、内存、硬盘的使用情况  http://statoshi.info/dashboard/db/system-metrics

网络使用情况  http://statoshi.info/dashboard/db/bandwidth-usage

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容