Linux内存管理:swap虚拟内存,free,vmstat,/proc/meminfo
参考:
https://blog.51cto.com/bjdong/960558 (释放内存)
https://www.cnblogs.com/yangxiaoyi/p/7537949.html (内存优化)
https://blog.csdn.net/hixiaoxiaoniao/article/details/85982350 (内存性能优化思路)
https://www.cnblogs.com/pengdonglin137/p/3315124.html (free命令查看内存)
swap虚拟内存的使用
1,创建swap
参考:
https://blog.csdn.net/jinfeiwang/article/details/50133727 (创建swap)
https://blog.csdn.net/zhangxiaoyang0/article/details/82501209 (创建和关闭swap)
需要一个Swap空间,原来我的系统安装时没有分配交换空间。
电脑的内存是个珍贵东西,于是乎就有了swap这个东西,简单来说就是内存不够用的时候,用硬盘空间顶上。
这个分区在近些年来已经越来越不受大家的待见了,主要是因为现在内存比较宽裕,但是在小内存的VPS上,还是有自己的用武之地的,特别是当看到内存不足之类的错误出现在log中的时候,可以尝试创建swap来分担一下内存的压力。
swap无法替代物理内存,性能上也会差很多,在SSD硬盘上使用对读写性能会有所加成。
#1添加交换文件 mkdir -p /opt/temp dd if=/dev/zero of=/opt/temp/swap bs=1024 count=4096000 #目录路径和大小自己看着办就好了 最小存储单元1Mb,虚拟内存大小4Gb
chmod 0600 -R /opt/temp/swap
#2创建交换空间 mkswap /opt/temp/swap #3启动新增加的4G交换空间 swapon /opt/temp/swap #4修改/etc/fstab,使新加的4G交换空间在系统重新启动后自动生效 echo "/opt/temp/swap swap swap defaults 0 0" >>/etc/fstab #5看看swap大小 free -mh #6 修改 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
2,关闭swap
#1关闭swap swapoff /opt/temp/swap
rm -rf /opt/swapdata #2修改 /etc/fstab 文件, 删除或注释相关配置,取消 SWAP 的自动挂载
删除 "/opt/temp/swap swap swap defaults 0 0" >>/etc/fstab
#3swappiness 参数调整: #可以使用下述方法临时修改此参数,这里配置为 0%: echo 0 >/proc/sys/vm/swappiness #若需要永久修改此配置,在系统重启之后也生效的话,可以修改 /etc/sysctl.conf文件,并增加以下内容: vm.swappiness=0
free
参考:https://www.jianshu.com/p/8676973770d2
#命令
free
free -m //单位m
free -h //友好
cat /proc/meminfo
#字段关系
total = used + free + buff/cache
available = free + buff/cache(只是部分)
el7中free的available其实对应:
cat /proc/meminfo | grep MemAvailable
//buff/cache提高读写速度的内存区
buff: 写 IO 缓存
cache: 读 IO 缓存
#用 watch 命令监控内存变化
watch 'free -h'
vmstat
参考:https://www.cnblogs.com/ftl1012/p/vmstat.html(vmstat命令详解)
#安装 yum install -y vmstat
linux的内存映射文件
在linux中一切皆为文件,linux内核中把系统信息都映射到/proc 目录中,我们通过查看/proc/meminfo 文件来获取内存信息。
cat /proc/meminfo