《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一2.2.2 vscsiStats...

本节书摘来华章计算机《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一书中的第2章 ,第2.1节,[美] 克里斯托弗·库塞克(Christopher Kusek) 著 吕南德特·施皮斯(Rynardt Spies)姚海鹏 刘韵洁 译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2.2 vscsiStats

另一个重要的性能工具是vscsiStats。这个工具是ESXi的内置工具,并且允许你收集个人虚拟机I/O统计数据。esxtop在ESXi的主机层面收集实时数据,相比较而言,vscsiStats仅用来收集硬盘信息,下至个人虚拟硬盘层面。并且,由于esxtop不只用于存储性能监控数据,因此它不能给出虚拟机存储性能的整体视图。
vscsiStats工具可以用来排除性能问题,也能用于基准测试和性能测试。它返回虚拟机中关于I/O大小的信息,延时统计信息,以及VM生成的I/O是随机的还是序列化的。你可以获得所有这种信息而不用掌握关于虚拟机中运行原理的知识。因为vscsiStats只是简单地收集性能数据,所以你不用成为虚拟机中运行的应用或客户端操作系统方面的专家也可以收集这些数据。表2-3列出了vscsiStats可以收集的直方图数据的类型。

image

vscsiStats在ESXi控制台中的运行方式和esxtop相似。运行vscsiStats –l 将会得到一个列表,其中包含在ESXi主机中运行的所有虚拟机,包括每个虚拟机的wordGroupID和每个虚拟硬盘的handleID。如果你想收集某个拥有多个虚拟硬盘的虚拟机中的单个虚拟硬盘存储性能统计数据,那么这些数据非常有用。vscsiStats –l的输出如下:

Virtual Machine worldGroupID: 95174, Virtual Machine Display Name: VM1, Virtual
Machine Config File: /vmfs/volumes/707a93d0-63f06c9b/VM1/VM1.vmx, {
   Virtual SCSI Disk handleID: 8197 (scsi0:0)
   Virtual SCSI Disk handleID: 8198 (scsi1:0)

既然你有每个虚拟硬盘的worldGroupID和handleID,就可以配置vscsiStats来运行和收集想要的数据。为了启用vscsiStats来收集数据,记录前一个例子的worldGroupID(本例中为95174),并按如下命令输入。本例中,你将收集到每个虚拟硬盘的统计数据,但可以包含handleID来指明要监控的虚拟硬盘:

vscsiStats -s -w 95174

vscsiStats默认只运行30分钟。如果运行它的时间长于30分钟,只需要再一次键入之前的命令,它就会再运行30分钟。因为这类数据收集可以是多源的,所以它不要运行太长时间,否则可能影响主机上其他虚拟机的性能。
一旦运行30分钟,就可以查看收集到的数据。你只用挑选你想报告的直方图数据,并发出命令来查看它。如果要查看vscsiStats延时数据,使用以下命令:

vscsiStats -w 95174 -p latency

vscsiStats默认只简单地输出到屏幕,如图2-8所示。这个视图不是很有用,尤其是如果你要处理很多数据。正如esxtop一样,你可以把数据输出到CSV文件中,这样就可以用你更熟悉的工具,如Microsoft Excel,来处理它。


image


要想导出vscsiStats数据到Excel,你只需要在命令中输入配置参数和想要的直方图数据。例如,你想查看虚拟机的延时统计数据,并保存到CSV文件latency.csv。为了查看虚拟机的延时统计数据,并保存到CSV文件,使用以下命令:

vscsiStats -w 95174 -p latency -c >latency.csv

在Excel中打开数据后,展开A、B列来找到想要的数据。假设你想看监控期间内的所有读入I/O延时。在CSV中,在A列中查找“Histogram: latency of Read IOs in Microseconds (us)”。在其下,你将在A列中看到“Frequency”,B列中看到“Histogram Bucket Limit”,如图2-9中高亮部分所示。


image


如果你选择了Frequency 和 Histogram Bucket Limit下的所有东西,并插入了一个图,但是图无法正确显示,因为Excel不能恰当地选择横纵坐标轴,但是这很容易修复。使用下述过程就可以在Excel中产生vscsiStats数据的图:
1)选择想画图的数据(图2-9中高亮部分部分),切换到功能区的Insert标签页,选择Column,选择2D或3D列图。
2)在图插入后,单击右键并选择Select Data。
3)在Legend Entries (Series)中,单击Histogram Bucket Limit 并单击Remove按钮。
4)单击Horizontal (Category) Axis Labels下的Edit按钮,仅选择Histogram Bucket Limit下的数据,并单击OK按钮。
5)一旦在Legend Entries (Series)下仅显示Frequency,以及在Horizontal (Category) Axis Labels下仅有从Histogram Bucket Limit中选出的数据,如图2-10所示,单击OK按钮可以显示合适的图。

image


正如你所见,vscsiStats是一个用于详细理解虚拟机存储性能的特性强大的工具。vscsiStats在使用vSphere 5.5中的vFlash Read Cache时极为有用,具体细节将在第7章介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的Python代码示例,用于监视vSphere客户端中每个虚拟机的性能: ```python from pyVim.connect import SmartConnect from pyVmomi import vim import ssl # Disable SSL certificate verification context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) context.verify_mode = ssl.CERT_NONE # Connect to vCenter Server si = SmartConnect(host="vcenter.example.com", user="username", pwd="password", sslContext=context) # Get all virtual machines content = si.RetrieveContent() vm_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True) vms = vm_view.view # Loop through each virtual machine for vm in vms: # Get virtual machine name and performance manager vm_name = vm.summary.config.name perf_manager = si.content.perfManager # Get performance counters for CPU and memory counter_cpu = perf_manager.QueryPerfCounterByLevel(entity=None, level=1) counter_mem = perf_manager.QueryPerfCounterByLevel(entity=None, level=2) # Get CPU and memory usage for the virtual machine query_spec_cpu = vim.PerformanceManager.QuerySpec(entity=vm, metricId=counter_cpu[0].key, intervalId=20) query_spec_mem = vim.PerformanceManager.QuerySpec(entity=vm, metricId=counter_mem[0].key, intervalId=20) result_cpu = perf_manager.QueryPerf(query_spec_cpu) result_mem = perf_manager.QueryPerf(query_spec_mem) # Print virtual machine name, CPU usage, and memory usage print("Virtual machine name: {}".format(vm_name)) print("CPU usage: {} MHz".format(result_cpu[0].value[0])) print("Memory usage: {} MB".format(result_mem[0].value[0] / 1024 / 1024)) # Disconnect from vCenter Server si.Disconnect() ``` 请注意,此代码仅提供了一种基本示例,您可能需要根据自己的需求进行修改和优化。此外,还需要安装pyVmomi库以与vSphere API进行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值