首页 > 技术文档 > kernel参数:swapmem_on的作用
2011
02-17

kernel参数:swapmem_on的作用

  经验之谈:如果小型机配置的内存比较大,那么建议将swapmem_on置为1。其作用是打开pseudo-swap(伪交换区)功能。如果swapmem_on的值为0,表明没有打开pseudo-swap(伪交换区)功能。
 
  以下的内容将会牵涉到两个概念:
  1. 交换区(swap)
  2. 伪交换区(pseudo-swap)

  如果对这两个概念不清楚,可以去查找相关资料。这里就不详细说明了。
 
  在HP-UX中,有两个后台守护进程对交换区(swap)进行管理,这两个守护进程就是vhand和swapper。

  简单来说,vhand这个进程会监控内存的使用状况,当内存的值低于一个叫做lossfree的临界值的时候,vhand进程就会开始工作。它会将最近没有访问过的内存页面调度到交换区(swap)中,这就是有名的page-out。

  当系统的应用对内存的要求很高的时候,这就可能会产生一个问题:vhand进程可能会经常作page-out的动作,如果太频繁了,就会影响系统的性能。这个因为频繁page-out产生的性能大幅度下降的现象,叫做thrashing——此时可以考虑增加内存来提高系统的性能。

  而swapper这个守护进程是在系统发生thrashing时或内存的值低于另外一个叫做minfree的临界值的时候被激活的。此时swapper会将一些进程置为非激活的状态,来降低系统的繁忙度。当swapper监控到内存的值在minfree之上或系统没有发生thrashing时,系统才会重新激活那些非激活的进程。
 
  而实际应用当中。用户的系统可能会遇到这样的情况:系统要运行一个程序,而这个程序需要内存的大小为10M,此时,内存剩余30M,而swap空间剩下5M,那么该程序会在这个时候启动吗?答案是不会启动。因为系统发现swap小于程序需要的内存大小,虽然这个时候有足够的内存,程序仍然不会启动。

  因此,为了解决这样的问题,就有了伪交换区(pseudo-swap)的概念。那么伪交换区(pseudo-swap)的大小是如何计算的呢?以下是一个伪交换区(pseudo-swap)最大值的计算公式:

        伪交换区(pseudo-swap)=交换区(swap)+(3*内存大小/4)

  这样,系统要启动一个程序,就会察看内存的大小和伪交换区(pseudo-swap)的大小,由这个公式可以知道,伪交换区(pseudo-swap)始终是大于内存的大小的。只要有足够的内存,程序就会启动。这就避免了以上尴尬的情况。

  而实际上,伪交换区(pseudo-swap)其实并没有占用任何硬盘的空间,它仅仅是计算出来的“伪空间”。
 
  回到最初的经验之谈,为什么对于大内存的系统来说,建议设置swapmem_on为1呢?因为根据经验来说,swap一般会设定为内存的2倍。而对于现在很多系统来多,都配置了8G、16G的大内存,那么此时要分配32G的swap空间?此时,一般都会swap的大小等同于内存的大小。此时,打开伪交换区(pseudo-swap)的功能,就非常有必要了。

最后编辑:
作者:北街
身高八尺,腰围也是八尺!
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

kernel参数:swapmem_on的作用》有 6 条评论

  1. 北街 说:

    @卢松松 HP小型机的核心参数~哈哈
    @七七 碰到行家了~呵呵

  2. 这个不是很懂,支持一下

  3. 丛林 说:

    实话实说..我看不懂..

  4. 七七 说:

    经验之谈,支持下!

  5. 卢松松 说:

    你说的是什么东西啊?怎么没个介绍呢?

  6. 软件盒子 说:

    这个不懂,坐沙发

留下一个回复

你的email不会被公开。

This site uses Akismet to reduce spam. Learn how your comment data is processed.