交换区(swap)是存在于高速存储设备上的一块区域,是虚拟内存系统重要的组成部分。通过交换区,我们不再局限于有限的物理内存空间,理论上可以无限地扩大虚拟内存系统,从而运行更多的程序,进行更多的业务交易,更充分地发挥硬件资源。交换区采用换入换出技术和存储器间互相交换进程或数据页面。根据一定的调度原则,内存中部分不常用的进程或数据页定期交换到交换区中,以便为需要运行的程序留出更多的可用空间。交换出去的进程或数据页根据需要时再交换进来,这样一来就实现了大量并发进程的管理。不适当的交换区设置不仅使换页守护进程忙于交换页面进出而消耗时间,而且使进程运行的速度、系统效率都大大降低,很大程度上影响了操作系统的性能。当前,应用程序的日益庞大,运行业务的急剧增加,高性能数据库如Informix Online Dynamic Server为响应对数据的快速存取而使用的共享内存技术等,都对有限的物理内存空间提出了更高的要求,因此实施对交换区的有效管理具有重要作用。
交换区容量的计算
交换区一般在操作系统初始安装时要求设定,大多数程序要求最少所需的交换区容量以正常运转。一般来说,当物理内存不超过256M时,主交换区容量设置为内存的两倍,超过256M时,则选择与物理内存的容量相同。操作系统安装完毕后,随着应用程序的不断增加和业务的变化,原有的交换区设置可能满足不了需要,对系统的性能也产生影响,系统管理员可增加新的交换区作为辅助交换区与主交换区配套使用。管理员还应经常监视交换区的使用情况,根据需要及时作出必要的调整。 交换区的类型
交换区分主要分以下四种类型:
1.设备交换
即使用连续物理空间的整个磁盘或部分磁盘区域作为交换区,这样速度比较快。在HP-UX中使用先进的逻辑卷技术实现对物理磁盘的动态可伸缩管理,因此管理员可使用一个或多个逻辑卷作为设备交换,而在SCO OpenServer中,则使用占据一定磁盘空间区域的块设备作为设备交换。
2.文件系统交换
文件系统交换是一种辅交换,仅在设备交换不敷使用时才被考虑以满足换页需求,特点是配置简单方便并可动态设置。因为文件系统交换只使用它需要的部分文件系统,所以使用空间的大小是变化的,同时该文件系统中还有许多应用程序和数据需要频繁存取,因而很大程度上降低了系统运行的效率。管理员可将文件系统交换限制在一个固定的范围内以防止它占用不必要的空间,并且最好建立在较少使用的文件系统上。
对UNIX系统而言,当启动文件系统交换时,将在文件系统的根目录下创建"/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)启用文件系统交换时,也应设置多个,分布在不同的磁盘上,赋予相同的优先级以实现交叉存取。 结束语
实践证明,良好的交换区配置不仅使应用程序执行的数目更多,计算机硬件的性能和效率也得到了充分的发挥。尤其对于目前国内无论是大型数据中心还是企业内部应用,硬件配置相当高如小型机及高档PC服务器,但因交换区设置不合理导致硬件资源使用不均衡、应用效果差,从而制约业务的提升尤其有实用价值。UNIX系统交换区的应用原理目前已广泛采纳到了Win9X、WinNT、Win2000等十分流行的桌面系统中,尽管它们采用的是文件系统交换,但UNIX系统大部分的交换区应用原则同样适用。我们可以通过WinNT、Win2000内置的任务管理器或运行在Win9X上的第三方工具软件如TechFacts等对交换区进行图形化界面监控,从而实施更有效的管理。因此系统管理员对交换区概念的充分理解和熟练使用具有很强的现实意义。