2017-06-08 IRC 会议摘要

概述


主要议题

  • 优化:减少区块哈希计算次数
  • 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 将链状态数据库及其缓存从每个交易模型切换到每个交易输出模型,需要对数据库进行升级,这在性能良好的硬件上可能需要几分钟,或者在其他地方可能需要更长时间。Sipa 认为,这需要一些 GUI 交互,让用户清楚地了解正在发生的事情。

评论

Jonasschnelli 建议使用 uiInterface.Progress,但是这不能中断进程。用户可能希望将升级过程推迟到另一个时间。

Luke-jr 怀疑,如果崩溃、运行旧版本,然后再次运行新版本,会发生什么。Gmaxwell 认为,旧版本会提示数据库损坏并停止,但他没有测试过。他确实认为应该处理这种情况。

返回旧版本需要重新索引,而修剪过的节点无法做到这一点。发布说明中应该有明确的警告。

Sipa 指出,可以进行一个微不足道的更改,以确保旧版本将其视为一个空数据库。一种方法是创建一个新的数据库,但这在升级期间需要双倍的磁盘存储空间。微不足道的方法是将最佳区块哈希记录设置为无效值。

结论

  • Jonasschnelli 将致力于记录过程,类似于 VerifyDB。
  • 监控升级过程中的磁盘使用情况并进行更多测试。根据这些结果继续讨论。

crc32 leveldb 1.20

背景

最新版本的 levelDB 为英特尔实现了硬件加速的 crc32,用于计算校验和。

评论

Sipa 非常不喜欢 levelDB 开发人员使用的方法,这需要使用不同的标志编译单独的对象,并且他们调用新的对象,而不知道 CPU 是否支持它。Wumpus 和 Gmaxwell 指出,使用特殊标志编译单独的对象是标准的正确做法,但是调用它而不确定 CPU 是否支持它是不正确的。

Jtimon 建议在 levelDB github 上创建一个问题。Gmaxwell 认为,最好直接提交修复,因为创建问题并不能提供太多帮助。

Cfields 后来加入了会议,他准备了一个 修复

结论

  • 修复 levelDB

高优先级审查

  • Sipa 希望添加 #10148(使用非原子刷新进行块重放),这将使有效的可用 dbcache 翻倍。
  • Luke-jr 已经重新整理了 multiwallet
  • 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 昵称 姓名/网名
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

免责声明

本摘要是在没有讨论参与者任何输入的情况下编写的,因此任何错误都是摘要作者的责任,而不是讨论参与者的责任。