2018-08-02 IRC 会议总结

概述


本次每周会议讨论的主题包括:如何处理特定边缘情况下的冲突编译器标志、继续讨论上周关于修复 Windows 用户文件名 Unicode 问题的讨论,以及更改程序(特别是其数据库组件)在某些系统上打开文件的方式。

在正式开始讨论主题之前,Wladimir van der Laan 链接了 待处理的 PR待处理的问题,以及比特币核心 0.17 版本的计划 发布计划。鼓励潜在贡献者查看这些页面,并寻找方法帮助推进发布进程。

CXXFLAGS 相关内容

背景:用于构建比特币核心的脚本将参数(标志)传递给编译器,以告知编译器比特币核心需要哪些资源以及使用或避免哪些优化。最近,这包括添加 -mavx2 标志(AVX2 模式)以在支持的 CPU 上启用 SHA256 哈希的硬件加速。除了比特币核心传递的标志外,用户还可以使用 CXXFLAGS 变量传递其他参数,包括 -mno-avx2 标志(无 AVX2 模式)。如果同时传递这两个标志,则仅使用最后出现的那个标志。

讨论 (日志): Luke Dashjr 提出并介绍了主题:“Autotools 强制在我们的标志之后使用用户指定的 CXXFLAGS,因此当用户使用 -mno-avx2 构建时,构建会直接失败。”

Wladimir van der Laan 说:“在我看来,这似乎是一个非常牵强的场景,不值得为了它而用各种编译器特定的编译指示污染代码。”

Cory Fields 补充道:“我假设问题是一些由于编译器故障导致的编译失败,因此人们希望能够完全避免这些失败。”

结论:Dashjr 认为这个问题必须在比特币核心 0.17 版本中修复,但 van der Laan、Marco Falke 和 Gregory Maxwell 并不认同。似乎很有可能需要向报告该问题的用户索取更多信息,以了解他们为什么需要传递 -mno-avx2

Windows 系统中文件名 Unicode 问题

背景:上一次会议 中所讨论的,内置于 Microsoft Windows 的接口阻止比特币核心在某些情况下轻松打开包含非拉丁字符的文件。

讨论 (日志): Sjors Proovost 提出并介绍了主题:“考虑到比特币核心 0.17 版本的最终开发只剩下两周时间,我们是否想要修复 Windows Unicode 问题?我认为工单中的意见是不修复。”

Cory Fields 指出,“由于问题的性质,我认为许多报告该问题的人可能不会说英语,因此其重要性可能被低估了。”

该问题的一个特殊困难在于,似乎无法在没有访问以特定方式配置的 Windows 系统的情况下重现它,因此不使用 Windows 的开发人员(大多数活跃的贡献者)无法直接解决它,即使修复了该错误,比特币核心的自动化测试也无法用于防止将来出现回归。

结论:Marco Falke 指出,修复该问题“需要升级 leveldb 并进行重大更改。”他建议在 0.18 版本中解决该问题,并且几位与会者似乎同意。他还建议“如果它符合错误修复的条件,我们可以将其反向移植到 0.17.1 版本”,与会者对此表示明确同意。

x86_64 上 LevelDB 文件描述符使用情况

背景:比特币核心使用键值存储数据库 (DB) LevelDB 来跟踪未花费交易输出 (UTXO) 的集合——所有可花费的比特币组——以及比特币核心支持的可选交易索引。LevelDB 使用许多相对较小的文件(约 2 MB)来存储其数据。当它从这些文件读取时,它更倾向于使用内存映射 (mmap) 以一种特定的高效方式读取,但如果这不可行,它会回退到使用带有文件描述符 (FD) 的 select 系统调用 (syscall) 直接从磁盘驱动器读取。但是,select syscall 对其可以打开的 FD 数量有严格的限制。

讨论 (日志): Gregory Maxwell 提出并介绍了主题:“最近有用户报告在他们的 x86_64 Linux 主机上遇到了 select 限制。使用 lsof [列出打开的文件] 检查显示,在预期主要使用 mmap 的节点上,leveldb 正在使用大量 FD。显然,leveldb 对 mmap 数量有限制。据我所知,我们没有理由不增加它。另外,我们应该切换到使用 poll,但除非有人知道不这么做的原因,否则增加 mmap 限制应该是一行代码的修改。”

讨论了 mmap 限制,并且没有参与者知道不增加它的理由。就在会议结束之后,Suhas Daftuar 发现了 一个关于 leveldb 的问题,这可能表明最初的限制为何设置在那里,这似乎支持在 x86_64 系统上增加该限制。

在 leveldb 讨论中穿插着关于将比特币核心从旧的 select syscall 切换到新的 poll syscall 以打开文件描述符 (FD) 的主题,这不仅包括数据文件,还包括网络端口。此低级更改将消除 select 只能处理少量 FD 的最大数量的问题,因此比特币核心在各种方面受到限制(例如,即使您增加了默认的最大连接数,它也无法处理更多连接)。此更改的一个问题是 Windows 没有实现等效的 poll syscall,因此需要编写一些兼容性代码。

结论:从讨论中可以看出,LevelDB mmap 限制很可能从目前的 1000 增加到 0.17 版本比特币核心发布时的约 4000。似乎不太可能将 select 更改为 poll 以用于该版本,因为没有足够的时间进行测试,但没有人反对将其更改为后续计划的主要版本(暂定为 0.18)中的版本。

注意:会议结束后大约 20 分钟,对该主题的讨论仍在继续。

幽默

背景:最近 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 李俊宽
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

免责声明

本总结是在未征求任何讨论参与者意见的情况下编写的,因此任何错误都是总结作者的责任,而不是讨论参与者的责任。特别是,从讨论中摘录的引语对其大小写、标点符号和拼写进行了修改,以生成一致的句子。作者添加了方括号中的单词和片段,以及背景叙述和阐述,并且可能意外地改变了一些句子的含义。如果您认为任何引语脱离了上下文,请 提交问题,我们会更正错误。