深入理解swap分区及扩存
1. 需要swap分区扩存的原因:
- 有时候跑任务的时候,需要很大的内存,但是服务器或者电脑装的内存不足以跑起任务,所以就需要扩存
2. 什么是swap 交换分区?
- swap space 交换空间 :是虚拟内存的表现方式。系统为了应付一些需要大量内存的应用,从而将磁盘上的空间作为内存来使用,其中当物理内存不够用时,将其中一些暂时不需要的数据交换到交换空间中供其临时使用。
- 注意事项: 在Linux中,Linux的内核为了提高读写效率和速度,从而会将文件在内存中缓存,缓存的这部分内存就是 Cache Memory, 我们经常使用的是
buffer cache
和 page cache
。我们使用完之后,Cache Memory也不会自动释放。 - 这样的情况下就会导致在Linux系统中频繁的读写文件,然后查内存的话,就会发现我们可用的内存就会变少。然而当系统的物理内存不够用的时候,我们就需要将物理内存中的一部分空间释放出来,供其当前的程序来使用。Swap分区是当物理内存不足的时候,才进行swap交换。
3. 创建swap文件
- 安装操作系统分区时需创建swap分区
- 安装的时候如果没有创建分区,需要手动创建。
1. 查看内存情况
- 命令是
free -h
(h显示的是G, m 显示的是M) 或者free -m
2. 创建swap 分区
dd if=/dev/zero of=/tmp/swapfile1 bs=1024 count=10240000
- 其中 if=/dev/zero: 输入/dev/zero文件。/dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件。就像使用临时交换文件.
- of=/tmp/swapfile1: 输出到/tmp.swapfile1文件
- bs=1024: 定义块大小为1024bytes,默认单位是bytes
- count=10240000,总数大小为10240000个bs即10240000kb,换算的话是10G。
3. 指定分区类型为swap
4. 设置swap 分区有效
5. 设置扩展的swap分区为自动挂载
vim /etc/fstab
进去之后自动挂载分区命令 编辑这个 /tmp/swapfile1 swap swap defaults 0 0
也就是设置为这个命令之后保存就可以。
6. 测试添加是否成功
- 使用命令
free -h
, 如果看到swap 分区中内存增加了,就表示成功啦。
- 如果刚才创建的想要关闭,删除创建的文件的话,就是用命令
swapoff /tmp/swapfile1
, 就表示关闭这个分区了,然后删除的命令是 rm /tmp/swapfile1 。
4. swappiness参数
- Swappiness是关于swap使用率的参数,swappiness的值越大,表示越积极使用swap分区,越小的话表示越会积极的使用物理内存。默认的值是swappiness=60。
- 当swap使用率配置过大影响到了磁盘的使用,可以将此值减小直到配置为0,当磁盘空间io空闲较大,物理内存负载较高时可以增大到100。
-
- 临时调整swappiness参数的命令是:
sudo sysctl vm.swappiness=100
cat /proc/sys/vm/swappiness
-
- 永久调整swappiness参数
sudo vim /etc/sysctl.conf
修改 vm.swappiness=10
, 然后执行命令 sudo sysctl -p