IT

编程语言,系统及软件操作
< 返回上一级

swap交换内存

linux swap内存相当于win的虚拟内存,是块硬盘空间

子节点:

-- 暂无子节点 --

内容:

swap 系统位置

/proc

查看占用sawp内存较高进程

shell命令,直接终端下运行
for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done 2>&1 |sort -k2nr |head

如何释放swap内存

swap用尽系统会卡死
A:对占用swap内存较高的进程进行重启;
B:关闭swap分区
(1)确保系统空闲内存大于swap已用内存;

(2)可以先清理内存cache,空出足够内存

(echo "1" > /proc/sys/vm/drop_caches)

(3)关闭swap分区(swapoff -a),这个过程需要等待;

(4)swap分区释放后,恢复swap分区(swapon -a);

(5)恢复内存cache的设置(echo "0" > /proc/sys/vm/drop_caches)

mkswap命令 创建swap

mkswap可将磁盘分区或文件设为Linux的交换区。swap必须在本地盘上,而且有足够空间
mkswap [-cf][-v0][-v1][设备名称或文件][交换区大小]
-c 建立交换区前,先检查是否有损坏的区块。
-f 在SPARC电脑上建立交换区时,要加上此参数。
-p, --pagesize SIZE       设备页面大小,单位 bytes
-L, --label LABEL         设置标签名称
-U, --uuid UUID           设置使用的UUID
-v, --swapversion NUM     设置 swap空间 版本数字 
-v0 建立旧式交换区,此为预设值。
-v1 建立新式交换区。

[交换区大小] 指定交换区的大小,单位为1024字节,即1K。

1$ touch /extra-swap #创建swap文件

2A$ dd if=/dev/zero of=/extra-swap bs=1024 count=1024
#/extra-swap 是对换文件名,bs不用改变,
文件大小由count=给出. 大小最好是4的倍数,
##因为核心写出的内存页是4KB。如果不是4的倍数,最后那几KB将不可用,所以运算很重要
2B$ dd if=/dev/zero of=/extra-swap bs=1024 count=0 seek=1024
文件大小由seek=给出 这个不立刻分配文件所以速度快

3$ mkswap /extra-swap 1024 # swapspace /extra-swap size = 1044480 bytes
4$ chmod 0600 /extra-swap #分配权限
5$ swapon /extra-swap #启动swap文件的使用
6$ top #查看系统使用swap大小变化


mkswap -c -v1 -L swapnew /dev/hda3