准确趋势化随机I / O性能以进行容量规划


11

在我工作的地方,我们有许多“大型”服务器,这些服务器用于使用Xen Hypervisor托管许多虚拟机。它们通常配置有32GB RAM,双Quad核心进程和具有I / O容量的快速磁盘。

我们正处于一个时机上,现有的硬件配置已经步入正轨,现在该是时候外出采购更大,更快,更漂亮的新硬件了。

如上所述,现有工具包已部署了32GB RAM,这实际上限制了我们可以部署到主机的VM数量。

但是,在研究较新的硬件时,很明显,您可以在一台计算机上获得越来越多的RAM,而在单个机箱中可以获得64、72甚至96GB的内存。显然,这将使我们能够将更多计算机添加到给定主机,这始终是一个胜利。到目前为止完成的分析表明,限制因素现在将转移到磁盘子系统。

现在的问题是,试图了解我们的位置...通过这种用法,我们知道我们不受I / O带宽的限制,更不用说随机I的数量了。可以完成的/ O操作。.我们有一个轶事,那就是一旦达到这一点,iowait就将飞上蓝天,整个机器的性能将受到影响。

现在,这是我要问的问题的症结所在,有人知道一种方法来准确地跟踪/趋势现有I / O性能,特别是与完成的随机I / O操作数有关吗?

我真正想获取的指标是“此配置可以成功处理X个随机I / O请求,并且我们目前(平均)正在以Y个操作的峰值执行Y个操作”。

提前致谢!

Answers:


5

sar在这里做得很好;它会收集事务数量以及每秒读取/写入的扇区,可用于随后以相对不错的准确性(就读/写比率以及事务大小而言)重播IO工作负载。确定您的IO有多“随机”的因素。它并不完美,但以我的经验来看,它可以很好地完成您要查看的估算。


2

因此,这看起来像一个监视和容量报告问题。如果您要开始衡量趋势统计信息,我会全面介绍,以便您可以进行比较,关联等。

在工具方面,您在开源世界中拥有ganglia,zenoss,nagios等,以及众多其他供应商产品。

您可以将它们配置为跟踪,度量和存储您感兴趣的KPI,然后定期对其进行报告。

考虑到您对RAM使用情况的查询,还应该包括内存统计信息,交换使用情况和CPU,因此您可以在同一时间段内对它们进行全面比较,以查看哪些是受限制的,等等。

一旦捕获了数据,就可以将其全部存储在一个不错的大数据库中以进行报告,例如,可以稀有历史数据。每5秒度量标准存储6个月,然后按分钟存储,然后按5分存储,然后按小时存储,然后再返回。这类事情可以编写脚本并通过cron,autosys等运行。

这些报告将为您提供管理层想要的-即。带有漂亮图形的东西。

对于日常管理,您可以通过控制台查看图表上的实时信息,以查看您在任何给定时刻的表现。


感谢您的答复。我发现的最大麻烦实际上是准确跟踪操作数。也就是说,一切我已经遇到报告上的数据量被移动,或IOWAIT等等等等,这不挺似乎这里适合该法案..
凯瑞霍洛威

2

我们使用collectl,因为我们可以将所有必要的信息提取到单个文件中,并根据需要重播统计信息。这将使您看到每个记录间隔的IOPS数量,上下文切换和内存统计信息。您可以按磁盘分类,也可以仅对系统进行整体了解。Collectl还支持lustre。

这是一个很好的工具,可以概述整个系统的性能。观察到好运,SATA磁盘在进行随机访问时通常达到200-300 IOPS。


任何人都对15K RPM SAS驱动器有丰富的经验?
凯兰·霍洛威

2

我们以与执行其他所有指标相同的方式记录和绘制磁盘I / O图表:

  • 使用SNMP从主机提取数据。我们的NAS / SAN盒本身就是这样做的。我们在所有Linux主机上使用net-snmp,它从USB-DISKIO-MIB提供此信息。

  • 数据被存储(以RRD格式)并使用Cacti图形化。一些磁盘IO模板为我们提供了事务计数和大小,以通常的电流,平均值和峰值格式显示。

这些指标不一定像在主机上使用iostat/ dstat/ 那样有限sar。但这是一劳永逸的事情,当一台新机器投入使用时,它会自动进行设置,集中存储并可供以后参考。

我们使用这些数据在运营上向我们发出异常趋势的警报,并在执行容量计划时始终回头查看。

我真正想获得的指标是“此配置可以成功处理X个随机I / O请求[..]”。

这有两个问题:

  • 从顺序I / O分离和量化随机I / O相当困难。由于两者之间的根本区别在于存储在磁盘盘片上的块的物理位置。您可以根据事务的大小做出有根据的猜测,因为许多小事务可能与磁盘上散布的小文件有关。但是并不能保证。它可能正在从单个文件或磁盘上的相邻块顺序读取少量数据。

  • 记录指标可以让您很好地了解您今天的承诺,它们随着时间的变化以及未来的变化。它不会告诉你什么是天花板。至少在为时已晚之前。为了确定这一点,您需要做一些数学运算(根据您的硬件规格),进行基准测试(我很喜欢bonnie++我自己),并且对这些domU的用途/用途有一些逻辑上的想法是有帮助的。


1

根据您的存储后端(IBM SVC / DS8000),您也许可以直接从中提取与随机IOPS有关的统计信息。

要从服务器提取统计信息,可以使用nmon。它是免费的(例如在啤酒中)。最初由IBM为AIX开发,也可以在Linux上运行。


所有存储都直接连接,在debian主机上运行。FOSS一切都很好。
凯兰·霍洛威

1

如果人们使用SAR,我至少希望您每隔几秒钟就对数据进行一次采样。当我使用collectl时,我每秒采样一次。至于衡量您在随机I / O方面的表现如何,请使用Robin Miller的dt(google it)之类的工具,您可以轻松地生成很多随机I / O,然后仅用collectl进行测量即可查看有多少I / O每秒可以做。一个典型的磁盘通常最多可以执行200-300 I / O /秒的速度,这很大程度上取决于旋转延迟。块大小的影响最小,因为等待磁盘1/2圈才能将其放置在正确的位置,使其他所有内容都不堪重负。

顺便说一句-iowait是最被误解的度量之一。它与cpu负载无关,仅表示在发生I / O时cpu没有执行任何其他操作。实际上,如果您处于100%的iowait状态,这实际上意味着您大约100%处于空闲状态!

-标记

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.