程序员神器:Netflix 发布开源可视化工具 FlameScope

2018年4月28日 | By News | Filed in: News.

https://ift.tt/2Hyh9LJ

编者按:FlameScope 是 Netflix 开源的一款性能可视化工具,用于分析方差,扰动,单线程执行,应用程序启动以及其他基于时间的问题,将大大简化操作流程,使工作量更为直观。本文译自 MEDIUM 中原标题为 "Netflix FlameScope" 的文章。

FlameScope 是以火焰图的形式来进行可视化,它首先将输入的数据显示为交互式亚秒偏移热图,然后根据时间范围选择来着重显示不同的图案,并且会为该时间范围生成火焰图。换句话说,你可以选择一个任意连续的时间切片捕获的配置文件,并将其视为火焰图形。

亚秒偏离热图

火焰图会一次性显示整个配置文件,时长为一分钟。这对于分析稳定的工作量是十分便捷的,但通常在显示的一分钟内会有一些小的扰动,若要在其中抓住这些细微的变化无异于是大海捞针。而 Flame Scope 则通过从亚秒偏移热图来进行可视化,轻而易举地解决了这些由微小扰动带来的问题,之后用户可以再继续选择用火焰图进行学习。换句话说,用户借此可以选择一个任意连续的时间切片进行配置文件的选取,并将其可视化为火焰图。

亚秒偏移热图的工作原理如图所示,它有一个模拟十行热图,其中 x 轴表示时间,每个单位代表一秒钟。y 轴也是时间变量,表示次秒级的偏移量。其中颜色的变化代表在该时间范围内样本的多少,颜色越深越密集。

例如,一个11.25秒的事件时间戳,其 x坐标将为第11列,而 y 坐标将距离底部四分之一处。在11.25秒左右发生的事件越多,该部分的颜色将越暗沉。

选取范围示例

如下为选取范围示例。

此 CPU 配置文件中有诸多内容,CPU 在0到5秒之间较为繁忙,呈现为较暗的颜色,在34和94秒的周围(类似60秒周期性任务)也较为繁忙,但持续时间较短。其中大约80毫秒内偶尔会出现大量活动的爆发,其均呈现出较短的深红色条纹。

所有这些细节都可以在 FlameScope 中选择,然后将该范围绘制为火焰图,下图就是一个简短的红色条纹选择图。

截图

FlameScope 可以读取 Linux perf 配置文件,我整理了一些之前调查中收集的情况,其中也显示了一些我不知道的变化。

当然并非所有配置文件都很有趣。有些看起来像静态电视,具有随机请求的稳定工作量及延迟量。

创始 

FlameScope 由 Netflix 云性能团队创建,迄今为止主要创始人为 Vadim Filanovsky,我,Martin Spier 和我们的经理Ed Hunter,他一直支持该项目。该项目最初的问题是微服务故障,每隔15分钟左右就会出现延迟尖峰,且原因不明。 Vadim 发现这伴随着 CPU 利用率的增长,且只持续了几秒钟。他曾尝试收集 CPU 火焰图表以进一步解释这一点,但却无法可靠地捕捉到一分钟的火焰图来解释该问题,因为它的运行持续波动着;同时,捕捉两三分钟的火焰图也没有帮助,并且这个问题在正常的工作量配置文件中被"淹没"了,于是他向我求助。

由于我有两分钟的文件,我将它切成10秒的范围,并为每个范围创建一个火焰图。这种方法看起来很有作用,因为它揭示了其中的变化,于是我把它们进一步切割到了一秒钟的窗口。浏览这些短窗口来发现并解决问题其实是一项艰巨的任务,所以我想要一个更快的方法。由于亚秒偏移热图是我多年前发明的工具,但迄今为止还没有太多的应用。所以我突然意识到这也许是浏览配置文件的好方法,可以让变化不仅在整秒内可视化,而且可以在一秒钟内显示分数。

我马上做了一个快速的模型来证明这个想法的有效性,并与 Martin 一起讨论将其变成一个真正的工具。这篇文章中带注释的热图显示了 Vadim 的原始配置文件,主要问题聚焦于 CPU 在前几秒的活动。Martin 为 FlameScope 完成了大部分体系结构设计和编码工作,其中包括他最新版本的FlameGraphs:d3-flame-graph 和基于 d3 的热图:d3-heatmap2。

未来工作

我们计划应用更多的功能,并且我们会向 github 发布门票来方便任何愿意提供帮助的人。未来该项目将会涵盖更多的交互功能,如调色板的选择和数据转换,也会有一个按钮来将最终的火焰图保存为独立的 SVG,来支持其他配置文件源的使用,而不仅仅是 Linux perf。同时我们也在致力于寻找一种方法来显示所选范围和基线(整个配置文件)之间的差异。

原文链接:https://ift.tt/2GXOkLB

IT.数码

via 36氪 http://36kr.com

April 28, 2018 at 04:04PM


发表评论

电子邮件地址不会被公开。 必填项已用*标注