查看内存的情况(此时swap行为0)
free -m

初始时Swap 相关数据都是0。

  1. 创建swap文件(本文创建了2G),并使之生效
    a.创建用于交换分区的文件:
    dd if=/dev/zero of=/swapfile bs=1M count=2048
    注:block_size、number_of_block 大小可以自定义,比如 bs=1M count=1024 代表设置 1G 大小 SWAP 分区。
    b.设置交换分区文件:
    mkswap /swapfile

c.立即启用交换分区文件:
swapon /swapfile
这个命令可能会提示“swapon: /swapfile: insecure permissions 0644, 0600 suggested.”,意思是建议把swap设置成644或600权限。

  1. 这时运行free -m会发现swap一列已经有数字了,就是上面第一次执行free -m 后的结果。
    注:如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a
  2. 在 /etc/fstab 中添加如下一行,使之永久生效
    /swapfile swap swap defaults 0 0
  3. 修改 swpapiness 参数
    在 Linux 系统中,可以通过查看 /proc/sys/vm/swappiness 内容的值来确定系统对 SWAP 分区的使用原则。当 swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当 swappiness 内容的值为 100 时,表示积极地使用 SWAP 分区,并且把内存中的数据及时地置换到 SWAP 分区。
    查看修改前为 0,需要在物理内存使用完毕后才会使用 SWAP 分区。
    可以使用下述方法临时修改此参数,假设我们配置为空闲内存少于 10% 时才使用 SWAP 分区:
    echo 10 >/proc/sys/vm/swappiness
    若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf 文件,并增加以下内容:
    vm.swappiness=10

关闭 SWAP
当系统出现内存不足时,开启 SWAP 可能会因频繁换页操作,导致 IO 性能下降。如果要关闭 SWAP,可以采用如下方法。
1、free -m 查询 SWAP 分区设置:

2、使用命令swapoff 关闭 SWAP,比如:
swapoff /mnt/swap

3、修改 /etc/fstab 文件,删除或注释相关配置,取消 SWAP 的自动挂载:

4、 通过 free -m 确认 SWAP 已经关闭。

5、 swappiness 参数调整:
可以使用下述方法临时修改此参数,这里配置为 0%:
echo 0 >/proc/sys/vm/swappiness
若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf文件,并增加以下内容:
vm.swappiness=0

Categories: 分享 Tags:

设置linux的swap的使用频率0+

81,913 views / 2013.11.06 / 9:09 下午

Ubuntu 默认的 vm.swappiness 值是 60,这一默认值已经很合适了。但你可以改小一些降低swap 的加载,系统性能会有一点点的提升,输入代码:sysctl -q vm.swappiness.你会看到值是 60.
更改代码:sudo sysctl vm.swappiness=10.
这样你就将值由 60 改为 10,这可以大大降低系统对于 swap 的写入,建议内存为 512m 左右的朋友采用此方法。如你你发现你对于 swap 的使用极少,可以将值设为 0,这并不会禁止你对 swap 的使用,而是使你的系统对于 swap 的写入尽可能的少,同时尽可能多的使用你的物理内存。
这对于你在切换应用程序时有着巨大的作用,因为这样的话它们是在物理内存而非swap 分区中。
如果你想永久得改变这一值,你需要更改 sysctl.conf 文件:
代码:sudo vi /etc/sysctl.conf,修改:vm.swappiness=10到末行,需要重启生效。

小贴士:1G 内存推荐值为 5,2G 内存推荐值为 3,不推荐把值设为 0.

Categories: 感悟 Tags: ,

Ubuntu Server挂载swap文件(自动挂载)0+

127,351 views / 2013.10.25 / 3:03 上午

阿里云安装系统的时候,并没有挂载swap分区。而我们对数据盘进行分区的时候,把整个磁盘都用上了,并没用预留空间。swap分区是行不通了,只能试试swap文件。

建立一个有连续空间的空白文件

# dd if=/dev/zero of=SWAPFILE bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 59.7957 s, 18.0 MB/s

需要格式化:

mkswap SWAPFILE 1048576
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=1aaed031-33ef-479b-a9a4-2f008a7bbb2f

使用格式化完毕的文件:

# swapon SWAPFILE

查看文件使用情况:

# swapon -s
Filename Type Size Used Priority
/srv/SWAPFILE file 1048572 95852 -1

加入自动启用

为避免重启后swapfile生效,可以将启用swap的代码加入启动文件中,对于ubuntu server,编辑 /etc/rc.local 文件,加入以下内容(具体文件路径自定):
swapon /srv/SWAPFILE

ps. 在此之前,本人尝试修改 /etc/fstab 的方法各种不生效,不知道为何。经过半个小时排查,才发现原来是/etc/rc.local中把swap关掉了:
swapoff -a

天煞的!把这句删掉,写到/etc/fstab中的挂载就生效了:
/srv/SWAPFILE swap swap defaults 0 0

Categories: 分享 Tags: