Paging Space的管理机制

更新时间:2023-11-18 00:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Paging Space的管理机制

在AIX 4.3.2及以后版本中,操作系统提供了3种 Paging Space的管理机制: Deferred Page Space Allocation (DPSA) ? Late Page Space Allocation (LPSA) ? Early Page Space Allocation (EPSA)

?

(1) Deferred Page Space Allocation (DPSA)

在AIX4.3.2之后,DPSA是系统默认的Paging Space的管理机制。在这种机制下,系统不会为进程保留任何的 page 页面,直到系统确认确实需要将内存中的页面 page out 到Paging Space中,才会把Paging Space的页面分配给该进程。

DPSA是AIX 4.3.2及以后版本中所使用的默认机制,它通常适用于配有很大容量RAM 的系统,因为它可以减少很多Paging Space资源的浪费。 这也是为什么当前的系统看不到大量paging space分配的原因. (2) Late Page Space Allocation (LPSA)

在AIX 4.2.1之后, 4.3.2之前,操作系统默认使用 LPSA 机制。这种机制是指当进程启动后,系统并不在Paging Space中为该进程保留相应的页面。只有当该进程的实际内存页面被修改过后,才会在Paging Space中为这些被修改过的页面申请空间。其中” 内存页面被修改”的含义:例如通过bzero()函数修改分配的内存的时候,或者调用calloc(),或者内存被初始化某些值的时候, 系统会为这些working page在paging space中保留相应的页面.

这种机制在一定程度上减少了Paging Space的空间浪费,但是对系统也存在一定的风险。比如,当一些后起的进程用了几乎全部的Paging Space后,由于先起的进程并没有保留足够的Paging Space空间用于进程的page out操作,会导致该进程被杀掉。

(3) Early Page Space Allocation (EPSA)

在AIX系统中,当Paging Space的使用率达到一定百分比时,系统就无法将需要 page out的页面写到Paging Space中,这时候,该进程就很可能被杀掉。为了避免这种情况的发生,EPSA机制会保证当进程被启动时,在Paging Space中先申请一块页面空间,该空间大小与该进程所需要占用的实际内存的大小一致 (将环境变量 PSALLOC设为early,也就是“export PSALLOC=early”)。这样就保证当进程使 用malloc()调用的同时,在Paging Space中有相应的空间保留给该进程,从而保 证该进程的page out 操作。

这种机制虽然可以保证现有的进程安全,但由于很多被保留的页面空间并没有被用到,造成了非常大的空间浪费。同时,也需要Paging Space的大小比实际内存值要大很多。

EPSA在以前版本操作系统中使用比较多,主要的原因当时的系统物理内存比较少,一般都少于512M,在少内存的情况下EPSA会使系统进程的调度更加安全.

(4) 相关命令

?

查看当前系统采用的paging space的机制

# vmo -a |grep defps defps = 1

defps=1表示采用的是DPSA,如果defps=0表示采用的是LPSA.

?

修改paging space的机制,采用LPSA

# vmo -o defps=0

?

查看defps属性

当前值是1,缺省值是1,启动时的值是1, 取值范围是0-1,类型是动态可以修改的. # vmo -L defps

NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES

--------------------------------------------------------------------------------

defps 1 1 1 0 1 boolean D

--------------------------------------------------------------------------------

?

vmo Tips

VMO Man page

-L [ Tunable ]

Lists the characteristics of one or all tunables, one per line, using the following format:

NAME CUR DEF BOOT MIN MAX UNIT TYPE DEPENDENCIES

-------------------------------------------------------------------------------- memory_frames 128K 128K 4KB pages S --------------------------------------------------------------------------------

maxfree 1088 1088 130 16 200K 4KB pages D minfree memory_frames

--------------------------------------------------------------------------------

minfree 960 960 122 8 200K 4KB pages D maxfree memory_frames

-------------------------------------------------------------------------------- ... where:

CUR = current value DEF = default value BOOT = reboot value MIN = minimal value MAX = maximum value UNIT = tunable unit of measure

TYPE = parameter type: D (for Dynamic), S (for Static), R for Reboot), B (for Bosboot), M (for Mount), I (for Incremental), C (for Connect), and d (for Deprecated)

DEPENDENCIES = list of dependent tunable parameters, one per line

Paging-space thresholds tuning

如果paging space少到一定的空间,操作系统将会通过先告警进程释放paging space,最后可能会kill进程.相关的两个参数npswarn和npskill: # vmo -a |grep npswarn npswarn = 249856 # vmo -h npswarn Help for tunable npswarn:

Specifies the number of free paging-space pages at which the operating system begins sending the SIGDANGER signal to processes. Default: MAX (512,4*npskill). 大于0小于系统paging space的数目. Increase the value if you experience processes being killed because of low paging space.

# vmo -a |grep npskill npskill = 62464 # vmo -h npskill Help for tunable npskill:

Specifies the number of free paging-space pages at which the operating system begins killing processes. Default: MAX (64,

number_of_paging_space_pages/128). 大于0小于系统paging space的数目.

Paging space garbage collection

AIX 5.3之后可以利用paging space garbage collection机制来free up paging space. 只作用于deferred page space allocation policy.

?

方法一: re-pagein 后的垃圾收集

The method of freeing a paging-space disk block after a page has been read back into memory from paging space is employed by default. 相关参数: npsrpgmin: 停止re-pagein垃圾收集的free paging space blocks数目 npsrpgmax: 开始re-pagein垃圾收集的free paging space blocks数目

?

方法二: scrubbing memory

Another method of paging space garbage collection is by scrubbing memory, which is implemented with the psgc kernel process. The psgc kernel process frees up paging space disk blocks for modified memory pages that have not yet been paged out again or for unmodified pages for which a paging space disk block exists. 相关的参数:

npsscrubmin 停止scrubbing内存的free paging space blocks数目 npsscrubmax: 开始scrubbing内存的free paging space blocks数目 # vmo -a |grep nps npskill = 62464 npsrpgmax = 499712 npsrpgmin = 374784 npsscrubmax = 499712 npsscrubmin = 374784 npswarn = 249856

Paging Space的创建原则

AIX中Paging Space大小确定的指导原则如下(理论上):

系统实际内存小于64MB, paging space= 2 * RAM ;

? 系统实际内存在 64MB to 256MB 之间, Page Space = RAM size + 16MB ;

? 系统实际内存大于 256MB , Page Space = 512 + ( RAM - 256 ) * 1.25 ; ? 当内存超过4GB时,则需要根据实际情况来定,一般可初始3GB, 然后观察paging space的使用情况,如果使用率超过70%, 则需要增加paging space 。

?

hdisk1 13.5 320.0 51.5 188.0 132.0 Steals 257 % Comp 97.7 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 131 % Noncomp 2.2 PgspOut 82 % Client 2.2 Name PID CPU% PgSp Owner PageIn 172

sqlplus 340060 53.5 3.1 oracle PageOut 88 PAGING SPACE java 204880 23.9 131.1 ebaogs Sios 360 Size,MB 24576 java 589952 15.3 285.7 oas10g % Used 1.1 dtgreet 82044 0.5 1.3 root NFS (calls/sec) % Free 99.9

启动多个exp进程:

Disk Busy% KBPS TPS KB-Read KB-Writ PAGING MEMORY hdisk1 0.0 24.0 1.5 0.0 24.0 Faults 1 Real,MB 4816 hdisk0 0.5 2.0 0.5 2.0 0.0 Steals 0 % Comp 97.7 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 0 % Noncomp 2.2 PgspOut 0 % Client 2.2 Name PID CPU% PgSp Owner PageIn 0

exp 180474 94.9 353.4 oracle PageOut 6 PAGING SPACE dtgreet 82044 0.5 1.3 root Sios 0 Size,MB 24576 java 589952 0.5 327.4 oas10g % Used 8.8 topas 827632 0.3 1.6 root NFS (calls/sec) % Free 92.2

关闭所有exp后:

Disk Busy% KBPS TPS KB-Read KB-Writ PAGING MEMORY hdisk1 5.0 24.0 1.5 0.0 24.0 Faults 0 Real,MB 4816 hdisk0 0.0 0.0 0.0 0.0 0.0 Steals 0 % Comp 75.5 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 0 % Noncomp 3.3 PgspOut 0 % Client 3.3 Name PID CPU% PgSp Owner PageIn 0

dtgreet 82044 0.5 1.3 root PageOut 6 PAGING SPACE endpoint 823368 0.4 1.2 root Sios 6 Size,MB 24576 java 589952 0.2 327.4 oas10g % Used 8.8 topas 655502 0.2 1.6 root NFS (calls/sec) % Free 92.2

关闭WEBLOGIC:

Disk Busy% KBPS TPS KB-Read KB-Writ PAGING MEMORY hdisk1 1.0 26.0 2.0 2.0 24.0 Faults 2 Real,MB 4816 hdisk0 1.0 4.0 1.0 4.0 0.0 Steals 0 % Comp 55.5 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 1 % Noncomp 3.3 PgspOut 0 % Client 3.3

Name PID CPU% PgSp Owner PageIn 1

endpoint 823368 0.3 1.2 root PageOut 5 PAGING SPACE java 589952 0.3 327.4 oas10g Sios 7 Size,MB 24576 topas 655514 0.2 1.6 root % Used 6.6 oracle 712870 0.1 3.8 oracle NFS (calls/sec) % Free 94.4

关闭OAS,只剩于Oracle时:

Disk Busy% KBPS TPS KB-Read KB-Writ PAGING MEMORY hdisk1 1.0 26.0 2.0 2.0 24.0 Faults 2 Real,MB 4816 hdisk0 1.0 4.0 1.0 4.0 0.0 Steals 0 % Comp 55.5 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 1 % Noncomp 3.3 PgspOut 0 % Client 3.3 Name PID CPU% PgSp Owner PageIn 1

endpoint 823368 0.3 1.2 root PageOut 5 PAGING SPACE java 589952 0.3 327.4 oas10g Sios 7 Size,MB 24576 topas 655514 0.2 1.6 root % Used 6.6 oracle 712870 0.1 3.8 oracle NFS (calls/sec) % Free 94.4

关闭Oracle和listener后(注意:listener不关闭,也会占用1.1%的SWAP, 25M):

Disk Busy% KBPS TPS KB-Read KB-Writ PAGING MEMORY hdisk1 0.0 0.0 0.0 0.0 0.0 Faults 0 Real,MB 4816 hdisk0 0.0 0.0 0.0 0.0 0.0 Steals 0 % Comp 27.7 cd0 0.0 0.0 0.0 0.0 0.0 PgspIn 0 % Noncomp 4.4 PgspOut 0 % Client 4.4 Name PID CPU% PgSp Owner PageIn 0

topas 716806 0.1 1.4 root PageOut 0 PAGING SPACE topas 794624 0.1 1.4 oas10g Sios 0 Size,MB 24576 xmgc 45078 0.0 0.1 root % Used 1.1 nfsd 335998 0.0 0.3 root NFS (calls/sec) % Free 99.9

总结:

1. AIX在为内存分配时, 当物理内存有剩余, 则申请未用内存;

2. 当物理内存不足时, 新进程申请时, 则需要将部分非活动内存pagesp到swap中, 并且新进程将使用腾出后的物理内存, 就是与老进程共享部分内存地址;

3. 当新进程结束后, 只释放该进程占用的物理内存和SWAP, 如果该进程没有耗用SWAP, 则会出现: 物理内存有空闲, 但SWAP没有减少.

4. 物理内存不足情况下, 新进程开始时, 所有应用程序的部分进程都会有部分物理内存被释放;

5. Paging Space的页面空间被使用后,将被保留给该内存页面,即使该页面已经被写回到内存中。

6. SWAP释放的条件: 结束占用SWAP的进程;线程/进程相关的内存被释放 -- free();

SWAP剩余值小于npsscrubmax或npsrpgmax. PHASE Oracle/oas都运行 关闭OAS后 再关闭Oracle后 启动Oracle和OAS和weblogic后 启动多个exp进程 关闭所有exp后 关闭WEBLOGIC 关闭OAS,只剩Oracle时 关闭Oracle和listener后 100% 100% 78.80% 58.80% 58.80% 32.10% MEMORY-4G PAGING SPACE -24G 100% 48.80% 41% 0.10% 8.80% 8.80% 6.60% 6.60% 0.10% 8.80% 7.70% 0.10% 注意: 被Page out出去的数据, 如果有进程需要再次reference的时候, 将page fault, 然后通过page in再次写入到内存.

ORACLE: 2G OAS:512M

WebLogic: 512M OS: 1G

主机物理内存: 4G SWAP:24G

本文来源:https://www.bwwdw.com/article/vjvv.html

Top