Linux 下 缓存机制和swap分区
Swap用途:
Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
swap清理:swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
建议 swap 分区的大小是内存的两倍,但不超过 2GB。但是有时服务器的访问量确实很大,有可能出现 swap 分区不够用的情况,所以我们需要学习 swap 分区的构建方法。建立新的 swap 分区,只需要执行以下几个步骤。
- 分区:不管是 fdisk 命令还是 parted 命令,都需要先区。
- 格式化:格式化命令稍有不同,使用 mkswap 命令把分区格式化成 swap 分区。
- 使用 swap 分区。
实例操作后续添加......
----------------------------------------------------------------------------
Linux的SWAP分区空间不够用的情况下,如何添加SWAP分区
通常情况下,SWAP空间应大于或等于物理内存的大小,最小不应小于64M,通常应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置。如果是小的桌面系统,则只需要较小的SWAP空间,而大的服务器系统则视情况不同需要不同大小的SWAP空间。特别是数据库服务器和Web服务器,随着访问量的增加,对SWAP空间的要求也会增加。
方式一、通过新建磁盘文件的方式增加SWAP空间:
>> dd if=/dev/zero of=swapfree bs=32k count=32768 #新建一个磁盘文件(32*32768=1048576KB,亦等于1024MB)。 >> /sbin/mkswap /home/swap #格式化成SWAP分区 >> /sbin/swapon /home/swap #启动新的SWAP分区 >> /sbin/swapon -s #检查SWAP分区
现在再用free -m命令查看一下内存和swap分区大小,就发现增加了1024M的空间了。不过当计算机重启了以后,发现swap还是原来那么大,新的swap没有自动启动,还要手动启动。那我们需要修改/etc/fstab文件,增加如下一行
/home/swap swap swap defaults 0 0
方式二、通过磁盘分区增加SWAP空间:
> /sbin/mkswap /dev/sdb1 #格式化成SWAP分区 > /sbin/swapon /dev/sdb1 #启动新的SWAP分区 > /sbin/swapon -s #检查SWAP分区
修改/etc/fstab文件,让其永久生效:
/dev/sdb1 swap swap defaults 0 0
二、查看缓存区及内存使用情况
free 命令主要是用来査看内存和 swap 分区的使用情况的,其中:
- total:是指总数;
- used:是指已经使用的;
- free:是指空闲的;
- shared:共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存
- buffers:是指缓冲内存数;
- cached:是指缓存内存数,单位是KB;
[root@localhost ~]# free -m total used free shared buffers cached Mem: 257853 48822 209030 0 594 43939 -/+ buffers/cache: 4288 253564 Swap: 30719 0 30719
buffers和cached解释:
buffer和cache都是内存中的一块区域,
当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,
然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;
当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,
可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。
参考文档: http://blog.sina.com.cn/s/blog_af6bb6bc0102v1ik.html
https://www.cnblogs.com/kevingrace/p/5991604.html