IRC meeting summary for 2017-06-08

概覽


主要議題

  • 優化:減少計算區塊雜湊的次數
  • UI 與 pertxout 升級的互動
  • crc32 leveldb 1.20

優化:減少計算區塊雜湊的次數

背景

目前在頂端接受區塊會對標頭進行約 6 次雜湊。Jtimon 製作了 PR #10339 來改善這種情況。Wumpus 進行了一些基準測試,結果減少了 26% 的雜湊操作。

意見

Gmaxwell 建議在區塊物件中快取雜湊,但 Sipa 更喜歡這個解決方案。他認為向驗證特定函數加入更多參數比改變原始資料結構侵入性更小。Wumpus 認為傳遞額外的參數比擴展原始資料結構更容易理解,但快取總是有些風險和容易出錯。Wumpus 認為如果在效能方面不值得,我們不應該做任何一個。

Morcos 想知道速度提升是否值得使程式碼變得更複雜/涉及的權衡。Gmaxwell 提出這個問題是因為重複雜湊在區塊傳播的延遲關鍵路徑上,可能達到一毫秒。Codeshark 更願意為更好的架構犧牲一點效能。

Jtimon 認為不同意這個概念的人應該早點說清楚。

結論

  • 在會議後和 PR #10339 上進一步討論。

UI 與 pertxout 升級的互動

背景

PR #10195 將鏈狀態資料庫及其快取從每交易模型切換到每 txoutput 模型,需要在資料庫中進行升級程序,在正常硬體上可能需要幾分鐘或在其他地方更長時間。Sipa 認為這需要一些 GUI 互動,以向使用者明確發生了什麼。

意見

Jonasschnelli 建議使用 uiInterface.Progress,但這不允許你中斷程序。使用者可能希望將升級程序延遲到另一個時間。

Luke-jr 想知道如果你崩潰,執行舊版本,然後再執行新版本會發生什麼。Gmaxwell 認為舊版本會告訴你資料庫損壞並停止,但他沒有測試過。他確實認為這是應該處理的情況。

回到舊版本需要重新索引,這是修剪節點無法做到的。發行說明中應該有明確的警告。

Sipa 注意到可以進行一個微不足道的變更來保證舊版本會將其視為空資料庫。一種方法是創建一個新資料庫,但在升級期間需要兩倍的磁碟儲存。微不足道的方法是將最佳區塊雜湊的記錄設定為無效的東西。

結論

  • Jonasschnelli 將進行記錄程序的工作,類似於 VerifyDB。
  • 監控升級期間的磁碟使用情況並進行更多測試。根據這些結果繼續討論。

crc32 leveldb 1.20

背景

最新版本的 levelDB 為 intel 實作了硬體加速的 crc32,用於計算校驗和。

意見

Sipa 非常不喜歡 levelDB 開發者使用的方法,它需要使用不同旗標編譯的單獨物件,並且他們在不知道 CPU 是否支援它的情況下呼叫新物件。Wumpus 和 Gmaxwell 注意到使用特殊旗標編譯單獨物件是標準且正確的,但在不知道 CPU 是否支援它的情況下呼叫它則不是。

Jtimon 建議在 levelDB github 上開啟一個議題。Gmaxwell 認為最好直接提交修復,因為開啟議題不會有太大幫助。

稍後加入會議的 Cfields 已經準備好修復

結論

  • 修復 levelDB

高優先級審查

  • Sipa 想加入 #10148(使用非原子刷新進行區塊重放),它將使有效可用的 dbcache 加倍。
  • Luke-jr 已經 rebase 了多錢包
  • Gmaxwell 提醒大家 BlueMatt 的快取變更在 #10192 上是 31% 的區塊連接速度提升,它需要審查。

幽默時刻

9:45   cfields_         here!
9:47   BlueMatt         oh, i was supposed to mention cfields_ would be late
9:47   cfields_         heh, thanks
9:47   BlueMatt         you're welcome :)

9:48   gmaxwell         we should submit a fix, it should be trivial.
9:48   cfields_         that's done already: https://github.com/theuni/bitcoin/commit/2cb7dda13884e44105f33c16e7e2c1a9aed46295
9:48   sipa             cfields_: oh!
9:48   cfields_         or are you guys talking about something else?
9:48   sipa             probably not
9:49   wumpus           lol <long discussion> oh, cfields did it already

參與者

IRC nick Name/Nym
jonasschnelli Jonas Schnelli
sipa Pieter Wuille
cfields Cory Fields
luke-jr Luke Dashjr
kanzure Bryan Bishop
gmaxwell Gregory Maxwell
wumpus Wladimir van der Laan
morcos Alex Morcos
sdaftuar Suhas Daftuar
jtimon Jorge Timón
BlueMatt Matt Corallo
instagibbs Gregory Sanders
achow101 Andrew Chow
CodeShark Eric Lombrozo

免責聲明

本摘要是在沒有任何討論參與者輸入的情況下編寫的,因此任何錯誤都是摘要作者的責任,而非討論參與者。