理解 Azure 虚拟机的性能监视
随着越来越多的用户将生产应用迁移到云平台,一些传统 IT 的运维功能也相应的需要改变,例如监控,备份等等。我们希望通过这一系列的文章来协助用户更好的理解在 Azure 云平台上实现资源监控的方法。
在今后的系列文章中,我们会详细介绍详细的 Azure 平台的一些监控服务。由于很多用户以虚拟机方式迁移之前本地数据中心的生产环境,我们就从虚拟机的监控作为切入点。今天的内容就从最基本的了解虚拟机的性能指标开始。
我们知道 Azure 的宿主机是基于 Hyper-V 平台,从平台层面,无论运行的是 Windows 还是 Linux 的虚拟机,Hyper-V 平台都可以针对虚拟机这个对象来提供一定的性能指标。具体的技术实现细节可以参考: 资源监视介绍。对于磁盘和网络的指标很容易理解。而 CPU 的计算相对复杂,建议可以仔细阅读其中关于 CPU 资源的详细解释。
计数器 | 说明 |
---|---|
Disk Read Bytes | 上一个采样周期内的磁盘读取数据量 |
Disk Read Operations/Sec | 虚拟机的各个磁盘上每秒读操作次数的总和 |
Disk Write Bytes | 上一个采样周期内的磁盘写入数据量 |
Disk Write Operations/Sec | 虚拟机的各个磁盘上每秒写操作次数的总和 |
Network In | 虚拟机所有网卡上的进站数据总量 |
Network Out | 虚拟机所有网卡上的出站数据总量 |
Percentage CPU | 虚拟机的 CPU 资源的总体运行繁忙程度 |
除了由平台层面提供的性能指标,虚拟机可以通过内部运行的应用拓展来提供更细节的性能指标。对于 Windows 和 Linux 虚拟机的性能指标,在这里列出的是本人对这些指标的理解,在不同的操作系统上可能有细微的差别。
Windows 虚拟机
内存相关
计数器 说明 \Memory\% Committed Bytes in Use 这两个计数器都是关于 Committed Bytes。在 Windows 系统的内存管理中,内存使用遵循 Reserve 和 Commit 的方式。Committed Byes 可以认为是系统确认使用的内存。而系统可以使用的内存是有限的,其上限为内存 + Paging File。当 % Committed Bytes in Use 接近 90%,我们可以认为当前虚拟内存的使用已经接近极限,需要特别留意。 \Memory\% Committed Bytes \Memory\Available Bytes 在系统中现在可以用于直接满足内存申请的内存数量。这个数值包括了内存中的 Standby 内存页列表,Free 内存页列表和全零内存页列表。通常情况,如果此计数器低于内存总数的 10%,需要引起注意。但是对于某些特定的生产压力,如 SQL,Exchange 和 IIS 等,这些应用会从操作系统尽可能多的申请内存来自主管理。因此,仅仅以这一个指标不足以说明是否存在内存不足的问题。通常需要总和考虑 Page/Sec 这个计数器 \Memory\Cache Faults/Sec Cache Faults 是 Paging Faults 其中的一种,通常由于系统尝试访问一个打开文件的某些段数据时,该段数据不在内存中而产生的。注意 Cache Faults 包含 Hard Fault 和 Soft Fault,只有 Hard Fault 的类型才会真正出发磁盘文件读写。一般这个计数器被用作内存分析的辅助判断。 \Memory\Page Faults/Sec 这几个计数器是被用作是否存在内存不足情况的最主要计数器。其中 Paging Faults/Sec 指的是系统中产生的内存页交换请求。注意这个请求包含 Hard Fault 和 Soft Fault。Soft Fault 指的是该请求可以不通过从磁盘上读写文件就可以满足,而 hard fault 指的是必须经过物理磁盘读写才可以解决。很显然,hard fault 更影响系统的性能。因此,我们用 Page/Sec 来标注所有的 Hard Fault。当 Hard Fault 引起的磁盘 IO 超过系统 IO 总量的 70% 时,并参照可用内存的数量,我们可以判断是否存在内存不足的问题。 \Memory\Page Reads/Sec \Memory\Page/Sec \Memory\Pool Nonpaged Bytes Nonpaged Pool 和 Paged Pool 是操作系统在系统内核定义的两种内存资源。其中 NonPaged Pool 是指这块资源必须存储在物理内存中,而 Paged Pool 可以被写入页面交换文件。这两种资源在操作系统内部是有限的。一旦耗尽会导致系统失去相应。在 64 位系统中,由于地址空间的扩展和内存增大,资源耗尽的问题相对比较少见。监控这两种资源可以判断是否存在特定的资源泄露问题。 \Memory\Pool Paged Bytes \Process(_Total)\Working Set Working Set是Windows平台一个常用术语,指的是某个进程在物理内存中使用的内存总量。单个进程的Working Set包含可共享部分(例如DLL文件的代码段)和私有部分(数据段)。其中可以跟踪私有部分的Working Set数值来判断是否内存使用量过高或是否存在内存泄露的问题。 \Process(_Total)\Working Set Private - 处理器相关
计数器 说明 \Processor Information(_Total)\Processor Performance Processor Frequency 反映了 CPU 的运行频率而 Processor Performance 反映了 CPU 的运行效能,比如在 CPU 主频的多大范围内运行。在物理系统上,由于 CPU 可能存在一些操作系统之外的功能来提高频率,这个数据有可能超过 100%。而在虚拟机环境中,正常数据应在 100% 以下。通常我们使用 Processor Performance 来判断 CPU 的负载效能。 \Processor Information(_Total)\Processor Frequency \Processor Information(_Total)\Parking Status Parking 一般用于物理系统上有效安排系统的使用的物理内核,这样可以在负载较低时关闭一定的 CPU 处理能力而节省能源。在虚拟机的运行环境中处理了解 CPU 的负载状态外,没有特别的意义。 \Processor Information(_Total)\% Interrupt Time 系统使用的 CPU 时间片中,用于中断处理程序(ISR)的 CPU 时间。一般这个计数器的数值很低,在 5% 以下。如果数值较高,很有可能是硬件出现问题导致中断异常。 \Processor Information(_Total)\% Processor Time Windows 操作系统中,由于将代码运行模式划分为内核态(kernel mode)和用户态(User Mode),因此代码的运行时间也就相应被划分为 % Privileged Time 和 % User Time。而两者的总和为 % Processor Time。一般来讲,桌面应用程序和系统服务的 CPU 异常,反映在 User Time 上,而硬件,驱动程序和内核异常反映在 % Privileged Time 上。 \Processor Information(_Total)\% Privileged Time \Processor Information(_Total)\% User Time - 系统资源,进程相关
计数器 说明 \Process(_Total)\% Processor Time 操作系统会以每秒 100 次的频率产生内部中断,中断处理程序会去检查当时 CPU 上运行的各个线程,从而以次数来推断该线程/进程占用的时间片,继而计算出全部进程的 CPU 时间占用,即便单个进程的 CPU 统计可能有些的偏差,总计的数值应该精确的反应了 CPU 的负载压力。 \Process(_Total)\Handle Count 进程的句柄数一半代表了进程访问的系统对象的数目。通过判断句柄数过高,或者有异常增长状况,可以判断是否存在资源使用异常,或是泄露问题。 \Process(_Total)\Page Faults/sec 此计数器同 Memory/Page Faults/sec 意义相同,只是将各个进程引起的 Page Faults 累加得到。 Process(_Total)\Private Bytes 所有进程的私有内存空间(可以是在物理内存中,或者是在内存交换文件中的空间)总和。一般使用这个计数器来跟踪私有内存空间的变化趋势,从而判断是否有内存泄露的问题。 \Process(_Total)\Thread Count 所有进程中的线程数目总和。在 Windows 系统中,线程是真正执行代码的单元。线程数目可以反应出当前系统中运行的代码单元的多少。线程数目的异常变化,一定程度上反应了系统的负载变化。 \System\Processes 当前操作系统中运行的进程和线程总数。 \System\Threads \Thread(_Total)\Context Switches/sec Context Switch 指的是在 CPU 上运行的线程被其他线程替代。在 Windows 系统中,Context Switch 是一个正常线程处理操作。这个数据的高低并不代表系统是否异常。系统管理员也无法对这个数据进行调整。通常我们可以根据长期观察到的单个系统上的 Context Switch 数值作为此系统的一个基础数值。只有出现极度异常的量级改变时,才需要引起注意。而这类问题也多发于物理设备异常。 - 磁盘相关
计数器 说明 \PhysicalDisk(_Total)\Disk Read Bytes/sec 所有磁盘上的每秒读或写的数据量 \PhysicalDisk(_Total)\Disk Write Bytes/sec - 网络相关
计数器 说明 \TCPv4\Connection Failure 连接失败的数量。连接失败指的是连接的状态从 SYN-SENT 或是 SYN-RCVD 直接被置为 CLOSED,或者是从 SYN-RCVD 状态置为 LISTEN。 \TCPv4\Connection Established 当前系统中 TCP 连接的状态是 ESTABLISHED 或 CLOSE-WAIT 的数目。 \TCPv4\Connection Reset 连接被重置的数量。重置指的是 TCP 连接的状态从 ESTABLISHED 或是 CLOSE-WAIT 的直接被置为 CLOSED。 \TCPv4\Segments Received/sec 当前建立的连接中,每秒接收的数据段,包括错误的数据段。 \TCPv4\Segments Restransmitted/sec 每秒中重传的数据段数目。重传的数据段指的是数据段中包括 1 个以上的字节数是以前传送过的数据。 \TCPv4\Segments Sent/sec 当前建立的连接中,每秒发送的数据段。但如果一个数据段中只包含之前的重传数据,则不被计入。
此外,Azure 平台还收集了一些 Windows 系统中应用相关的计数器,如 .Net,由于我们主要讨论的是虚拟机层面的监控,在此就不再具体解释。如果需要,可以参考相应的技术文档,如: .NET Framework 性能指标
Linux 虚拟机部分,感兴趣的同学可以通过这里进行查看。
理解 Azure 虚拟机的性能监视的更多相关文章
- 理解 Azure 平台中虚拟机的计算能力
虚拟化平台至今已经发展了十多年的时间.其中 Hyper-V 技术现在也已经是第三代版本.用户对于虚拟化计算也越来越接受,这也有了公有云发展的基础.然而在很多时候,用户在使用基于 Hyper-V 的 A ...
- 理解及快速测定 Azure 虚拟机的磁盘性能
随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...
- 【虚拟机-磁盘管理】理解及快速测定 Azure 虚拟机的磁盘性能
随着越来越多的用户将生产系统迁移到 Azure 平台的虚拟机服务中,Azure 虚拟机的性能愈发被关注.传统的数据中心中,我们通常使用 CPU,内存,存储和网络的性能来衡量生产压力.特别是对于 IO ...
- 《深入理解Java虚拟机》虚拟机性能监控与故障处理工具
上节学习回顾 从课本章节划分,<垃圾收集器>和<内存分配策略>这两篇随笔同属一章节,主要是从理论+实验的手段来讲解JVM的内存处理机制.好让我们对JVM运行机制有一个良好的概念 ...
- Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机
<Windows Azure Platform 系列文章目录> 本将介绍,如何使用Azure备份服务,备份Azure虚拟机. 我们先预先创建2台Windows VM (命名为LeiVM00 ...
- 使用mysqlslap对mysql进行压测,观察Azure虚拟机cpu使用率
一直想做这个测试,原因很简单,很多人一直比较怀疑Azure的虚拟机性能,说相同的配置凭啥比阿里的虚拟机贵那么多,其实,我自己以前也怀疑过,但是接触Azure的几个月,确实发现Azure的虚拟机性能真的 ...
- Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
<Windows Azure Platform 系列文章目录> 本文介绍的是国外的Azure Global.如果是国内由世纪互联运维的Azure China,请参考这篇文档: Azure ...
- Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
<Windows Azure Platform 系列文章目录> 前提要求: 1.假设笔者捕获一个Azure虚拟机模板,命名为leistorage 关于Azure虚拟机模板,请参考下图: 2 ...
- 《深入理解 java虚拟机》学习笔记
java内存区域详解 以下内容参考自<深入理解 java虚拟机 JVM高级特性与最佳实践>,其中图片大多取自网络与本书,以供学习和参考.
随机推荐
- Jquery 【on事件】
一.on事件的定义和用法 on() 方法在被选元素及子元素上添加一个或多个事件处理程序. 自 jQuery 版本 1.7 起,on() 方法是 bind().live() 和 delegate() 方 ...
- Java面试必问
1. 图灵 1.1 聊聊哈希算法与HashMap 1)一个优秀的哈希算法有什么特点? 快速.不可逆.敏感性.低碰撞性 2)自己写一个Hash算法 取模 3)Java中的Hash算法 HashMap,侧 ...
- drf 三级菜单后台序列化以及数据库的设计
第一种, model.py结构: class GoodsCategory(models.Model): """ 商品类别 """ CATEG ...
- linux awk 文本分析实例 [视频]
实例: 点我打开哔哩哔哩 实战: 点我打开哔哩哔哩 以下是一个分享: ➜ log Time Now 16:23:35 > awk '/Installed/' yum.log* | awk -F ...
- ArchLinux 下 VirtualBox 增强设置
0.前言: 其实这个标题本来不是我的本意,因为我的ArchLinux开机启动报错了!. 原本是一个服务报错,解决就行了对不对.后来我各种搜索大法发现了一个常识错误. 1.报错: 2.过程(赶时间的朋友 ...
- 树莓派 Raspbian
备注,从右往左分别是:无线鼠标一个, HDMI转VGA接口一个,网线一根,小米充电宝电源线一个.树莓派Pi 3 一台,包括读卡器一个+32G class10 SD卡一块.最后俩个U盘作为备用里面有Ar ...
- rsync文件同步详解
一. 环境和测试说明 rsync(remote sync)是unix及类unix平台下的数据镜像备份软件,它不像FTP那样需要全备份,rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高 ...
- PyQt5(5)——加载资源文件
在实际中我们需要美化界面,就需要许多的自定义图片. 但是我们发现直接导入图像使用,等程序运行时会报错.???? 这就需要建立资源文件并且加载它们,程序就可以顺利运行了. 设计界面是如何加载资源文件呢? ...
- centos6 编译安装nodejs4.3
官网下载源码包 https://nodejs.org/en/download/ source code #下载 wget https://nodejs.org/dist/v4.3.2/node-v4. ...
- 高阶篇:1)竞品(标杆产品)的拆解和分析benchmarking
本章目的:从标杆产品(竞品)逆向推出装配.制造.设计流程及难点. 1.竞品分析的目的 ①为企业制定市场准确的产品开发目标: ②为企止提供产品开发全流程性能结构对标参考数据指标: ③最优性价比务件下,为 ...