2018-08-02 IRC 會議摘要

概覽


本週會議討論的主題包括如何處理特定邊緣情況下衝突的編譯器標誌、延續上週關於修復 Windows 使用者檔案名中 Unicode 問題的討論,以及更改程式(特別是其資料庫元件)在某些系統上開啟檔案的方式。

在主題開始前,Wladimir van der Laan 簡要連結了 Bitcoin Core 0.17 的待處理 PR待處理 issue 和計劃的發布時間表。鼓勵潛在貢獻者審查這些頁面並尋找幫助推進發布的方法。

CXXFLAGS 相關事項

背景: 用於建置 Bitcoin Core 的腳本將參數(標誌)傳遞給編譯器,告訴它 Bitcoin Core 需要什麼資源以及使用或避免哪些優化。最近,這包括新增 -mavx2 標誌(Mode AVX2)以在支援的 CPU 上啟用 SHA256 雜湊的硬體加速。除了 Bitcoin Core 傳遞的標誌外,使用者可以使用 CXXFLAGS 變數傳遞額外的參數,包括標誌 -mno-avx2(Mode No AVX2)。如果同時傳遞這兩個標誌,則僅使用最後出現的標誌。

討論(日誌): Luke Dashjr 請求並介紹了該主題,「Autotools 在我們自己的標誌之後強制使用者 CXXFLAGS,因此當使用者使用 -mno-avx2 建置時,建置只會失敗。」

Wladimir van der Laan 說,「在我看來,這看起來是一個非常人為設計的場景——至少不值得用各種編譯器特定的 pragma 污染程式碼。」

Cory Fields 補充說,「我假設問題是由於編譯器損壞導致的一些編譯失敗,因此希望能夠完全避免它們。」

結論: Dashjr 認為該問題對於 Bitcoin Core 0.17 是必須修復的,但 van der Laan、Marco Falke 和 Gregory Maxwell 不同意。似乎很可能會徵求報告使用者的額外資訊,以了解他們為什麼需要傳遞 -mno-avx2

Windows 檔案名中的 Unicode 問題

背景:上次會議所討論,Microsoft Windows 內建的介面在某些情況下阻止 Bitcoin Core 輕鬆開啟包含非拉丁字元的檔案。

討論(日誌): Sjors Proovost 請求並介紹了該主題:「鑑於 [Bitcoin Core 0.17 的最終開發] 還剩兩週,我們是否想修復 Windows Unicode 問題?我認為工單中的意見是否定的。」

Cory Fields 指出,「由於問題的性質,我認為許多會報告它的人可能不會說英語,因此重要性可能有點被低估了。」

該問題的一個特殊困難是,如果沒有訪問以特定方式配置的 Windows 系統,似乎無法重現該問題,因此不使用 Windows 的開發人員(大多數活躍貢獻者)無法直接處理它,即使錯誤得到修復,Bitcoin Core 的自動化測試也無法用於防止未來的退化。

結論: Marco Falke 指出,修復該問題「需要 leveldb [升級] 和重大變更。」他建議在 0.18 中解決該問題,幾位會議參與者似乎同意。他進一步建議「如果符合錯誤修復的條件,我們可以將其向後移植到 0.17.1」,會議參與者明確同意。

x86_64 上的 LevelDB FD 使用

背景: Bitcoin Core 使用鍵值儲存資料庫(DB)LevelDB 來追蹤未花費交易輸出(UTXO)集——所有可花費的比特幣組——以及 Bitcoin Core 支援的可選交易索引。LevelDB 使用大量相對較小的檔案(約 2 MB)來儲存其資料。當它從這些檔案讀取時,它更喜歡使用記憶體映射(mmap)以特定的高效方式讀取,但如果不可能,它會退回到使用帶有檔案描述符(FD)的 select 系統呼叫(syscall)直接從磁碟機讀取。然而,select syscall 在可以開啟的 FD 數量上嚴重受限。

討論(日誌): Gregory Maxwell 請求並介紹了該主題:「最近有一個使用者報告在他的 x86_64 Linux 主機上達到 select 限制。使用 lsof [列出開啟檔案] 檢查顯示,在我們期望它主要使用 mmap 的節點上,leveldb 正在使用大量 FD。顯然 leveldb 有一個 mmap 數量限制。據我所知,我們沒有任何理由不應該增加它。另外,我們應該轉向使用 poll,但增加 mmap 限制應該是約 1 行變更,除非有人知道不這樣做的理由。」

討論了 mmap 限制,沒有參與者知道不增加它的理由。會議結束後不久,Suhas Daftuar 為 leveldb 找到了一個 issue,可能表明為什麼最初設置了該限制,這似乎支援在 x86_64 系統上增加限制。

穿插在 leveldb 討論中的主題是將 Bitcoin Core 從較舊的 select syscall 切換到較新的 poll syscall 以開啟檔案描述符(FD),這不僅包括資料檔案,還包括網路埠。這個低階變更將消除 select 只能處理較低最大 FD 數量的問題,因此 Bitcoin Core 在各個方面受到限制(例如,即使您增加預設最大連接數,它也無法處理更多連接)。此變更的一個問題是 Windows 未實作等效的 poll syscall,因此需要編寫一些相容性程式碼。

結論: 從討論來看,LevelDB mmap 限制很可能會從目前的 1,000 增加到約 4,000,用於 0.17 Bitcoin Core 版本。select 不太可能在該版本中更改為 poll,因為沒有足夠的測試時間,但沒有人反對在後續計劃的主要版本(暫定 0.18)中更改它。

注意: 此主題的討論在會議正式結束後持續了約二十分鐘。

幽默

背景:IRC 頻道最近遭受垃圾訊息攻擊,因此頻道模式設定為安靜(+q)沒有註冊帳戶的使用者。

        wumpus  topics?
       luke-jr  crickets
        wumpus  crickets are... good I guess
      gmaxwell  can someone please drop the registed users
                +q for now? sdaftuar is muted.
provoostenator  (I guess it was crickets and the muffled voice
                of sdaftuar in the distance)

參與者

IRC 暱稱 姓名/匿名
wumpus Wladimir van der Laan
gmaxwell Gregory Maxwell
cfields Cory Fields
luke-jr Luke Dashjr
provoostenator Sjors Provoost
MarcoFalke Marco Falke
meshcollider Samuel Dobson
ken2812221 Chun Kuan Lee
sipa Pieter Wuille
jonasschnelli Jonas Schnelli
ossifrage Clem Taylor
sdaftuar Suhas Daftuar
instagibbs Gregory Sanders
jnewbery John Newbery
phantomcircuit Patrick Strateman
kanzure Bryan Bishop
midnightmagic Midnight Magic
promag Joao Barbosa
achow101 Andrew Chow

免責聲明

本摘要在編寫時未徵求討論參與者的意見,因此任何錯誤都是摘要作者的過失,而非討論參與者的過失。特別是,從討論中摘錄的引文在大小寫、標點符號和拼寫方面進行了修改,以產生一致的句子。括號中的詞語和片段以及背景敘述和說明由本摘要的作者新增,可能無意中改變了某些句子的含義。如果您認為任何引文被斷章取義,請開啟 issue,我們將更正錯誤。