關于 “每10分鐘處理8M區(qū)塊數(shù)據(jù),相當于每秒處理13KB數(shù)據(jù),這能撐爆屌絲電腦哪方面?CPU?內(nèi)存?帶寬?硬盤”

每10分鐘處理8M區(qū)塊數(shù)據(jù),相當于每秒處理13KB數(shù)據(jù),這能撐爆屌絲電腦哪方面?CPU?內(nèi)存?帶寬?硬盤?

其實這是一個偽命題,因為有效節(jié)點需要24小時開機,個人電腦基本不會這樣做干,但是可以就這個問題提供一些信息方便討論:

一.這個8M的區(qū)塊不是在10分鐘內(nèi)平均處理,資源占用曲線不是一條直線,所以不能相當于“每秒處理13KB數(shù)據(jù)”, 而是每隔10分鐘處理8M數(shù)據(jù),這需要在收到數(shù)據(jù)后馬上處理所以實際的資源占用應該是一個波狀曲線,電腦的資源占用每隔10分鐘會有一個波峰起,但這也是理想狀態(tài)

二. 我們來看看這8M數(shù)據(jù)需要處理什么,占用多少資源?

驗證一個區(qū)塊需要依賴很多東西:

1.軟件版本 通常新的版本性能會高一些

2.UTXO 緩存的大小, 越大的緩存,訪問硬盤上的數(shù)據(jù)庫就越少,這會導致幾毫秒到幾秒的差異

3.簽名緩存和cpu速度 ,越大的緩存,可以避免更多簽名驗證操作,簽名驗證在每個版本是不同的,每驗證一個大約需要0.01ms~0.6ms,

驗證一個區(qū)塊的需要45ms ~ 2.7s

4. 內(nèi)存池與新區(qū)塊的關系,如果大部分交易在mempool中,驗證區(qū)塊將需要更少的時間

5. 網(wǎng)絡延時,0.13以前的區(qū)塊總是整個傳輸,當一個新區(qū)塊產(chǎn)生時候需要占用不少資源

5. 和對端節(jié)點的網(wǎng)絡延時,發(fā)送一個區(qū)塊需要多次傳輸,和對端的延時會影響處理速度

6. 連接節(jié)點的數(shù)量,如果有多個連接,那么節(jié)點需要把新的區(qū)塊廣播到更多節(jié)點,將占用更多CPU和網(wǎng)絡帶寬資源

7. utxo的規(guī)模,初期utxo是很小的,當后來增長越來越大的時候會占用更多資源查詢驗證

8. 老版本的比特幣代碼簽名驗證存在一個效率低下的bug,即交易規(guī)模可能為O(n ^ 2)。這可能導致單個交易花費幾分鐘來計算簽名散列。這在BIP144中得到了解決,BIP144總是在SegWit交易輸入中使用,最壞的情況是O(n)(在最壞的情況下,對于普通硬件,小于10ms)。

然后看看真實的情況 一.?@狙擊手2113?舉的例子是初始化下載,這個過程中會連續(xù)驗證大量區(qū)塊,當然這樣會連續(xù)耗費大量系統(tǒng)資源,這普通人應該不能接受 這個就不討論了

二. 假設區(qū)塊已經(jīng)同步完畢,再來看看收到區(qū)塊號處理需要多少時間 在bitcoind運行的時候添加-debug=bench, 就會在debug.log里生成區(qū)塊處理的時間記錄

./bitcoind? -debug=bench

debug.log 里會發(fā)現(xiàn)如下類似的記錄:

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,當然這個區(qū)塊是比較長的

下面數(shù)據(jù)是在一臺服務器生成的, 用的bitcoin 0.15分支,ssd硬盤,32G內(nèi)存,8核cpu Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz 抓了一點數(shù)據(jù),從區(qū)塊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]

匯總得到的數(shù)據(jù),

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

假如區(qū)塊增大8倍,假設處理時間也線性增長

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

另外注意這是一個節(jié)點的驗證時間,還有因為區(qū)塊傳輸可能需要跨越多個節(jié)點,假設一個區(qū)塊一個節(jié)點驗證需要1分鐘,考慮到網(wǎng)絡延時,那么10分鐘內(nèi)8M的區(qū)塊最多跨越10個節(jié)點,這樣會會導致極端情況下,節(jié)點會連續(xù)收到多個區(qū)塊,如果普通用戶的cpu被連續(xù)100%占用幾分鐘,那應該是不可接受的,當然這個數(shù)據(jù)并不嚴謹,只是舉個例子

Jameson Lopp 在這里記錄了他自己服務器的使用情況,因為還有網(wǎng)站什么在跑,不是很準確,但可以用來參考

cpu、內(nèi)存、硬盤的使用情況 ?http://statoshi.info/dashboard/db/system-metrics

網(wǎng)絡使用情況 ?http://statoshi.info/dashboard/db/bandwidth-usage

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內(nèi)容