序言
;F9n)\%V1a6Z
C)?ZV0内存的使用情况是系统性能中重要的因素之一,频繁的页交换及内存泄露城市影响到系统的性能。本文主要是描述内存的一些观点、计数器含义,以及可能存在的性能瓶颈。
4Cd%l3r(T&z y051Testing软件测试网xi[8VP?r?Q?a
一些观点
f2c(qDw-y&{l0
1Vu7t|%D} r5eG x0①
“页交换”是使用称为“页面”的单位,将固定巨细的代码和数据块从 RAM 移动到磁盘的过程,其目的是为了释放内存空间。51Testing软件测试网3tp8d!h!Te1Z*Y
② 每个Windows进程都拥有4G的虚拟地点空间,在多任务环境下,所有进程使用的内存总和可以赶过物理内存。51Testing软件测试网 i6sOT9l3g ]q)l`
③
进程的一部分可能会从物理内存中删除而被暂存在硬盘的文件里(pagefile)。当进程试图访谒这些被交换到pagefile里的内存的时候,系统会孕育产生一个缺页中断(page
fault),这时候Windows内存打点器会卖力把对应的内存页从头从硬盘调入物理内存。51Testing软件测试网F+k0TQX4|GD@-h
④
用于描述物理内存中虚拟页面子集的术语称为一个事情集(Working
Set),也叫驻留集。一共有三种事情集:进程事情集、系统事情集、会话事情集。(具体观点看后面的计数器)
A3C` EB:P,l K0⑤
非换页池:它是由一些“可保证总是驻留在物理内存中”的虚拟地点范畴组成的,由于这些地点范畴总是驻留在内存中,因此任何时候都可以访谒它们,而不会招致页面错误。
4aDJ1W U{ \0⑥
换页池:系统空间中的一段虚拟内存区域,它可以被换入和换出系统。这两种内存池都位于系统地点空间部分,并且被映射到每个进程的虚拟地点空间中。51Testing软件测试网&vx9j(yj
i;lm
⑦ 共享内存:对付多个进程可见的内存,或者呈此刻多个进程虚拟地点空间中的内存。例如:如果两个进程使用了同样的DLL,那么只需将引用该DLL的代码页面加载到物理内存一次,然后所有映射了该DLL的进程之间共享这些页面。51Testing软件测试网5TNX[email protected] xeT-M
⑧ MDL(Memory
Descrīptor List)是一个布局体,用于描述一片内存区域中的所有物理内存页。51Testing软件测试网f`+\o?oy%s
51Testing软件测试网BN"|!vty
可能存在的性能问题
n*R&cX#Q%V1h4ce051Testing软件测试网#I6UA%l8xnE]S9oG
1、Memory\\Page
Reads/sec过高,连续大于5。
;| v3Uy @e)zh0
过多的页交换要使用大量的硬盘空间,很容易将导致将页交换内存不敷与导致页交换的磁盘瓶径混淆。这就需要我们在研究内存不敷不太明显的页交换的原因时,必需跟踪如下的磁盘使用情况计数器和内存计数器:Physical
Disk\\ % Disk Time、Physical Disk\\ Avg.Disk Queue Length、Memory\\Page
Reads/sec51Testing软件测试网8ohw NB7G\T
①如果Memory\\Page Reads/sec对照低,但Physical Disk\\% Disk Time and Physical Disk\\Avg.
Disk Queue Length计数器很高,表白磁盘有瓶颈。
F2_[a,[0 ②如果跟着Physical Disk\\Avg. Disk Queue
Length的增加,而Memory\Page Reads/sec并没有减少,表白有内存的瓶颈。51Testing软件测试网[email protected]gI+sN1Mxo
51Testing软件测试网Y,Omb u%i[
2、内存泄露
Q*ktz"C^(i6i"cD?6X!P`0 如果怀疑内存泄露,监视
Memory\\ Available Bytes 和 Memory\\ Committed Bytes,以不雅察看内存行为,并监视可能存在泄露内存的进程的
Process\\Private Bytes、Process\\Working Set和Process\\Handle
Count(Handle泄漏)。
vZU.Qp6P@zp4m0
如果怀疑是内核模式进程导致了泄露,则还应该监视 Memory\\Pool Paged Bytes、Process\\ Pool Paged
Bytes。(Memory\\Pool Paged Bytes与Process\\ Pool Nonpaged Bytes,有什么差别,等候奉告)。51Testing软件测试网4x7WWb;]8Rnw"|:I
可以通过PoolMon工具详细检察非换页池和换页池的详细使用情况。
MN#y!v
d0U9u0 备注:这里只是随便提一下。
各计数器理解及描述
|CH6l*aY051Testing软件测试网([email protected]`8c‘JJn5fz
1、Process\\Working
Set
{7Q2BAgEMt0含义:
w?MlOMB0q0进程事情集,是虚拟地点空间在物理内存中的那部分。包罗了一个进程内的各个线程引用过的页面,即:Task
Manager中的Mem Usage。
[
{+o5xalb0分析:
$H/PK{sf9u@+E0由于每个进程事情集中包罗了共享页面,所以Process\\Working
Set(_Total)值会大于实际的总进程内存使用量。
G7t9^2V{T0
si:wy l/LDZ o02、Process\\Private Bytes51Testing软件测试网6V&]
zNdKH
含义:51Testing软件测试网*r‘E5[*o
|+K
分配的私有虚拟内存总数,即私有的、已提交的虚拟内存使用量。即:Task Manager中的VM
Size。
wZ5PW,n6wY;}0分析:51Testing软件测试网;Oij[email protected]qRUz1e1c1j
内存泄露时表示的现象是私有虚拟内存的递增,而不是事情集巨细的递增。在某个点上,内存打点器会阻止一个进程继续增加物理内存巨细,但它可以继续增大它的虚拟内存巨细。51Testing软件测试网(a$O?A7Y)~`G
8S}X+{{jR$ET03、Memory\\Available MBytes
(Available Bytes、Available KBytes)
5dRv#@!I0含义:51Testing软件测试网A2s?oZ%S
Available
MBytes 是指以 MB 暗示的可用物理内存量,此内存能立刻分配给一个进程或系统使用。它是空闲列表、零列表和备用列表的巨细总和。51Testing软件测试网V5qw/s?m/JOo|U
分析:
51Testing软件测试网?C3p"b3{Rk9h
至少要有10%
的物理内存值,最低限度是4 MB。51Testing软件测试网rlwZ|:x
y
页面状态:51Testing软件测试网
PK,c$CDS!RUS
备用:页面原先属于某个事情集,但此刻被去除了。该页面自从最后一次被写到磁盘后一直未被改削过,PTE(Page
Table Entry)仍然指向该物理页面,不过已符号为无效的和正在转移中。
p&bwv
[0空闲:页面是空闲的,但它包罗了未出格指明的脏数据。(需要用零初始化,否则不能交给用户进程)
*_mO[email protected]$`2`
Q0零化:页面是空闲的,并且已经被零页面线程初始化为零了。
6Z\[email protected]
nGf1I:b{h0
%W%\0\;W:j$~Z$|0n04、Memory\\Page
Faults/sec
8y9Q?Qz‘c+gk*H0含义:51Testing软件测试网I#z?M+v.N Ee;d
Page
Faults/sec
是每秒钟堕落页面的平均数量。由于每个错误操纵中只有一个页面堕落,计算单位为每秒堕落页面数量,因此这也即是页面错误操纵的数量。这个计数器包孕硬错误(那些需要磁盘访谒的)和软错误(在物理内存的其他处所找到的错误页)。许多措置惩罚惩罚器可以在有大量软错误的情况下继续操纵。但是,硬错误可以导致明显的迟延,因为需要访谒磁盘。
1]o.g8MBf t%sY0
A8M[L4fl/]] F,N05、Memory\\Page
Reads/sec
‘Xk?g1]0lf7{&B0含义:
Z9S7GD8RI3x5n{|0Page Reads/sec
是读取磁盘以解析硬页面错误的次数。它显示读取操纵的数量,它并不考虑每个操纵的页面数量。当一个进程引用一个虚拟内存的页面,而此虚拟内存位于事情集以外或物理内存的其他位置,并且此页面必需从磁盘检索时,就会产生硬页面错误。此计数器是引起系统范畴内延迟的主要指示器。它包罗读取操纵以满足文件系统缓存(凡是由应用措施请求)和非缓存映射内存文件的错误。对照内存的值\\Pages Reads/sec 与内存的值\\Pages Input/sec 来决定每个操纵取读的平均页面数量。51Testing软件测试网0}w$E4H{
?1I
通俗含义:
U6a/^u$`\
_y0页的硬故障,Page/sec的子集,是为了解决硬错误,从硬盘读取的次数。51Testing软件测试网7v#U.E-F"En#C
分析:
J(~/L+xfF0阈值为>5,越低越好。大数值暗示磁盘读而不是缓存读。连续大于5的值,表白内存的读请求产生了较多的缺页中断(page
fault)。51Testing软件测试网?N8hJ
hA-m!H#l^
说明进程的Working
Set已经不够,使用硬盘来虚拟内存。此处为读得次数,不关心读取得页数,对照大的值表白内存呈现了瓶颈。
rE p&i#D_0
v+{"s4d+}pc‘{+j06、Memory\\Page
Writes/sec
^3o0dIR;F0含义:
cN$v8l9B,Q[G0Page Writes/sec
是指为了释放物理内存空间而将页面写入磁盘的速度。只有页面还在物理内存中时所做的变动才会写入磁盘,因此这些页面可能只保存数据而不保存代码。这个计数器显示写入操纵,不计数每个操纵中写入的页数。
c K!jgp0eA0
/U*Sf"oy@d"p?8G07、Memory\\Pages Input/sec51Testing软件测试网N
aAH9V|T3?0[
含义:
A-]p/` ^?E0Pages Input/sec
是以解析硬页面错误从磁盘读取的页数。当一个进程引用一个虚拟内存的页面,而此虚拟内存位于事情集以外或物理内存的其他位置,并且此页面必需从磁盘检索时,就会产生硬页面错误。当夜面产生错误时,系统测验考试将多个持续页面读入内存以丰裕操作取读操纵的长处。请对照
Memory\\Pages Input/sec 的值和 Memory\\Page Reads/sec 的值以便决定每个取读操纵读入内存的平均页面数量。51Testing软件测试网i)i#CUP\Zy
&d3Kf o1}[email protected]{08、Memory\\Pages
Output/sec
‘h‘I*v^2O;y#y.s0含义:51Testing软件测试网t.t-Mq‘G6w-at
Pages
Output/sec
是指为了释放物理内存空间而将页面写入磁盘的页数。只有在物理内存中变动时页面才会写回到磁盘上,因此页面可能只保存数据而不是代码。高速的页面输出可能暗示内存不敷。当物理内存不敷时,Windows
会将页面写回到磁盘以便释放空间。
n6LcT?{0
u dW z ] X09、Memory\\Page/sec 51Testing软件测试网g#z0{mEE8u
含义:
7I,lw7qR e)kL|-fy0Pages/sec
是指为解决硬页错误从磁盘读取或写入磁盘的页数。这个计数器是可以显示导致系统范畴延缓类型错误的主要指示器。它是 Memory\\Pages Input/sec 和
Memory\\Pages Output/sec 的总和。是用页数计算的,以便在不用做转换的情况下就可以同其他页计数如: Memory\\Page
Faults/sec 做对照,这个值包孕为满足错误而在文件系统缓存(凡是由应用措施请求)的非缓存映射内存文件中检索的页。
4EZp$d/L fcxt0分析:51Testing软件测试网!mvN_
hN‘C
一般如果pages/sec连续高于几百,那么您应该进一步研究页交换勾当。有可能需要增加内存,以减少换页的需求(你可以把这个数字乘以4k就得到由此引起的硬盘数据流量)
。Pages/sec 的值很大不必然表白内存有问题,而可能是运行使用内存映射文件的措施所致。 51Testing软件测试网7`Kf/F.IcmNS9lb
51Testing软件测试网;z7jGe2t!i Lo C
10、Memory\\ %
Committed Bytes In Use
‘wJnE~Q0含义:51Testing软件测试网){5Wk:K3I
}w)F
%Committed Bytes In Use 是 Memory\\Committed Bytes 与
Memory\\Commit Limit 之间的比值。Committed memory是已在页面文件中保存空间的在用物理内存。Commit Limit
是由页面文件的巨细而决定的。如果扩大了页面文件,该比例就会减小。51Testing软件测试网j[email protected]&B1Y
cRI‘a.I-J-Xat3o0※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
eX(EmW051Testing软件测试网NNxXnRw
11、Memory\\
Committed Bytes
!o
ov${l`qJp8^0含义:51Testing软件测试网,I+_.u,a/P$}0G
Committed
Bytes
是指已被提交的(不是保存的)虚拟内存字节数。此数并不必然代表页面文件的使用量,因为它包罗了物理内存中从未被换出过的私有提交页面。固然,如果一个进程完全长短驻留的,则它代表所使用的页面文件数量。
-h4|?KC0对应Task Manager的PF使用 (Current Commit
Charge) 。页面文件的使用量参见计数器:Paging File\\%Usage。51Testing软件测试网%T4M)T%o%n P
原文:
!X1AK@!p.W G!V!M:R0Number of bytes of
virtual (not reserved) memory that has been committed. This number doesn’t
necessarily represent page file usage because it includes private committed
pages in physical memory that have never been paged out. Rather, it represents
the amount of page file space that would be used if the process was completely
made nonresident.
m,cGd]Isn0分析:
k-NA m6v:[
c@Q&d0NT的内存分配给与了两步走的要领,首先,在虚地点空间上保存一段空间,这时操纵系统并没有分配物理内存,只是保存了一段地点。然后,再提交这段空间,这时操纵系统才会分配物理内存。51Testing软件测试网"@+^?_:B1r
Windows的地点空间有三种状态。一种是COMMITED,表白该地点空间已和一块内存相联系;一种是RESERVED,表白该地点空间虽未与一块内存相联系但此后可能会用到,需要保存;一种是FREE,表白该地点空间与内存没有联系。51Testing软件测试网)`f3JtKz/Td
51Testing软件测试网8KP?h(F#mFv#|
12、Memory\\
Commit Limit
l_ Wc3]
z9CS0含义:
xi\A*CU@v0Commit Limit
是指无需扩展页面文件就可以提交的虚拟内存字节数。51Testing软件测试网@E9p-b9a:Z)XY
原文:
#p0~ A0hP‘xe5On0Number of bytes of
virtual memory that can be committed without having to extend the paging files;
if the paging files can be extended, this limit is not hard. 51Testing软件测试网j-q_7S?t
To use a reserved
region of address space, you must allocate physical storage and then map this
storage to the reserved region. This process is called committing physical
storage. Physical storage is always committed in pages.