转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese
如何估算资源利用率:
如何确定自己环境所需的资源利用率?每一个组织的环境都是唯一的,不同公司的用例极有可能是不同的。除了特定虚拟机资源需求,ESXi所安装的主机也有所区别,可用物理资源同样会影响到整合率(一台主机上所配置的虚拟机数量)。例如,假设你想要虚拟化为10台服务器,每一台需要4 GB RAM,在一台48 GB内存的主机上可能很容易实现这10台虚拟机;但如果主机只有16 GB内存,也许就需要两到三台主机才能满足所需性能。
另一个需要考量的因素是何时采集资源利用率统计信息。以财务部门为例。如果在月中采集数据,但财务人员可能在月初才会频繁使用该系统,那么就误失了一次增长需求,从而导致系统无法达到预期。
Windows平台收集统计数据:
Windows服务器上,第一步要做的事情是性能监测。按照以下步骤来执行:
- 进入Start | Run并输入perfmon。
- 打开Performance Monitor窗口之后,扩展Monitoring Tools并点击Performance Monitor。这里可以添加各种计数器。在Windows 2008/Windows 7版本中,Performance Monitor也包括了Data Collect Sets。
- 扩展Data Collect Sets文件夹和System文件夹,右键System Performance并选择Start。Performance Monitor会开始收集系统的关键统计数据以及资源利用率。
- 当收集到合适的数据之后,点击System Performance并选择Stop。报告会保存至Reports文件夹。进入Reports | System,点击System Performance文件夹,并双击来查看报告。
在下列域控制器的截图中,可看到使用了10%的可用CPU资源,54%内存,18 IOPS,并且没有使用到网络资源。
现在将使用的资源与实际可用的物理资源做比较。服务器有两个双核处理器(总共是4核),每个内核2 GHz(共8 GHz可用),4 GB内存,2个200 GB 配置为RAID 1的SAS磁盘,以及1块1 Gbps网卡。
这里Performance Monitor显示的是平均值,但是同时也应当关注峰值利用率。报告下方会看到标签为CPU的菜单。进入CPU | Process,这里你会看到很多数据,找到名为Processor User Time by CPU的部分,这里平均值一栏与报告中overview相符,但也有不一致的地方,比如,CPU有一个内核有35%的利用率,明显高于均值。
如果采用10%的平均CPU利用率,这意味着理论上只需要800 MHz的CPU,单个物理内核很容易达到要求。内存也只用了可用内存的一半。可以适当将内存减至3 GB,在将来可能遇到的变更情况下还留有一些余量。最后,18IOPS表明磁盘还有很多性能余量,即便是7200 RPM SATA盘也能提供大约80 IOPS。
Linux平台收集统计数据:
现在看一下Linux Web服务器如何获取这一整套数据,使用sar以及sysstat能够对资源利用率进行监测,返回结果与top或iotop类似。sysstat可以通过运行yum install sysstat方便的安装。
安装完成之后,它会每10分钟收集一次资源利用率信息并以7天为周期保存信息。 要查看该信息,只需要运行sar命令,有不同的选项来显示不同的信息,后文会介绍。
在%idle栏中,可以看到系统当前为空闲状态。
可以通过运行dd if=/dev/zero of=/dev/null在系统上产生一些流量,会将CPU利用率升至100%,所以不要在生产系统上做此操作。下图是负载下CPU利用率数据:
这里有一个问题:CPU spike可能无法持续至少10分钟,sar在10分钟的窗口可能会错失这些spike。 可以通过编辑/etc/cron.d/sysstat来改变,该文件告知系统每10秒运行一次sysstat。窗口采集过程中,1至2分钟可能会提供更有价值的信息。本例中将间隔从10分钟改为5分钟,有更大机会找到CPU最大利用率。
除了CPU需要关注以外,内存和磁盘利用率也需要采集。运行sar加上以下选项来获取这些统计信息:
- sar –r会显示内存统计信息。该命令返回的基本信息包括内存的使用百分比,可用来确定实际使用的内存。
- sar –b会显示磁盘I/O。该命令可获得磁盘每秒的交易总数,以及每秒读写交易数量。