交换区(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)启用文件系统交换时,也应设置多个,分布在不同的磁盘上,赋予相同的优先级以实现交叉存取。

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分区将会打开)

相关链接:关闭swap命令及启停命令大全

mkfs使用介绍

服务器swap的更多相关文章

  1. NUMA导致的MySQL服务器SWAP问题分析与解决方案

    [SWAP产生原理] 先从swap产生的原理来分析,由于linux内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解: 1.swap是如何产生的 swap指的是一个交换分区或文件,主要是 ...

  2. NUMA导致的MySQL服务器SWAP问题分析

    [作者] 王栋:携程技术保障中心数据库专家,对数据库疑难问题的排查和数据库自动化智能化运维工具的开发有强烈的兴趣. [问题描述] 我们知道当mysqld进程使用到SWAP时,就会严重影响到MySQL的 ...

  3. CentOS转的服务器磁盘规划

    我的服务器是500G.最重要的是/var分区一定要大(不论postfix邮件,还是LAMP的WEB 服务器等).最好是400G以上.具体的/boot 只要100M就足够了.下面是我的分区方案:硬盘50 ...

  4. Linux-服务器创建swap交换分区

    服务器 swap 交换分区制作 作用:‘提升‘ 内存的容量,防止OOM(Out Of Memory) 查看当前的交换分区 # cat /proc/swaps # free -m # swapon -s ...

  5. MySQL针对Swap分区的运维注意点

    Linux有很多很好的内存.IO调度机制,但是并不会适用于所有场景.对于运维人员来说,Linux比较让人头疼的一个地方是:它不会因为MySQL很重要就避免将分配给MySQL的地址空间映射到swap上. ...

  6. 性能测试-11.Linux服务器使用NMON监控指标

    一.NMON使用 首先下载nmon软件http://nmon.sourceforge.net/pmwiki.php?n=Site.Download,打开这个网站下载符合自己操作系统的硬件的相关nmon ...

  7. MySQL服务器发生OOM的案例分析

    [问题] 有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关 [分析过程] 1.服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G 触发OO ...

  8. [转]NMON服务器监控、指标说明

    一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...

  9. centos7 linux下增加swap虚拟内存分区大小

    此方法不限于centos,linux均适用 最近在服务器上部署了一个java项目,java进程经常性莫名被自动Kill,首先java程序是没有报错的,那么我想可能是内存不足的原因,因为4G内存的服务上 ...

随机推荐

  1. access2003的使用

    access2003中如何用sql语句创建表 http://zhidao.baidu.com/link?url=dinVbwoI20Xz__NbcIeBPdkjeXRWmZNB0xJvdr0eMBqN ...

  2. 嵌套循环连接(nested loops join)原理

    嵌套循环连接(nested loops join) 访问次数:驱动表返回几条,被驱动表访问多少次. 驱动表是否有顺序:有. 是否要排序:否.    应用场景:  1.关联中有一个表比较小: 2.被关联 ...

  3. Java从零开始学三十九(对象序列化)

    一.序列化 将对象的状态存储到特定存储介质中的过程 对象序列化,就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便的实现对象的传输或存储.   序列化保存对象的“全景图”,构建对象的“ ...

  4. cordova / Ionic 开发问题汇总

    cordova / Ionic 开发问题汇总 1. 导入工程的"The import android cannot be resolved"错误解决方法 2. MainActivi ...

  5. systemctl的常用命令

    #systemctl #systemctl --all #systemctl list-units --type=sokect #systemctl list-units --type=service ...

  6. Ubuntu中iptables的使用

    (一) 设置开机启动iptables# sysv-rc-conf --level 2345 iptables on (二) iptables的基本命令 1. 列出当前iptables的策略和规则# i ...

  7. C#时间戳转换[转发]

    http://www.cnblogs.com/qingliuyu/p/3835858.html 以下是C#下的日期与unix时间戳的相互转换: /// <summary> /// 日期转换 ...

  8. _x和__all__(有所理解即可)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #_x和__all__(有所理解即可) #_x #不能使用from module import *导入 [注意 ...

  9. RHEL7 timedatectl命令

    1.要显示系统的当前时间和日期,使用timedatectl命令,如下: [root@rhel7 ~]# timedatectl Local time: Mon -- :: EDT Universal ...

  10. 微信小程序用户数据解密

    概述 通过微信web开发者工具创建登录,获取用户信息,发送至后台,进行用户数据解密 详细 代码下载:http://www.demodashi.com/demo/10705.html 一.准备工作 1. ...