swap的使用和调整

linux支持虚拟内存,用作虚拟内存的硬盘部分被称为交互空间(swap space),虚拟内存是指使用磁盘当作内存的扩展,这样可用内存的大小就相应的增大了。内核会将暂时不用的内存块的内容写到硬盘上,从而空闲的内存就可用于其他目的。当需要用到原始内容时,再从硬盘重新读入内存。但读写硬盘的速度比直接使用内存要慢得多,数千倍。
linux可以使用文件系统中的一个常规文件或一个独立的分区作为交换空间。交换分区要快一些,但交换文件的大小很容易改变。
如果系统上的交换空间不够了,只要硬盘上还有空余的空间,就可以把这些剩余的空间利用起来,使用mkswap命令创建的交换区。
一、mkswap: 在设置或文件上创建linux交换区(swap)
语法:
mkswap  [参数]  设备名 [块数]
设备名,这里的设备通常是一个磁盘分区,如:/dev/sda6,或者是一个文件/swapfile
-c  建立交换空间前,先检查是否有坏道,如果有坏道,将坏道总数目显示出来。
-f  强行运行mkswap命令
-p  <页大小>  指定所使用的页大小
-L  <标签>    指定一个标签,此后swapon可以使用这个标签
-v0  建立旧式交换区
-v1  建立新式交换区
例:
(1)设置分区/dev/sdb1为新交换分区
mkswap -v1 /dev/sdb1
可以省略-v1
(2)设置分区/dev/sdb1为新交换分区,并检查是否有坏道
mkswap - c /dev/sdb1
(3)创建swapfile虚拟文件
首先创建swapfile文件
dd if=/dev/zero  of=swapfile  count=2000  bs=1024k
if 表示输入文件 /dev/zero表示一个空文件,即以null字符写入文件中。
of 表示输出文件
bs 每个块多少个字节,可以带单位
count 表示多少个块
这样就创建2G的一个空文件
mkswap -f swapfile


二、swapon:开启用作系统交换区的设备或文件
参数:
-a  将/etc/fstab文件中所有设置为swap的设备开启,标记noauto参数的设备除外。
-e  与-a配合使用,忽略不存在的设备
-p  指定优先级,0-32767,数值越大,优先级就越高。
-s  显示交互区使用情况。
-v  显示详细信息
例:
(1)显示交换分区的信息
swapon -s

也可以通过 cat /proc/swaps来查看
(2)开启所有交换分区
swapon -av
(3)开启交换分区/dev/sdb1
swapon  /dev/sdb1
(4)开启交换分区/dev/sdb1 并指定优先级为10
注意:要自动开启交换区,可以把新的分区加入到/etc/fstab中
设备  swap  swap  default 0 0 , 可以参照fstab中原有的。


三、关闭交换区
swapoff
可以使用swapoff关闭一个交换空间。
swapoff  设备或文件
参数:
-a  将/etc/fstab文件中所有设置为swap的设备关闭
-v  显示详细信息



以下是设置swap优先级的方法

swappiness
Ubuntu Feisty默认的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 文件:


vim /etc/sysctl.conf
添加:
vm.swappiness=10
到末行,需要重启生效。
我发现对 于我的1G内存,将此值设为5是最合适的。

你可能感兴趣的:(Linux,Programming)