任务管理器中一些功能的简单介绍
表格中的内容来自:http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/core/fneb_mon_oyjs.mspx?mfr=true
在任务管理器的查看->选择列中,可以更改进程面板中显示的性能检测项目。
进程统计项目 | Description描述 |
Base Priority 基本优先级 | 进程的基本优先级决定了这些进程在CPU的处理队列中的排列顺序。基本优先级由进程本身控制,而不是操作系统指定。操作系统设置、改变进程中线程的动态优先级。可以在任务管理器中设置进程的优先级,更详细的内容参考“处理器活动分析 ”。 |
CPU Time CPU时间 | 从进程开始运行起,所占用的CPU总时间,以秒计。 |
CPU Usage CPU占用 | 上次跟新到本次更新的时间段内,该进程占用的CPU时间的百分比。 |
GDI Objects 图形设备接口对象数目 | 进程使用的图形设备接口(GDI)控件的数目。GDI控件是指,从针对图形输出设备的应用程序接口GDI库中调用的控件。 |
Handle Count 句柄数 | 进程的对象列表中对象句柄的数目。 |
I/O Other I/O其它 | 进程产生的非读非写的输入输出操作的数目,包括,文件、网络和设备I/O。这种操作的一个例子是行使控制功能。不统计指向控制台的操作(控制台输入)。 |
I/O Other Bytes I/O其它字节数 | 其它I/O操作传输的字节数。 |
I/O Read Bytes I/O读取字节数 | 进程在输入输出操作中读入的字节数。包括文件,网络和设备I/O。指向终端的操作不在统计之列。 |
I/O Reads I/O读取 | 进程在输入输出操作中读操作的数目。包括文件,网络和设备I/O。指向终端的操作不在统计之列。 |
I/O Write Bytes I/O写入字节数 | 进程在输入输出操作中写出的字节数。包括文件,网络和设备I/O。指向终端的操作不在统计之列。 |
I/O Writes I/O写入 | 进程在输入输出操作中的写出操作数。包括文件,网络和设备I/O。指向终端的操作不在统计之列。 |
Image Name 映像名称 | 进程名。 |
Memory Usage 内存使用 | 进程占用的主内存数,以千字节KB计。 |
Memory Usage Delta 内存使用增量 | 两次统计更新之间,内存占用量的变化,以KB计。 |
Nonpaged Pool 非页面缓冲池 | 该进程占用的操作系统内存数,以KB计。操作系统内存中从未分页到硬盘的部分。分页是将应用程序内存中的不常用的部分转移到其它存储媒介上,通常是转移到硬盘上。 |
Page Faults 页面错误 | 应用程序请求的数据由于不在内存而需要从硬盘上重新读入的次数。从应用程序启动开始计数。 |
Page Faults Delta 页面错误增量 | 两次更新间的页面错误增加量。 |
Paged Pool 页面池 | 该进程占用的操作系统内存数,以KB计。页面池是可以分页到硬盘的虚拟内存。页面池包括所有的用户内存和系统内存的一部分。 |
Peak Memory Usage 内存使用峰值 | 从启动开始,进程占用的物理内存峰值。 |
PID (Process Identifier) 进程标识 | 应用程序启动时分配的数字标识。 |
Thread Count 线程数 | 应用程序中运行的线程数。 |
USER Objects 用户对象 | 进程占用的用户对象数。用户对象是指窗口管理器中的对象,包括窗口、菜单、光标、图标、钩子hooks、加速器、显示器、键盘布局,以及其它内部对象。 |
Virtual Memory Size 虚拟内存量 | 为该进程分配的虚拟内存(或地址空间)量。 |
在任务管理器的性能面板中,通过“查看”菜单中选择“显示核心时间”,可以查看应用程序调用操作系统服务所占用的CPU时间,剩余的时间,即用户模式,是运行应用程序本身的代码所占用的时间。
下表简单地描述了性能面板中一些统计项目的内容。
Task Manager counts | Description |
CPU Usage CPU使用 | |
MEM Usage 内存使用 | 虚拟内存的使用量( 虚拟内存(VirtualMemory)是Windows管理所有可用内存的方式) |
Total Handles 总句柄数 | |
Total Threads 总线程数 | |
Total Processes 总进程数 | |
Physical Memory: Total 物理内存:总量 | |
Physical Memory: Available 物理内存:可用量 | 包括清零的,释放的和待分配内存。 |
Physical Memory: File Cache 物理内存:文件缓存 | Amount of physical memory, in kilobytes,released to the file cache on demand. 文件缓存占用的物理内存。 |
Commit Charge: Total 认可用量:总数 | 所有进程使用的虚拟内存量 |
Commit Charge: Limit 认可用量:限制 | 不扩大页面文件的情况下,可供分配的虚拟内存总量。 |
Commit Charge: Peak 认可用量:峰值 | 虚拟内存的峰值用量,如果虚拟内存增大,可能会超过认可用量的限制值。 |
Kernel Memory: Total 核心内存:总量 | 页面和非页面内存的总量 |
Kernel Memory: Paged 核心内存:页面 | 操作系统占用的页面池容量。 |
Kernel Memory: Nonpaged 核心内存:非页面 | 操作系统占用的非页面池容量。 |
关于内存这部分把我弄晕了,对我来说又没有什么太重要的意义,算了,有心人可以看下面牛人写的:
虚拟内存,物理内存,页面文件,还有任务管理器
[quote]发信人: Hakkk (蓝猫淘气3k问·荷兰篇), 信区:NewSoftware标题:虚拟内存,物理内存,页面文件,还有任务管理器
发信站: 水木社区 (Tue Nov 20 21:56:20 2007), 站内
虚拟内存(Virtual Memory)是Windows管理所有可用内存的方式。
对于32位Windows系统,每个进程所用到的虚拟内存地址从0到2^32-1,总容量4GB,
其中2GB是与操作系统以及其他所有进程所共享,
另外2GB分派给进程独占(这就是常说的32位Windows中一个进程最多能用2G内存的由来)。
4GB虚拟地址空间(Virtual AddressSpace,VAS)中,2GB的进程独占VAS是进程隔离的,
换句话说,每个进程都可以从RAM或者硬盘上映射到属于自己的2GBVAS。
所以虽然32位Windows每个进程最多只能获得4GB可用虚拟内存,
但是所有进程总和可以使用总量超过4GB的虚拟内存。
可惜XP只支持4GB RAM,也就是说超出部分一定得靠页面文件补足;
而比如2003企业版通过PAE支持32GB RAM,可以减少页面文件的用量。
(但单个进程最多仍然只有4GB虚拟内存地址空间,而不是32GB)
所以,一个简单的计算示例:
三个进程最多能用掉多少VAS?
2GB(共享)+2GB(独占)×3=8GB
这4GB的虚拟地址空间,按照4KB的大小进行分页(page),
然后以页为单位映射到实际存储单元中,包括:
·物理内存(RAM)
·页面文件(Page File,在Win9x中称为交换文件SwapFile,即win386.swp)
·其他文件自身(比如一些长时间未活动的进程的exe文件自身)
可见,通常人们所说的虚拟内存实际上只是指其中的页面/交换文件而已,
这是对虚拟内存的一个错误的理解。
虚拟内存≠页面文件
RAM中除了保存最近读写的文件缓存(FileCache,相当于Win9x中的Vcache)
主要用来存储正在使用的程序代码和数据,
当RAM资源紧张,或者有程序码或数据长时间未使用时,
XP通常会将非活跃程序码所在的地址页映射回程序文件(exe、dll等),
将数据所在的地址页映射到页面文件(pagefile.sys)中并拷贝数据,
然后将它们本来占用的RAM空间释放。
这个过程称为页出(Page Out)。
当系统读取某个虚拟内存地址,而该地址所在的页不在RAM中时,
将产生一个页面错误(Page Fault)中断,
告诉系统从页面文件或者程序文件中取回包含该地址的虚拟内存页,
即将内容拷回到RAM并建立新的虚拟地址映射,并将页面文件中对应部分标记为未使用,
这个过程就是页入(Page In)。
页入成功的话就是一个Valid Page Fault,否则就是Invalid PageFault。
前者非常普遍,(可以在任务管理器的进程页监视到)
而后者是由程序或硬件错误引起,
如果发生在进程上会导致非法操作,如果是系统自身则很可能蓝屏。
内存用量可以在任务管理器的性能页中看到。
其中物理内存的总量、可用数等是指安装的RAM容量和剩余RAM容量,
而内存使用或者提交更改的总量和限制是指虚拟内存的CommitLimit和Committed Bytes,
可以理解成系统可以使用的虚拟内存总量和当前使用量,
其中总量是由RAM大小+页面文件大小决定的。
而在任务管理器的进程页中,“内存使用”和“虚拟内存大小”造成的误解很多,
而实际上,这两个值是对应性能监视器中该进程的Working Set和PrivateBytes,
WorkingSet是指一个进程的4GB虚拟地址空间中被映射到RAM中的部分的大小,
通常是该进程的虚拟内存中的活跃部分。
表面看来这个表述和“进程占用的RAM大小”没有太大区别,
但至少有两种情况导致了例外的发生:
第一种是这部分虚拟内存如果是属于2G的系统共享虚拟内存,
那么它映射到的RAM地址可能和其他进程有重复,计算多个进程占用RAM总和就不正确,
使得所有进程的Working Set之和比实际占用RAM要大。
第二种是一个进程中可能有同一段RAM内容的多个引用,比如一个文件被loop多次,
此时虚拟空间中会有多段地址被映射到同一段RAM上,
从而造成该进程的Working Set比实际占用RAM要大。
PrivateBytes是一个进程的2GB独占虚拟地址空间中用到的部分的大小,
无论这部分是在RAM中还是在页面文件中,甚至是在exe、dll等文件中。
所以,任务管理器进程页中的虚拟内存绝对不反映pagefile.sys的用量。
所以,任务管理器无论是进程页还是性能页都不能直接反映pagefile的使用情况,
诸如“关掉pagefile还能看到虚拟内存”之类的疑问,应该很清楚了。
下面是一个简单图示,
两个进程,各自拥有2G独占VAS,共同拥有2G共享VAS,
W代表映射到RAM中的部分(Working Set),P代表页出的部分。
0…………………2GB独占内存……………… 2G ………2GB共享内存………4G
进程1 |--PPPP---------------WW-----PPPP--------|
\\ || \\
\\ || \\
\\|||||||--PPPPPPPPPPPP--WWWWWWWW--|
exe2exe1dllRAMemorypagefile.sys ||||||||||||||||||||
|||| //////|| |共享内核/dll等共享RAM空间
进程2 |-PPPP------PPP---WW--WW------PP----P----|
然后,任务管理器的进程页中的“内存”就是上图中的W,
所以所有进程的内存项加起来肯定比实际用的RAM大,因为有共享部分
此外还有重复引用,比如上图中进程2独占内存中第二和第三个W指向同一段RAM空间。
而任务管理器进程页中的“虚拟内存”就是上图中右半部分,“独占VAS”。
可见pagefile只是其中的一部分,而RAM,只要用于独占VAS,一样计入了该处“虚拟内存”
。
最后,实际的页面文件用量(pagefile.sys中实际使用部分),
可以在性能监视中看到,即Paging File下的% Usage和% Usage Peak
配合当前pagefile.sys的大小就可以计算出字节数,
这个值可以做为设定页面文件最小值的一个参考,
而不是用任务管理器进程页的所有进程的虚拟内存大小相加做为页面文件最小值的参考。