1. 打开
- 键盘:CTRL + SHIFT + ESC
- 鼠标:任务栏上右键->启动任务管理器(K)
- 命令:taskmgr
任务管理器是Windows上首要的系统监控工具,类似Linux上的Top,下面介绍常用功能。
2. 进程
点击左下角的详细信息,显示如下:
该标签页按照应用、后台进程、Windows进程(滚动条下方)来归类显示,并给出每个分类中进程数,以及CPU和内存的使用百分比。
以现在为例,2019年11月18日15时32分00秒,分别有:
- 应用(8)
- 后台进程(49)
- Windows进程(28)
合计85个,进入详细信息标签中统计却有76个进程、相差9个。详细信息的76个应该是真实的,起码这个功能被使用(测试)的频率最高,出现bug的概率较低,那么2个数值不等应该归于对2个标签页的功能设计不一致导致,比如:
- 到底有哪些分类?
- 如何分类?
3. 性能
- 显示出CPU、内存和多个网卡的使用率,及网卡的实时数据量。
- 单击左侧CPU、内存、以太网,右侧显示详细。
- 单击左侧的某个以太网后,在右侧详细中点击鼠标右键->查看网络详细信息(D),能观察到该网卡的使用率、链接速度、状态、发送以及接收的吞吐量百分比、每个间隔发送/接收的字节数。
- 前些年有一次误把万兆网卡插到百兆网口上,导致流媒体效果很差,花很长时间才通过这里看出端倪,很遗憾,巨人家Server版本操作系统的产品经理,竟然把这个重要的数据隐藏如此之深,比起2009年发布的Windows 7反而开倒车。
- 左侧磁盘 N显出了磁盘数量和每块磁盘对应的驱动器名称,单击某块磁盘后,右侧显示她的响应时间、容量、读取和写入速度。
- Windows 10(发布于2015年)的左侧提供了上述每块磁盘的入口,Windows Server 2012则没有,预计2016年发布的Server 2016也会有,2019年了Windows服务器首选推荐Server 2016。
点击资源监视器可查看从计算机的硬件资源为视角的统计报告,尤其是网络/硬盘等IO相关的数据,请移步:Windows资源监视器。
4. 详细信息
攻城狮使用这个标签页的频率最高,列表中的默认信息不够,建议如下操作重新选择列:
- 在表头标题处,点击鼠标右键–>选择列(S)**。
- 选中PID、CPU、工作集(内存)、提交大小、页面错误、页面错误增量、句柄、线程、命令行。
- 把PID列拖动到第一列。
点击某一列的标题栏,下方任务行将根据其值递增排序,再次点击递减排序。有了命令行列后,直观地看到该进程所在目录、命令行参数。下面介绍几个和内存有关的列:
4.1. 工作集(内存)
- 进程和其依赖的共享库共同占用的物理内存。像操作系统提供的共享库(Windows上即DLL)被多个进程同时适用,在物理内存中也仅仅出现一份。
4.2. 提交大小
- 进程的虚拟内存空间总大小,但不包括共享库的物理内存。
32位Windows下的软件,最大支持4GB内存空间,到了64位Windows,1个64位软件可申请的内存空间没有限制。假设当前机器的物理内存是8GB,一个64位软件运行起来后经占用了6GB内存,此时使用C与语言的malloc
函数再申请3GB内存空间,是可能成功的,因为malloc
返回的是虚拟内存地址,物理内存还缺少的3 - (8 -6) = 1GB
空间,Windows内存管理模块会把她映射到硬盘上C:\pagefile.sys文件中的某片区域,当软件访问这1GB虚拟内存数据时,内存管理模块发出缺页中断,然后访问硬盘、交换数据,再把CPU时间还给软件、继续执行。
所以当评价系统整体性能或某几项软件的性能指标时,提交大小和下面的页面错误等非常重要,她们直观地显示出是否有和硬盘交换数据,再某些关键场景下这些很重要。
还记得有一次静态声明了长为N个GB的char
数组变量,结果访问变量时发生内存错误(细节没留存),默认内存相关指标列无法看出她占用了高内存,勾选内存-提交大小就立马发现原来她占用了这么高虚拟内存,就定位到原因了。
4.3. 页面错误
- 当进程访问某虚拟内存地址,发现对应内容存储在磁盘中时,就会发生一次页面错误的系统中断,然后从磁盘读取数据到物理内存,同时该值依次递增,频繁发生会降低运行性能。
下图简要说明了Windows中各类申请内存的API的关系:
详细地关于操作系统的虚拟内存及内存管理等资源,请查看文末的参考链接。