1. 打开
- 键盘:CTRL + SHIFT + ESC
- 鼠标:任务栏上右键->启动任务管理器(K)
- 命令:taskmgr
任务管理器是Windows上首要的系统监控工具,类似Linux上的Top,下面介绍常用功能。
2. 应用程序
该标签页显示任务栏中正在运行的软件,和下面进程中对比,这里显示出的应该是带窗口的图形界面进程。
3. 进程
攻城狮使用这个标签页的频率最高,先勾选左下角的显示所有用户的进程,然后如下操作选择查看进程的参数列:
- 菜单查看(V)->选择列(S)。
- 选中PID、CPU使用率、内存-工作集、内存-提交大小、页面错误、页面错误增量、句柄数、线程数、命令行。
- 把PID列拖动到左手第一列,映像名称作为第二列。
点击某一列的标题栏,下方任务行将根据其值递增排序,再次点击递减排序。有了命令行列后,直观地看到该进程所在目录、命令行参数。下面介绍几个和内存有关的列:
3.1. 内存-工作集 = 工作设置(内存)
- 进程和其依赖的共享库共同占用的物理内存。像操作系统提供的共享库(Windows上即DLL)被多个进程同时适用,在物理内存中也仅仅出现一份。
3.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
数组变量,结果访问变量时发生内存错误(细节没留存),默认内存相关指标列无法看出她占用了高内存,勾选内存-提交大小就立马发现原来她占用了这么高虚拟内存,就定位到原因了。
3.3. 页面错误
- 当进程访问某虚拟内存地址,发现对应内容存储在磁盘中时,就会发生一次页面错误的系统中断,然后从磁盘读取数据到物理内存,同时该值依次递增,频繁发生会降低运行性能。
下图简要说明了Windows中各类申请内存的API的关系:
详细地关于操作系统的虚拟内存及内存管理等资源,请查看文末的参考链接。
4. 性能
- 中央位置显示CPU和内存占用率的曲线图,按住F5不放可看到实时的变化图,其他各个标签页基本都有F5刷新功能。
- 所有CPU一张图表:菜单查看(V)->CPU记录(C)->所有CPU一张图表(O)。
- 每个CPU一张图表:菜单查看(V)->CPU记录(C)->每个CPU一张图表(P),适用于查看多核CPU时每个核心的负载。
- 下方显示系统总的句柄、进程、开机时间等。
上图显示物理内存16GB,系统中的提交(GB) 17 / 31说明,虚拟内存文件c://pagefile.sys
约15GB,所以合计31GB,目前所有进程总共提交17GB,其中物理内存占用16GB * 71% = 11.36GB,虚拟内存文件占用17GB - 11.36GB = 5.64GB。
5. 联网
- 中央显示每个网卡使用率的曲线图。
- 推荐高刷新率:点击菜单查看(V)->更新速度(U)->高(H),F5实时刷新。
- 推荐查看网卡详细数据:点击菜单查看(V)->选择列(S),选择网络使用率、线路速度、状态、每间隔发送的字节数、每间隔接收的字节数。
- 有一些虚拟网卡比如VPN、VMware等。
- Npcap Loopback Adapter是127.0.0.1和localhost表示的本机协议栈网卡, Windows 7上是10Mbps的线路速度。
当分析网络软件时,非常想知道每秒发送和接收的数据带宽,上述每间隔发送/接收的字节数可做参考,但不清楚每间隔对应刷新间隔是多少,如果不是每秒的话,往往还得换算,而且看不到每一个具体进程的带宽。更好的办法请移步参考Windows资源监视器中的网络部分。