2.10 可视化
可视化用看得见的方式来对数据做检查。这让我们能够识别规律并对规律做匹配。这是一种有效的方法,可确定不同指标源之间的相关性,这点难以用编程实现,但是用视觉的方法来做却很简单。
2.10.1 线图
线图是一类常见的基本的数据可视化方法。通常用于检查一段时间的性能指标,X 轴上标记显示的是时间。
图2.26 就是一例,显示的是20 秒内的磁盘I/O 延时的平均值。这是在云生产环境运行MySQL 数据库的服务器上测量得到的,此处的磁盘I/O 延时怀疑是导致查询缓慢的原因。
图2.26 平均延时的线图
该线图显示的读取延时相对一致,都是在4ms 左右,这个延时比对这些磁盘的预计值要高。
可以画多条线,在同一条X 轴上显示相关的数据。每一块磁盘都可以单独画一条线,看看它们的性能是否相似。
统计的值也可以画在上面,以提供更多的数据分布信息。图2.7 是同一时间段内的磁盘I/O情况,不过多了按每秒统计出的中位数、标准方差和百分位数的线。注意现在的Y 轴值区间比之前的线图要大得多(8 倍)。
这就揭示了平均值比预期要大的原因:分布中含有高的延时I/O。尤其是,如第99 百分位数线所示,1%的I/O 超过了20ms,中位数线也显示了所期望的I/O 延时,在1ms 左右。
图2.27 中位数、平均值、标准方差、百分位数
2.10.2 散点图
图2.28 展示的是同一时间段内的磁盘I/O 散点图,能看到所有的数据。每一次磁盘I/O 都按照对应X 轴的完成时间和Y 轴的延时值标记为一个点。
图2.28 散点图
现在,延时的平均值要高于预期的原因就一目了然了:有许多磁盘I/O的延时是10ms、20ms,甚至超过了50ms。散点图显示了所有的数据,揭示了这些异常值的存在。
绝大多数I/O 都是毫秒级别的,接近X 轴。这里散点图的解析度就有问题了,点和点重叠在一起难以分辨。数据越多问题就变得越糟:想象一下为云计算绘图的情景,会有成千上万的数据点画在散点图上。还有就是对这些点都要做收集和处理:对应每一次I/O 的X 轴和Y 轴坐标。
2.10.3 热图
热图通过把X 和Y 轴的区域分组量化,能够解决散点图的扩展问题,所分成的组称为“桶”。这些“桶”是涂色的,颜色是依据落在X 和Y 轴区域内的事件数目而定的。这样量化既解决了散点图可视化密度上的限制,又使得热图不管显示的是单个系统还是成千上万个系统,都可以用一样的方法。热图还能用来分析延时、使用率,以及其他指标[Gregg 10a]。
与之前同样的数据集用热图来显示,如图2.29 所示。
高延时的异常值位于热图高处的块内,因为淡色表示I/O 较少(通常只有单个I/O)。大量数据包含的规律开始呈现,这是散点图无法看到的。
完整版的秒级别的磁盘I/O 跟踪统计数据(并非之前那个)展示在图2.30 的热图中。
虽然时间范围扩展到了原来的九倍,热图依然具有可读性。在大部分范围内可以看的出双模态的分布,一部分的I/O 返回近乎零延时(磁盘缓存命中),其他的是略小于1ms 的延时(磁盘缓存失效)。
图2.29 热图
图2.30 热图:完整版
热图的一个问题是它并不像线图那么直观,因此,用户需要对其有一定的了解才能有效地使用它们。
在本书后面部分还会有其他各种热图的例子。
2.10.4 表面图
表面图是一种三维的表示,呈现的是一个三维的平面。当三维值从一个点到另一个点不会频繁剧烈变动的时候,表面图效果最好,表面会有起伏的山丘。表面图的效果常常像是一个线框模型。
图2.31 展示的是一个线框状的CPU 使用率的表面图。这是一个60s 时长的CPU 每秒使用率值,来自于许许多多的服务器(这是一个数据中心300 台物理服务器和5312 颗CPU 图的局部)。
每一台服务器都是由16 颗CPU 作为行在表面图上表示的,60 秒的每秒使用率的测量值作为列,表面的高度就是使用率的值。也可以用颜色来反映使用率的值。如果需要的话,色度和饱和度也能被用上,为可视化增加第四和第五维度的数据值。(如果有足够的分辨率,还有办法显示第六个维度)。
图2.31 线框形的表面图:数据中心CPU 使用率
这些16×60 的服务器矩形,在表面映射为一个棋盘。即使没有标记,一些服务器的矩形也能在图像上识别出来。右侧的一块凸起的高地显示这些CPU 几乎都处于100%使用率的状态。
用网格线强调了高度的细微变化。可以看到一些淡淡的线,表示单个CPU 恒定地处于低使用率的状态(很小的百分比)。
2.10.5 可视化工具
由于图形支持有限,UNIX 的性能分析过去总是着重于使用基于文本的工具。这类工具可以用一个登录会话很快执行并且实时汇报数据。过去的可视化很耗时,而且通常需要一个跟踪-汇报的周期。当处理紧急的性能问题时,你能得到性能指标的速度会变得很关键。
现代的可视化工具可以通过浏览器和移动设备实时地展现系统的性能。有许多产品能做到这一点,还有很多产品能够监视你的整个云环境,如Joyent 公司的云分析、基于DTrace 的云分析工具,这些产品都提供了包括延时热图的实时可视化功能。