Chinaunix首页 | 论坛 | 博客
  • 博客访问: 285639
  • 博文数量: 70
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 531
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-12 20:22
个人简介

1.01^365=37.8 0.99^365=0.03

文章分类

全部博文(70)

文章存档

2017年(9)

2016年(4)

2015年(14)

2014年(43)

我的朋友

分类: LINUX

2014-07-22 21:49:40

一:为了方便扩展和管理交换分区本人做了如下操作,仅供参考:

      1. 从vg00中创建LV,大小分配为400M     
            #lvcreate -n swap03 -L 400M vg00
 
      2. 把逻辑卷swap03加到swap中
            #swapon /dev/vg00/swap02
 
      3. verify swap
           #swapinfo -atm
 
     4. 从swap中去掉逻辑卷swap03
           #swapoff /dev/vg00/swap03


在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)的功能,就非常有必要了。

要理解伪交换,首先得清楚交换区的概念和HP-UX的交换机制!
交换区,就是系统物理内存不足时,OS用来临时存放物理内存的的一部分数据,从而腾出更多的物理内存空间!
HP-UX的交换机制:系统每启动一个进程,都会在交换区预留一定的空间(等同于该进程使用物理内存的大小),以防内存不足时,有足够的交换区来临时存放数据,但不一定真正使用。但是交换区预留以后,不管是不是真的被使用,就不能再被其它进程预留(使用),除非该进程运行完毕自然释放。
打个比方,酒店里客人预定了座位,那么这个座位就不能再接受别人的预定,除非客人打电话取消预定。当然,即使客人预定了不代表就一定来吃。
和交换区预留不一样的是:座位预定了通常客人是要来真正使用的,而交换区预留以后通常是不使用的。
这种机制会导致的一个问题是:如果内存很大,可能会导致内存浪费!为什么呢?
假设系统物理内存是8G,那么按照常规的设置,交换区大小是内存的1-2倍,就是8-16G!但是,通常的情况是,购买了大内存,就是为了避免内存不足产生交换,这种状况下,交换区是很少有机会做真正的数据交换的。有些客户会把交换区设为4G或者更少到2G(这完全有可能;节省存储空间啊)!
后果是,随着新进程的不断启动,当交换区被预留完了以后,系统就不能再启动新的进程;而此时其实物理内存可能还有3G或者更多的空余,却什么也不能干了!
为了解决这个矛盾,HP-UX推出“伪交换区”的概念!就是当系统启用伪交换以后,系统会默认为交换区的总数=物理内存的75%+其它交换区的总数。而这个75%的伪交换区其实是不存在的(欺骗):不在内存、不在硬盘或者任何文件系统中。意思就是说,当真正的交换区用光了还要启动新进程时,告诉系统,我的交换区还多着呢,该启动谁尽管启动......
是否启用伪交换,可以通过系统内核参数swapmem_on来设置,1表示启用,0表示不启用。
通常,实际交换区的大小大于或等于物理内存大小时,这个参数启不启用没什么影响;否则建议启用伪交换。
但是,注意有些应用程序(很少),当启用伪交换时,性能可能会下降!

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