Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79869
  • 博文数量: 25
  • 博客积分: 302
  • 博客等级: 二等列兵
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-08 00:44
文章分类

全部博文(25)

文章存档

2012年(16)

2011年(9)

我的朋友

分类: 系统运维

2012-05-29 16:41:47

我们知道在中,是一项很重要的设备, kernel(内

  核)需要利用 来管理。和内存页面一样, Paging

  Space也是以4KB为单位,当实际内存数的空闲值低于一定数量以后,系统需要把

  实际内存中的某些计算页面(Computation Page)写回到中(page

  out),以便释放出实际内存页面用于其他程序。

  在 4.3.2及以后版本中,提供了3 的管理机制。

  分别为:

  Early Page Space Allocation (EPSA)

  Late Page Space Allocation (LPSA)

  Deferred Page Space Allocation (DPSA)

  Early Page Space Allocation

  在系统中,当的使用率达到一定百分比时,系统就无法将需要

  page out的页面写到中,这时候,该进程就很可能被杀掉。为了避免

  这种情况的发生,EPSA机制会保证当进程被启动时,在中先申请一

  块页面空间,该空间大小与该进程所需要占用的实际内存的大小一致 (将环境变量

  PSALLOC设为early,也就是“export PSALLOC=early”)。这样就保证当进程使

  用malloc()调用的同时,在中有相应的空间保留给该进程,从而保

  证该进程的page out 操作。

  这种机制虽然可以保证现有的进程安全,但由于很多被保留的页面空间并没有被用

  到,造成了非常大的空间浪费。同时,也需要的大小比实际内存值要

  大很多。

  Late Page Space Allocation

  在 4.2.1之后, 4.3.2之前,默认使用 LPSA 机制。这种机制是指当进程

  启动后,系统并不在中为该进程保留相应的页面。只有当该进程的实

  际内存页面被修改过后,才会在中为这些被修改过的页面申请空间。

  这种机制在一定程度上减少了的空间浪费,但是对系统也存在一定的

  风险。比如,当一些后起的进程用了几乎全部的后,由于先起的进程

  并没有保留足够的空间用于进程的page out操作,会导致该进程被杀

  掉。

  Deferred Page Space Allocation

  在4.3.2之后,DPSA是系统默认的的管理机制。在这种机制下,系

  统不会为进程保留任何的 page 页面,直到系统确认确实需要将内存中的页面 page

  out 中,才会把的页面分配给该进程。这种机制不会

  造成的空间浪费,但和LPSA一样,这种机制也给系统带来了相同的

  风险。

  DPSA 432及以后版本中所使用的默认机制,它通常适用于配有很大容量RAM

  的系统,因为它可以减少很多资源的浪费。

  对于RAM容量不是很大(比如小于2GB)的系统,用户可以采用LPSAEPSA

  制。用 “/usr/samples/kernel/vmtune -d 0” 命令可以停止使用DPSA,而使用LPSA

  用 “/usr/samples/kernel/vmtune -d 0” 命令加上“export PSALLOC=early”命令可以停止使用DPSA,而使用EPSA

  用 “/usr/samples/kernel/vmtune -d 1” 命令可以激活DPSA

  的页面释放

  在中,当内存中的页面被page到了中以后,那么这一块

  的页面空间将被保留给该内存页面,即使该页面已经被写回到内存

  中。因此,用lsps命令看到的的使用率可能并不能真实反映真正位于

   中的页面数,因为有些页面可能已经写回到了内存中。

  如果写回到内存中的页面是线程的工作存储页面(Working Storage),那么随着该线

  程的退出或者是相关的内存被释放 -- free()中的相应页面块也才会

  被释放。

阅读(1451) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~