我工作的地方有众多“大型”服务器,用于使用 Xen Hypervisor 托管许多虚拟机。这些服务器通常配置有 32GB RAM、双四核处理器和具有大量 I/O 容量的快速磁盘。
我们正处于这样一个时刻:现有的硬件配置已经有点过时了,是时候出去寻找更大、更快、更炫的新硬件了。
如上所述,现有套件已部署 32GB RAM,这实际上限制了我们可以部署到主机的虚拟机数量。
然而,在研究较新的硬件时,很明显,您可以在一台机器中获得更多 RAM,单个机箱内有 64、72 甚至 96GB。显然,这将使我们能够将更多机器连接到给定主机,这始终是有利的。到目前为止完成的分析表明,限制因素现在将转移到磁盘子系统。
现在的问题是,试图了解我们所处的位置...通过使用情况,我们知道我们在 I/O 带宽方面不受限制,更重要的是,可以完成的随机 I/O 操作的数量..我们从传闻中知道,一旦我们达到这一点,iowait 就会飞涨,整个机器的性能就会变得一团糟。
现在,这是我要问的问题的关键,是否有人知道准确跟踪/趋势现有 I/O 性能的方法,特别是与正在完成的随机 I/O 操作的数量相关的方法?
我真正想要获得的指标是“此配置可以成功处理 X 个随机 I/O 请求,并且我们目前(平均)正在执行 Y 个操作,峰值为 Z 个操作”。
提前致谢!
答案1
sar
在这里,它很好地完成了这项工作;它将收集每秒读取/写入的事务数以及扇区数,然后可以使用这些数据以相对不错的精度重放您的 IO 工作负载(就读取/写入比率以及事务大小而言,这是决定您的 IO 有多“随机”的因素)。它并不完美,但根据我的经验,它足以完成您正在查看的那种估计。
答案2
所以,这看起来像是一个监控和容量报告问题。如果你要开始测量趋势统计数据,我会全面进行,这样你就可以进行比较、关联等。
就工具而言,开源世界中有 ganglia、zenoss、nagios 等,以及许多其他供应商的产品。
您可以对其进行配置以跟踪、测量和存储您感兴趣的 KPI,然后定期报告它们。
考虑到您对 RAM 使用情况的查询,将内存统计信息、交换使用情况和 CPU 也包括在内是有意义的,这样您就可以在同一时间段内全面比较它们,并查看哪些受到限制等。
一旦捕获了数据,您就可以将其全部存储在一个大型数据库中以供报告,可能还会保留历史数据,例如,存储每 5 秒的指标,持续 6 个月,然后按分钟存储,然后按 5 分钟存储,然后按小时存储,直到更远。这类事情可以编写脚本并通过 cron、autosys 等运行。
这些报告将为您提供管理层想要的信息 - 即带有漂亮图表的内容。
对于日常管理,您可以通过控制台查看图表/数字上的实时信息,了解您在任何特定时刻的表现。
答案3
我们用收集因为我们可以将所有必要的信息拉到一个文件中,并在需要时重播统计数据。这样您就可以看到每个记录间隔的 IOPS 数量、上下文切换、内存统计数据。您可以按磁盘细分,也可以只查看系统的整体情况。Collectl 还支持 lustre。
这是了解整个系统性能的绝佳工具。祝你好运,根据观察,SATA 磁盘在进行随机访问时通常最高可达 200-300 IOPS。
答案4
根据您的存储后端(IBM SVC/DS8000),您可能能够直接从中提取与随机 IOPS 相关的统计信息。
要从服务器提取统计信息,你可以使用纳米。它是免费的(就像啤酒一样)。最初由 IBM 为 AIX 开发,也可以在 Linux 上运行。