交换区(swap)是存在于高速设 备上的一块区域,是虚拟内存系统重要的组成部分。通过交换区,我们不再局限于有限的物理内存空间,理论上可以无限地扩大虚拟内存系统,从而运行更多的程 序,进行更多的业务交易,更充分地发挥硬件资源。交换区采用换入换出技术和存储器间互相交换进程或数据页面。根据一定的调度原则,内存中部分不常用的进程 或数据页定期交换到交换区中,以便为需要运行的程序留出更多的可用空间。交换出去的进程或数据页根据需要时再交换进来,这样一来就实现了大量并发进程的管 理。不适当的交换区设置不仅使换页守护进程忙于交换页面进出而消耗时间,而且使进程运行的速度、系统效率都大大降低,很大程度上影响了的性能。当前,应用程序的日益庞大,运行业务的急剧增加,高性能如Informix Online Dynamic Server为响应对数据的快速存取而使用的共享内存技术等,都对有限的物理内存空间提出了更高的要求,因此实施对交换区的有效管理具有重要作用。
交换区容量的计算
交换区一般在操作系统初始安装时要求设定,大多数程序要求最少所需的交换区容量以正常运转。一般来说,当物理内存不超过256M时,主交换区容 量设置为内存的两倍,超过256M时,则选择与物理内存的容量相同。操作系统安装完毕后,随着应用程序的不断增加和业务的变化,原有的交换区设置可能满足 不了需要,对系统的性能也产生影响,系统管理员可增加新的交换区作为辅助交换区与主交换区配套使用。管理员还应经常监视交换区的使用情况,根据需要及时作 出必要的调整。
交换区的类型
交换区分主要分以下四种类型:
1.设备交换
即使用连续物理空间的整个或部分磁盘区域作为交换区,这样速度比较快。在-UX中使用先进的逻辑卷技术实现对物理磁盘的动态可伸缩管理,因此管理员可使用一个或多个逻辑卷作为设备交换,而在SCO OpenServer中,则使用占据一定磁盘空间区域的块设备作为设备交换。
2.文件系统交换
文件系统交换是一种辅交换,仅在设备交换不敷使用时才被考虑以满足换页需求,特点是配置简单方便并可动态设置。因为文件系统交换只使用它需要的 部分文件系统,所以使用空间的大小是变化的,同时该文件系统中还有许多应用程序和数据需要频繁存取,因而很大程度上降低了系统运行的效率。管理员可将文件 系统交换限制在一个固定的范围内以防止它占用不必要的空间,并且最好建立在较少使用的文件系统上。
对系统而言,当启动文件系统交换时,将在文件系统的根目录下创建"/paging"目录,文件系统为被使用的每一个交换块都创建一个文件,交换块默认为2MB。
3.主交换
系统启动时至少需要一个设备交换可用,这就是主交换区域,默认与root文件系统共存于同一个磁盘中。
4.辅交换
指主交换之外的其他交换。文件系统交换总是辅交换,如果使用设备交换作为辅交换,尽量设定在非root文件系统盘上以获得更好的性能。辅交换可以在UNIX启动时自动启用或在系统运行时动态增加。
交换区动态设置
现实情况中我们经常遇到因操作系统安装时交换区配置不当而无法满足随后日益增长的应用需要,重新安装操作系统不仅费时,还会造成一定程度的业务 风险,所以并不可取。大多数UNIX系统都提供了通过命令行实现交换区动态设置的方法,管理员应熟知了解。HP-UX中使用的命令是swapon,SCO OpenServer中使用的命令是swap。以下举例说明:
1.对于HP-UX10.20/11.00:
# swapon -p 1 -f /dev/vg05/lvol7(启用一个逻辑卷作为设备交换区使用,-p设置了该交换区的优先权, -f表示强制覆盖原有文件系统结构)
# swapon -f /dev/dsk/c1t6d0(启用整块磁盘作为设备交换区使用)
# swapon -p 4 -l 50M /fs1 (在文件系统/fs1上建立交换区,该交换区的优先权为4,最多使用50M的空间)
2.对于SCO OpenServer 3.X/5.X:
# swap -a /dev/swap1(启用一个逻辑设备作为设备交换区使用,命名为swap1)
# swap -a /dev/dsk/1s0(启用整块物理盘作为设备交换区使用)
# swap -a /dev/dsk/1s1 100 100000(启用物理盘的一块区域作为设备交换区使用,100、100000表示偏移值和容量,单位为块,即512字节,所以实际容量为50M)
# swap -a /tmp/swaptmp 64000(在普通文件/tmp/swaptmp上建立交换区,容量为32M)
监控交换区的使用情况
业务总是处于一定的变化和发展中,因此管理员需要定期监控交换区的使用情况,如果可用容量不足,就要进行合理的增加。在HP-UX系统中,常用 swapinfo来监控交换区的使用状况, 在SCO OpenServer中则使用swap命令,它们均可显示所有的交换区信息。HP-UX更以百分比的形式直观显示使用状况,如果使用比超过80%,管理员 要及时分析原因,制定策略,谨慎调整,确保所有用户均可正常使用他们的应用程序,也使整个系统处于良好的运行状态。
交换区的优先权设置
在HP-UX中设置交换区时指定数字0-10作为可用的优先权值,默认值是1。数字越小,优先权越高,即优先被操作系统使用。如果设备交换与文 件系统交换的优先权相同,设备交换先于文件系统交换使用。建议对所有的设备交换都设置相同的优先权,这样可以并行处理多个交换请求。因为减少了磁头的来回 移动,系统性能得以迅速提高。
选用交换区的指导方针
1.对于设备交换
(1)尽量在多个磁盘上建立多个交换区。实践表明,两个在不同磁盘上的交换区从性能上要优于一个同样大小空间的交换区在一个磁盘上。处于同样考虑,不要在一个磁盘上建立多个交换区段。
(2)分布在多个磁盘上的多个交换区要置于相同的优先权,从而实现以交叉存取的方式并列使用。
(3)为获取最佳性能,应在多个磁盘上建立多个相同大小的设备交换区,否则当所有其他较小的交换区的空间被用完时,大的交换区就是唯一可以使用的,无法进行交叉存取。
(4)交换区尽量建立在运转速度快的磁盘上。在一定程度物理内存大于操作系统可管理的有效内存的情况下,选择物理内存的一部分区域作为设备交换是一个相当好的选择。
2.对于文件系统交换
(1)除非无法使用设备交换,否则最好不要使用文件系统交换。
(2)将文件系统交换设置在不经常使用的文件系统上。
(3)不要在同一个物理磁盘上建立两个文件系统交换,这样一来会导致磁头的过量移动,妨碍系统性能。
(4)启用文件系统交换时,也应设置多个,分布在不同的磁盘上,赋予相同的优先级以实现交叉存取。
Linux下察看swap分区大小的命令
top 或者fdisk -l 或者free -m SWAP分区一般大小为物理内存的2倍,但最大不超过2G; 增加SWAP空间的方法有两个:增加另外一个SWAP分区,或通过创建一个SWAP文件来实现。 一)增加一个SWAP分区: 1)创建一个SWAP分区: fdisk -l /dev/cciss/c0d0 (m---p ---n --t (将分区格式转换成 82)--w)(如/dev/cciss/c0d0p6) 2)格式化分区:mkswap -c v1 /dev/cciss/c0d06; 3)修改/etc/fstab文件,增加 /dev/cciss/c0d0p6 swap swap default 0 0 4)激活swap分区:swapon -a /dev/cciss/c0d0p6; 5) 查看swap 分区:swapon -s 或 free 或 cat /proc/swaps 二)增加一个SWAP文件; 1)dd if=/dev/zero of=/tmp/tmp.swap bs=1M count =100;( 建立一个100M的文件); 2)mkswap /tmp/tmp.swap; (标识为SWAP文件) 3)swapon /tmp/tmp.swap;(激活SWAP文件) 4)修改/etc/fstab文件,增加以下内容: /tmp/tmp.swap swap swap default 0 0 5)swapon -s 或free 或cat /proc/swaps 查看。 三)删除SWAP分区: 1) swapoff /dev/cciss/c0d0p6;(关闭所有swap分区:swapoff -a) 2) 修改/etc/fstab文件。(删除或注释掉swap行;若不修改,机器重启后swap分区将会打开)相关链接: