在我工作的地方,我们有许多“大铁”服务器,用于使用Xen Hypervisor托pipe许多虚拟机。 这些通常configuration32GB内存,双四核处理器和具有I / O容量的快速磁盘。
现在我们正处于现有硬件configuration日益枯竭的时候,现在是时候出去,寻找更大,更快,更新的硬件。
如上所述,现有的套件已经部署了32GB内存,并有效地限制了我们可以部署到主机的虚拟机数量。
然而,在调查新硬件时,显然你可以在单个机箱内使用64,72甚至96GB的单个机器获得更多的RAM。 显然,这将使我们能够获得更多的机器给一个给定的主机,这总是一个胜利。 到目前为止完成的分析表明,限制因素现在将转移到磁盘子系统。
现在的问题是试图弄清楚我们所处的位置。根据使用情况,我们知道我们不限制I / O带宽,更重要的是随机数I / O操作,可以完成..我们知道,一旦我们打到这一点,然后艾奥瓦特将上空火箭,整个机器的性能将去的狗。
现在,这是我所问的问题的症结所在,是否有人知道如何准确跟踪/趋势现有的I / O性能,特别是随机I / O操作数量的完成?
我真正想要得到一个指标是“这个configuration可以成功地处理X个随机I / O请求,而且我们目前(平均)正在执行Y操作,带有Z操作的峰值”。
提前致谢!
sar在这里做得很好, 它将收集交易数量以及每秒读写的扇区数量,这些数据可用于以相对较好的准确度(在读/写比率以及交易大小方面,即确定你的IO是如何“随机”的因素)。 这不是完美的,但根据我的经验,做一个足够好的工作来做你正在看的那种估计。
所以,这看起来像是一个监控和容量报告问题。 如果你要开始衡量趋势统计数据,那么我会全盘考虑,以便比较,关联等。
就工具而言,在开源世界中有神经节,zenoss,nagios等,还有许多其他的供应商产品。
您可以将其configuration为跟踪,衡量和存储您感兴趣的KPI,然后定期报告。
考虑到内存使用的问题,包括内存统计数据,交换使用情况和CPU也是有意义的,所以你可以在同一时间段内对它们进行比较,看看哪些是有限的,等等。
一旦你捕捉到数据,你可以将它们全部存储在一个漂亮的大数据库中进行报告,可能会让人惊叹的历史数据,例如。 存储每5秒的指标6个月,然后分钟,然后5,然后每小时,当你走得更远。 这样的事情可以通过cron,autosys等脚本和运行。
这些报告会给你什么pipe理要的 – 即。 有漂亮的图表的东西。
而对于日常pipe理,您可以通过控制台查看图表/数字上的实时信息,以查看您在任何特定时刻的performance。
我们使用collectl,因为我们可以将所有必要的信息放入单个文件中,并根据需要重播统计信息。 这将让您看到每个logging间隔的IOPS数量,上下文切换,内存统计信息。 您可以按照每个磁盘分解这个数据,或者只是对系统进行全面的了解。 Collectl也支持光泽。
这是了解整个系统性能的好工具。 祝你好运,从观察SATA磁盘通常顶部出200-300 IOPS时做随机访问。
我们用与所有其他度量标准相同的方式logging和绘制磁盘I / O:
数据从使用SNMP的主机中获取。 我们的NAS / SAN盒本身就是这样做的。 我们在所有Linux主机上使用net-snmp ,这些主机从USB-DISKIO-MIB提供这些信息。
数据以RRD格式存储,并使用Cacti进行绘图 。 某些磁盘IO模板为我们提供了一个事务计数和大小,以通常的当前,平均和峰值格式显示。
这些指标不一定像在主机上使用iostat / dstat / sar一样有限。 但它是火和忘记,当新的机器被debugging时,它自动设置,集中存储,并保持供将来参考。
我们利用这些数据在运营基础上提醒我们发生exception的趋势,并在执行容量规划时总是回头看看。
我真正试图得到一个指标是“这个configuration可以成功处理X个随机I / O请求[..]”。
这有几个问题:
从顺序I / O中分离和量化随机I / O是相当困难的。 由于两者之间的根本区别在于存储在磁盘上的块的物理位置。 您可以根据交易规模进行有根据的猜测,因为许多小型交易可能与点缀在磁盘上的小文件有关。 但是没有保证。 它可能是从单个文件或磁盘上的相邻块顺序读取less量数据。
logging这些指标可以让你很好地了解你今天的承诺,他们如何随着时间的推移而变化,以及未来如何改变。 它不会告诉你的是天花板是什么。 至less不要太晚。 要确定这一点,你需要做一些math(从你的硬件规格),基准(我喜欢bonnie++自己),并有一些后勤的想法,这些domUs正在做/正在使用。
根据您的存储后端(IBM SVC / DS8000),您可以直接从中获取有关随机IOPS的统计信息。
为了从服务器上获取统计信息,可以使用nmon 。 它是免费的(如啤酒)。 最初由IBM为AIX开发,也运行在Linux上。
如果人们使用特区我至less希望你几秒钟抽样你的数据。 当我使用collectl我采样一次/秒。 至于衡量你在随机I / O方面的performance如何,使用像Robin Miller的dt(google it)这样的工具,你可以很容易地生成很多随机I / O,然后用collectl来衡量,看看你有多less可以做到每秒。 一个典型的磁盘通常最多有200-300个I / O /秒,基于旋转延迟。 块的大小影响很小,因为等待磁盘在正确的位置摆动1/2转。
顺便说一句 – 艾奥瓦特是最被误解的测量之一。 它没有任何与CPU负载,这只是意味着CPU没有做任何事情,而I / O发生。 事实上,如果你在百分百爱荷华州,这意味着你大约100%空闲!
-标记