1.
在一个典型的系统中,安装的物理内存大小不够保存所有的程序和数据,使出现了虚拟内存的概念,这里系统使用第二存储介质(一般是磁盘)来保存被CPU使用的程序和数据。
用于临时数据存储的部分磁盘叫做交换区。虽然在一个给定的时间内有很多进程运行,但严格地说,只有一个进程被CPU执行。在物理内存不足的情况下,系统可能把一些装入物理内存的程序导出到交换区,为正在运行的程序创建空间。当这个进程的时间片过期,与这个进程相关的代码和数据被交换出来,而其他进程开始使用相同的物理内存。
HP-UX使用精细复杂的内存管理系统来满足所有进程的内存需求。
根据一定的标准,它决定哪个进程留在主内存中而哪个内存需要被交换。这个系统总是确保主内存中一些空间有效,用来创建新进程。
交换空间的数量根据安装了多少物理内存以及运行什么程序对于不同的安装时不同的。
2.
系统内存实际是安装在一个系统中的物理内存。
当引导系统时,它检测所有安装的内存并显示全部内存的信息。
可以用dmesg命令提权全部内存的信息。
当引导系统时,这些内存的一些被内核代码和数据结构使用,剩余内存是有效内存。
放有所有子系统和设备驱动程序的大内核将占用较多的内存,所以说配置内核相当有必要。
内核参数也影响将用于内核数据结构的内存大小。
有效内存供用户和系统进程的装入。
一个页是是作为单位的最小内存,一个典型的页为4K。
3.
swapper和vhand守护进程用于交换空间的管理。
一旦系统启动并且内核被装入内存,两个守护进程将被启动。它们是swapper和vhand守护进程。
物理存储区域被划分成页并且这些页记录保存在一个页表中。只要这些可用页大于一个预定义的最小限制,就没有交换行为发生。这个阈值成为Lotsfree。一旦这个阈值限制被超过而且一些进程需要更多的内存,vhand守护进程就被激活并开始使用交换区。
如果一个当前在交换区中的页被一个进程引用,一个页错误发生并且vhand守护进程把该页带回主内存。因此,它必须通过拷贝其他页到交换区来使他们可用。如果系统安装了很少的物理内存,则会发生vhand守护进程把数据移入或移出交换区时过载。这是磁盘持续被使用而且vhand占用了大部分系统事件造成的,这种情况叫做系统颠簸。
如果减少运行进程的数量,颠簸就可以避免。
一些临时不用的进程应交换出内存,物理内存只包含可以平稳运行的进程。当一些在运行的进程完成时,以前无用的进程可以被带回内存。swapper守护进程正是用于这个目的。
swapper守护进程检查叫做desfree的内存阈值,当内存低于这个阈值,它假设颠簸已经开始。它接着阻碍一些进程并把它们挂起。这些进程申请的内存页被交换出内存并在页表中标记为可用。当条件合适再被激活。
为了避免交换区溢出,系统就给每一个创建的进程分配交换空间。
如果所有的交换空间被分配,系统就不允许创建新进程。有可能给一个进程预留的交换空间永远都不会用到。
如果一些进程在运行过程中需要更多的内存,系统将终止需要的交换空间超过该进程可用空间的进程。
4.
交换空间包括设备交换区和文件系统交换区两种类型。
设备交换空间:
如果你使用整个磁盘作为交换空间,或在LVM中的使用整个文件系统,它被叫做设备交换。
设备交换必须如下方式使用:
(1)如果你在磁盘设备c0t5d0的后200M字节空间作为交换区并且它其余部分用于文件系统:
newfs -R 200 /dev/rdsk/c0t5d0
在保留该磁盘文件系统的情况下,使用swapon带-e选项启用保留空间作为交换区:
swapon -e /dev/dsk/c0t5d0
若要覆盖该磁盘上的文件系统,使用-f选项:
swapon -f /dev/dsk/c0t5d0
(2)在使用一个完整的磁盘做设备区时,你可以直接使用swapon命令启用该磁盘用于交换:
swapon /dev/dsk/c0t5do
(3)如果使用LVM,可以使整个逻辑卷作为设备交换,创建逻辑卷后使用如下命令:
swapon /dev/vg03/lvol4
如果一个逻辑卷已经包含一个文件系统,可以带-f选项强制创建交换区。
设备交换比文件系统交换更有效率,它应该创建在一个有更好的吞吐能力的磁盘上面。
文件系统交换区:
文件系统交换区可以同文件系统上的其他文件共存。
它可以动态配置,当设备交换区满的时候被使用,一般连接在一个较低的优先级。
你可以使用文件系统中的一个目录做为文件系统交换,在目录上面设置上限。
为了创建文件系统交换,你需要提供创建交换空间的文件系统的挂载点。
交换空间在文件系统上一个叫做paging的目录上创建。
例如:在一个挂载点为/myfs目录上的文件系统中创建文件系统交换,设置最大200M的限制
swapon -l 200M /myswap #用于交换空间的目录是/myswap/paging
当创建了一个文件系统,在系统使用它的交换空间时,它不能被删除。
在使用了swapon命令后,交换区被创建,它立刻变为对系统可用。
主交换空间与二级交换空间
主交换是在引导时有效的交换空间,至少一个主交换区必须有效,它一般位于作为系统主引导设备的磁盘上。
如果使用LVM,你可以指定一个逻辑卷作为主设备交换。
一个文件系统交换就是一个二级交换区,也可以使用其他设备交换区作为二级交换空间。
5.
为了在启动的时候激活交换区,你必须把交换区的信息放入/etc/fstab文件。
使用swapon -a可以激活这个文件中的所有交换系统命令。
使用LVM卷组vg03中的逻辑卷lvol3的设备交换在/etc/fstab中有如下显示的一个命令:
/dev/vg03/lvol3 . swap defaults 0 0
注意这一行没有声明挂载点,一个点放在挂载点列中。
如果是一个整盘作为交换空间:
/dev/dsk/c2t5d0 . swap defaults 0 0
在一个文件系统交换中,你不能声明块设备文件,取而代之的是一个点,但可以声明挂载点:
. /myfs swapfs lim=200M 0 0
6.
swapinfo命令显示有关设备交换和文件系统交换的统计信息。
-d选项只显示设备交换区
-f选项只显示文件系统交换区
-m选项以M字节代替千字节显示
pt选项在输出的结尾添加一个总计行,显示物理内存和交换区的总量
7.
交换空间的优先级
每一个交换区都有一个优先级,是一个0到10的数字,0最高,依次递减。
在有多个交换区的系统中,最高优先级的交换区最先被使用。
在安装了不同性能的多个硬盘的系统中,在性能最好的磁盘上保存优先级最高的交换空间是一个好办法。
如果交换区有同样的优先级,它们采用一个循环复用的方式,效果最好的是同一类型的硬盘。
设备交换区在其他条件相同下比文件系统交换优先使用。
swapon -p 3 /dev/dsk/c0t5d0 #以优先级3创建一个交换空间。