Hyperledger Fabric 2.5 中文文档行级输出缓冲可能导致程序无理由地挂起或冻结,比如输出没有后继行的文 本、等待用户输入及确认。 新版本的 Fabric 基于字节缓冲输入和输出,这样就可以支持输入提示。同时还 方便了和利用了 “curses” 库的复杂程序或者会重新绘制屏幕的程序(比如 top)集成。 交叉输出流 不幸的是,(像很多其它程序那样)同时打印 stderr 和 stdout 将会导致每次只 能输出两者的一个字节,最终的结果互相交叉,混乱地混合在一起。这时如果0 码力 | 138 页 | 154.00 KB | 1 年前3
Hyperledger Fabric 1.4 中文文档行级输出缓冲可能导致程序无理由地挂起或冻结,比如输出没有后继行的文 本、等待用户输入及确认。 新版本的 Fabric 基于字节缓冲输入和输出,这样就可以支持输入提示。同时还 方便了和利用了 “curses” 库的复杂程序或者会重新绘制屏幕的程序(比如 top)集成。 交叉输出流 不幸的是,(像很多其它程序那样)同时打印 stderr 和 stdout 将会导致每次只 能输出两者的一个字节,最终的结果互相交叉,混乱地混合在一起。这时如果0 码力 | 145 页 | 161.53 KB | 1 年前3
FISCO BCOS 2.9.0 中文文档申请/释放的函数的调用堆栈: perf record -e probe_libc:malloc -F 1000 -p ` pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: perf script > memory.perf ./stackcollapse-perf.pl memory.perf > memory.folded ./flamegraph.pl 预分配的特性,我们猜想第一次 执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: export MALLOC_ARENA_MAX=1 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第一次执行区块的耗时 和sysmalloc调用次数,基本无异于之后执行的区块。据此,我们基本可以断定这种有趣的现象是由 于malloc的内存预分配行为导致。 写的Python脚本将日志以区块为单位 进行分割,随后读取每个区块在执行时产生的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到 一张大的Excel表格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变化图,如 下图所示: 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了不同模块的性能变化。 从图中可以看出,只有由红色曲线代表的区块落盘模块的执行耗时明显地随着数据库中数据量的增0 码力 | 1489 页 | 107.09 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档存 申请/释放的函数的调用堆栈: perf record -e probe_libc:malloc -F 1000 -p `pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: perf script > memory.perf ./stackcollapse-perf.pl memory.perf > memory.folded ./flamegraph.pl 预分配的特性,我们猜想第一次 执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: export MALLOC_ARENA_MAX=1 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第一次执行区块的耗时 和sysmalloc调用次数,基本无异于之后执行的区块。据此,我们基本可以断定这种有趣的现象是由 于malloc的内存预分配行为导致。 写的Python脚本将日志以区块为单位 进行分割,随后读取每个区块在执行时产生的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到 一张大的Excel表格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变化图,如 下图所示: 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了不同模块的性能变化。 从图中可以看出,只有由红色曲线代表的区块落盘模块的执行耗时明显地随着数据库中数据量的增0 码力 | 1422 页 | 91.91 MB | 1 年前3
FISCO BCOS 3.6.0 中文文档申请/释放的函数的调用堆栈: perf record -e probe_libc:malloc -F 1000 -p ` pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: perf script > memory.perf ./stackcollapse-perf.pl memory.perf > memory.folded ./flamegraph.pl 预分配的特性,我们猜想第一次 执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: export MALLOC_ARENA_MAX=1 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第一次执行区块的耗时 和sysmalloc调用次数,基本无异于之后执行的区块。据此,我们基本可以断定这种有趣的现象是由 于malloc的内存预分配行为导致。 写的Python脚本将日志以区块为单位 进行分割,随后读取每个区块在执行时产生的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到 一张大的Excel表格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变化图,如 下图所示: 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了不同模块的性能变化。 从图中可以看出,只有由红色曲线代表的区块落盘模块的执行耗时明显地随着数据库中数据量的增0 码力 | 1489 页 | 107.09 MB | 1 年前3
FISCO BCOS 2.9.0 中文文档申请/释放的函数的调用堆栈: perf record -e probe_libc:malloc -F 1000 -p ` pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: perf script > memory.perf ./stackcollapse-perf.pl memory.perf > memory.folded ./flamegraph.pl 预分配的特性,我们猜想第一次 执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: export MALLOC_ARENA_MAX=1 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第一次执行区块的耗时 和sysmalloc调用次数,基本无异于之后执行的区块。据此,我们基本可以断定这种有趣的现象是由 于malloc的内存预分配行为导致。 写的Python脚本将日志以区块为单位 进行分割,随后读取每个区块在执行时产生的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到 一张大的Excel表格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变化图,如 下图所示: 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了不同模块的性能变化。 从图中可以看出,只有由红色曲线代表的区块落盘模块的执行耗时明显地随着数据库中数据量的增0 码力 | 1489 页 | 107.09 MB | 1 年前3
FISCO BCOS 2-dev 中文文档存 申请/释放的函数的调用堆栈: perf record -e probe_libc:malloc -F 1000 -p `pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: perf script > memory.perf ./stackcollapse-perf.pl memory.perf > memory.folded ./flamegraph.pl 预分配的特性,我们猜想第一次 执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: export MALLOC_ARENA_MAX=1 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第一次执行区块的耗时 和sysmalloc调用次数,基本无异于之后执行的区块。据此,我们基本可以断定这种有趣的现象是由 于malloc的内存预分配行为导致。 写的Python脚本将日志以区块为单位 进行分割,随后读取每个区块在执行时产生的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到 一张大的Excel表格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变化图,如 下图所示: 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了不同模块的性能变化。 从图中可以看出,只有由红色曲线代表的区块落盘模块的执行耗时明显地随着数据库中数据量的增0 码力 | 1324 页 | 85.58 MB | 1 年前3
FISCO BCOS 2.9.0 中文文档mple-bt-off-cpu perf record -e probe_libc:malloc -F 1000 -p `pidof fisco-bcos` -g -- sleep 60 然后绘制内存火焰图: 得到的火焰图如下图所示: ../../../../_images/IMG_5246.JPG 我们起初猜想,这块未知的缓存可能位于LevelDB的数据库连接模块或JSON 解码模块 调用sysmalloc的次数异常之高。联想到malloc会在首次被调用时进行内存预 分配的特性,我们猜想第一次执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第 一次执行区块的耗时和sysmalloc调用次数,基本无异于之后执行的区块。据 此,我们基本可以断定这种有趣的现象是由于malloc的内存预分配行为导 的 Python脚本将日志以区块为单位进行分割,随后读取每个区块在执行时产生 的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到一张大的Excel表 格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变 化图,如下图所示: ../../../../_images/IMG_5247.JPG 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了 不同模块的性能变化。0 码力 | 2649 页 | 201.08 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档offcpu.svg https://gitee.com/mirrors/openresty-systemtap- toolkit/raw/master/sample-bt-off-cpu 然后绘制内存火焰图: 得到的火焰图如下图所示: ../../../../_images/IMG_5246.JPG 我们起初猜想,这块未知的缓存可能位于LevelDB的数据库连接模块或JSON 解码模块 调用sysmalloc的次数异常之高。联想到malloc会在首次被调用时进行内存预 分配的特性,我们猜想第一次执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第 一次执行区块的耗时和sysmalloc调用次数,基本无异于之后执行的区块。据 此,我们基本可以断定这种有趣的现象是由于malloc的内存预分配行为导 的 Python脚本将日志以区块为单位进行分割,随后读取每个区块在执行时产生 的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到一张大的Excel表 格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变 化图,如下图所示: ../../../../_images/IMG_5247.JPG 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了 不同模块的性能变化。0 码力 | 2520 页 | 211.87 MB | 1 年前3
FISCO BCOS 2.8.0 中文文档offcpu.svg https://gitee.com/mirrors/openresty-systemtap- toolkit/raw/master/sample-bt-off-cpu 然后绘制内存火焰图: 得到的火焰图如下图所示: ../../../../_images/IMG_5246.JPG 我们起初猜想,这块未知的缓存可能位于LevelDB的数据库连接模块或JSON 解码模块 调用sysmalloc的次数异常之高。联想到malloc会在首次被调用时进行内存预 分配的特性,我们猜想第一次执行区块耗时较多可能就是由此造成的。 为验证猜想,我们将malloc的预分配空间上限调低: 然后再次进行测试并绘制Off-CPU火焰图,发现虽然性能有所降低,但是第 一次执行区块的耗时和sysmalloc调用次数,基本无异于之后执行的区块。据 此,我们基本可以断定这种有趣的现象是由于malloc的内存预分配行为导 的 Python脚本将日志以区块为单位进行分割,随后读取每个区块在执行时产生 的桩点日志,并解析出各个阶段的耗时,然后由脚本汇总到一张大的Excel表 格中,最后再直接利用Excel自带的图表功能,绘制出所有模块的性能趋势变 化图,如下图所示: ../../../../_images/IMG_5247.JPG 其中,横坐标为区块高度,纵坐标为执行耗时(ms),不同颜色曲线代表了 不同模块的性能变化。0 码力 | 2534 页 | 212.43 MB | 1 年前3
共 23 条
- 1
- 2
- 3













