随着越来越多的用户将生产应用迁移到云平台,一些传统 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 虚拟机

  1. 内存相关

    计数器 说明
    \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
  2. 处理器相关
    计数器 说明
    \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
  3. 系统资源,进程相关
    计数器 说明
    \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 数值作为此系统的一个基础数值。只有出现极度异常的量级改变时,才需要引起注意。而这类问题也多发于物理设备异常。
  4. 磁盘相关
    计数器 说明
    \PhysicalDisk(_Total)\Disk Read Bytes/sec 所有磁盘上的每秒读或写的数据量
    \PhysicalDisk(_Total)\Disk Write Bytes/sec
  5. 网络相关
    计数器 说明
    \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 虚拟机部分,感兴趣的同学可以通过这里进行查看。

转载于:https://www.cnblogs.com/cbits/p/7489369.html

理解 Azure 虚拟机的性能监视相关推荐

  1. 理解 Azure 平台中虚拟机的计算能力

    虚拟化平台至今已经发展了十多年的时间.其中 Hyper-V 技术现在也已经是第三代版本.用户对于虚拟化计算也越来越接受,这也有了公有云发展的基础.然而在很多时候,用户在使用基于 Hyper-V 的 A ...

  2. 访问windows azure虚拟机iis服务器,Azure使用文件共享从IIS虚拟机共享照片?

    如何创建可在虚拟机中运行的Web服务器之间共享的文件共享,以直接访问Azure中的blob存储?Azure使用文件共享从IIS虚拟机共享照片? 我正在将以.net 1.1编写的现有n层网站应用程序迁移 ...

  3. 1.Azure虚拟机部署

    对于新版的Azure门户,对于我一个在西区成都的技术来说很多人还是不熟悉怎么使用的,因此,我想以一个普通用户的角色以尽可能多的图形化方式为大家分享新版Azure门户的使用,由浅到深的逐步把各个功能用起 ...

  4. 【Java书笔记】:《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2部分-自动内存管理,第3部分-虚拟机执行子系统,第5部分-高效并发

    作者:周志明 整理者GitHub:https://github.com/starjuly/UnderstandingTheJVM 第2部分-自动内存管理 第2章 Java内存区域与内存溢出异常 2.2 ...

  5. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  6. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  7. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...

  8. JAVA好书之《深入理解Java虚拟机》

    最近打算做好现有工作的前提下,扎实一下自己专业的技术知识,并将相关的经典书也记录一下.今天看了一些JVM相关的知识,这里面的经典是<深入理解Java虚拟机>,适合有点基础又想深入理解其中原 ...

  9. 微软云服务器多ip,Azure 虚拟机的多个 IP 地址 - 门户 | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 使用 Azure 门户 ...

最新文章

  1. 【JavaScript总结】JavaScript语法基础:数据类型
  2. mysql授权其他用户导出数据_mysql创建账号、授权、数据导出、导入
  3. STM32F103xC、STM32F103xD和STM32F103xE增强型模块框图 与 时钟树
  4. Loj 【CQOI 2006】简单题,mmp
  5. 2018.8.14-C++复习笔记总
  6. Leetcode 209.长度最小子序列(滑动窗口)
  7. 程序员们之间的“鄙视链”,程序员底之间无声的战争
  8. 用python实现一个密码生成程序_Python实现密码生成器
  9. eros --- Windows Android真机调试
  10. 10个用Console来Debug的高级技巧
  11. [转]Basic OCR in OpenCV
  12. 为什么调用支付宝接口后返回是错误页面!
  13. WIN32汇编 状态栏的使用
  14. vue3 three ts 全景图
  15. Juce之旅-第一个例子(图形窗口)
  16. nb信号和4g信号_NB-IoT DTU与4G DTU有什么不同之处
  17. mtcnn人脸检测中将ckpt训练模型转换为 npy保存
  18. 被动语态用于现在时,要在助动词 be 后 + ing
  19. 我校全力开展抗洪救灾工作
  20. 字符串类型及format格式化

热门文章

  1. StringBuilder类与String类的区别
  2. 若谷歌实用量子计算机难产,拉里·佩奇会把它砍掉吗?
  3. 利用74LS138实现4-16译码器,并在QuartusⅡ上进行仿真
  4. 多生产者_多线程必考的「生产者 - 消费者」模型,看齐姐这篇文章就够了
  5. python线性表顺序存储实现_数据结构——基于C的线性表的顺序存储结构的基本操作的实现...
  6. java栈和堆的区别_java 栈 和 堆 的区别
  7. 已知旋转矩阵求角度_如何推导旋转矩阵
  8. python舵机控制程序_树莓派PWM控制舵机的两种方式
  9. 070_html url编码
  10. mysql sycho_Java面试题 - osc_p1rj1z8j的个人空间 - OSCHINA - 中文开源技术交流社区