开发者社区> 问答> 正文

有Windows实例内存分析工具的介绍吗?

有Windows实例内存分析工具的介绍吗?

展开
收起
小天使爱美 2020-03-26 09:21:32 798 0
1 条回答
写回答
取消 提交回答
  • 概述 微软官方提供多种工具来分析Windows系统的内存使用情况,除了系统自带的任务管理器(Task Manager),资源监视器(Resource Manager),性能监视器(Performance Monitor),还有SysInternals工具,SysInternals工具如RAMMap和PoolMon,可以用来分析内存问题。本文简单介绍这些工具的使用方法,如果需要了解深入了解,请参考微软相关链接。

    详细信息 阿里云提醒您:

    如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 以下步骤主要介绍以下工具的使用。

    提示:本文仅供用户使用Windows系统的ECS实例时参考,文中引用的微软官方链接,版权归属微软。请注意文章适用的操作系统范围,以及微软Windows产品迭代或者文档未及时更新可能带来的问题,阿里云官方不对引用的微软官方链接内容负责。

    任务管理器 资源监视器 性能监视器 RAMMap和Process Explorer Pool Monitor

    任务管理器 Windows系统可以使用任务管理器进行内存监控,监控可以显示出详细的内存占用的进程。尤其是在性能中检查虚拟内存的使用情况,可以通过已提交虚拟内存(Commited Bytes)/虚拟内存上限(Commit Limit)查看使用情况。如果已提交虚拟内存非常接近上限,那么系统会出现性能问题。

    Windows 2008 R2 打开任务管理器,单击 性能,通过任务管理器查看内存使用情况。

    还可以添加各类内存指标进行检查,打开任务管理器,依次选择 查看 > 选择列,添加各类内存指标,请重点添加 内存 - 工作集(检查进程物理内存的占用)和 内存 - 提交大小(非保留的虚拟内存空间)。

    Windows 2012 打开任务管理器,单击 性能,通过任务管理器查看内存使用情况。

    资源监视器 通过任务管理器,可以打开资源监视器(Resource Manager),进一步检查内存的使用情况,尤其是每个进程的使用情况。对于各个进程而言,请重点关注 提交(KB)内存的大小,监控是否有进程消耗过多资源。

    物理内存的使用包含以下几个部分。

    给硬件保留的内存。 正在使用内存:由进程、驱动程序、操作系统使用的内存。 已修改内存:内容必须写入磁盘才能用于其它用途的内存。 备用内存:包含未使用的缓存数据和代码的内存。 可用内存:不包含任何有价值数据,以及当进程、驱动程序、操作系统需要更多的内存时优先使用的内存。 缓存:当文件被打开时,系统会把文件保存在缓存中,方便下次迅速读写。Windows 2008 R2及以后版本,对这个缓存的使用也做了限制,有一部分物理内存不会被缓存使用,保证系统即使在缓存过大的时候,也有可用物理内存,满足程序使用需求。

    性能监视器 性能监视器(Performance Monitor)是用于Windows监控和收集系统资源消耗的重要工具。

    监控性能消耗可以通过添加指定的计数器,实时检查系统资源消耗的情况,如下图所示。

    此外,还可以依次选择 数据收集搜集 > 用户定义,手工添加各类计数器,例如Logical Disk、Memory、System、Processor、 Process来收集系统各类资源的实时运行情况,同时通过采样间隔来定义收集频率。例如,如果机器有内存泄露问题很久才能复现,可以配置采样间隔为5秒,如果机器很容易出现CPU异常,那么可以配置采样间隔为1秒。

    RAMMap和Process Explorer RAMMap 有时在任务管理器的监控窗口中查看不到占用内存异常的进程,但物理内存显示已经负载的状态。这种情况一般是系统底层有占用内存的情况,可以通过RAMMap工具查看系统内存的占用情况,该工具是微软官方的软件,相关信息及下载地址请访问RAMMap。打开RAMMap,可以查看任务管理器中不显示的系统占用内存的情况。

    Process Explorer Process Explorer也可以查看进程的详细资源占用情况,例如打开后也可以查看到进程的各类内存资源使用情况。

    Pool Monitor 对于WIndows内核而言,其两项核心的内存资源为non paged pool(非页面缓冲池)以及paged pool(页面缓冲池)。操作系统出现内存性能问题,很可能是上述2个资源消耗殆尽。虽然通过上述提到的工具可以查看到资源消耗的情况,但是如果需要定位是系统哪个Tag消耗的资源,需要使用PoolMon来定位。使用介绍请参考Pool Monitor。

    检查perfmon的日志来定位究竟是哪个Pool Tag导致的资源消耗殆尽,例如,检查到IoDn Tag导致资源消耗完,通过如下命令定位到是SafeDogFileGuard.sys,,而后通过修正该应用解决。

    findstr /m /1 IoDn *.sys 系统显示类似如下。

    2020-03-26 09:28:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云服务器ECS内存增强型实例re6全新发布 立即下载
TAKING WINDOWS 10 KERNEL 立即下载
ECS运维指南之Windows系统诊断 立即下载