讨论这个问题前,我们先来看当前系统状态:

1[root@localhost ~]# free -m

2              total        used        free      shared  buff/cache   available

3Mem:          31768        9809         363        9601       21595       11838

4Swap:          8191        8191           0

为什么 buffer/cache 会占用这么多的内存?

buffer/cache使用过高通常是程序频繁存取文件后,物理内存会很快被用光。

当程序结束后,内存不会被正常释放,而是成为cache状态.

通常我们不需要手工释放swap,Linux会自动管理.

如果非要释放,请继续看.

如何释放占用的swap呢?

1## 将内存缓冲区数据立刻同步到磁盘

2[root@localhost ~]# sync

3## 关闭所有的swap

4[root@localhost ~]# swapoff -a

5## 启用所有swap

6[root@localhost ~]# swapon -a

7[root@localhost ~]# free -m

8              total        used        free      shared  buff/cache   available

9Mem:          31768       10853         217       16740       20698        3658

10Swap:          8191           0        8191

那么回到最初的问题:

linux可用内存足够为什么还用swap?

上面可以看到服务器共有32G内存,其中buff/cache占用了21G+.

明明还有可以将近12G的内存可以使用.但系统却偏偏占用完了swap的8G内存.

可知系统并没有自动释放buff/cache最大化利用内存.

原因:

内核参数 swappiness 的值的大小,决定着linux何时开始使用swap。

swappiness=0 时表示尽最大可能的使用物理内存以避免换入到swap.

swappiness=100 时候表示最大限度使用swap分区,并且把内存上的数据及时的换出到swap空间里面.

此值linux的基本默认设置为60,不同发行版可能略微不同.

查看命令具体如下:

1[root@localhost ~]# cat /proc/sys/vm/swappiness

260

什么意思呢?

就是说,你的内存在使用率到40%(100%-60%)的时候,系统就会开始出现有交换分区的使用。

大家知道,内存的速度会比磁盘快很多,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,所以我们在操作系统层面,要尽可能使用内存,对该参数进行调整。

调整值

1[root@localhost ~]# sysctl vm.swappiness=10

2vm.swappiness = 10

3[root@localhost ~]# cat /proc/sys/vm/swappiness

410

重启依旧生效,需要在/etc/sysctl.conf修改:

1[root@localhost ~]# cat /etc/sysctl.conf

2vm.swappiness = 10

3[root@localhost ~]# sysctl -p

题外话

通常我们还经常看到shared占用大量内存,shared表示共享内存的占用,

起决定参数的两个分别是:

1# 定义单个共享内存段的最大值

2kernel.shmmax = 68719476736

3

4# 定义共享内存页数

5kernel.shmall = 4194304  ##(16G)

当前系统内存页大小查看:

1[root@localhost ~]# getconf  PAGESIZE

24096

当前系统共享内存段大小(bytes):

1[root@localhost ~]# cat /proc/sys/kernel/shmmax

216777216000

共享内存段个数查看:

1[root@localhost ~]# ipcs -m

内存页和内存段是两种不同的内存管理方式,详细了解可以自行谷歌.

学习安排上!

linux 8g内存 swap,linux可用内存足够为什么还用swap相关推荐

  1. linux只能用一半的内存,linux可用内存足够为什么还用swap

    原标题:linux可用内存足够为什么还用swap 讨论这个问题前,我们先来看当前系统状态: 1 [root@localhost ~]# free -m 2 total used free shared ...

  2. linux资源利用率检查_使用free命令查看实际内存占用(可用内存)

    linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...

  3. linux下使用free命令查看实际内存占用(可用内存)

    linux下在终端环境下可以使用free命令看到系统实际使用内存的情况,一般用free -m方式查看内存占用情况(兆为单位).而系统实际可用内存是不是free部分呢,不是的,系统实际内存占用以及可用内 ...

  4. Linux(Ubuntu)下C++获取可用内存、当前最大内存等信息

    Linux(Ubuntu)下C++获取可用内存.当前最大内存等信息 使用sysconf函数获取当前可用内存大小 例程: /// @brief Get the available memory in M ...

  5. 计算机专业8g内存,win7系统台式机8G内存但是显示可用内存只有3.4G如何解决

    有用户在购买台式机安装win7系统,发现明明电脑配置的是8G内存,但是打开计算机属性发现可用内存只有3.4G,遇到这样的问题该怎么办呢,下面给大家分享一下win7系统台式机8G内存但是显示可用内存只有 ...

  6. 计算机可用内存分配失败,安装内存和实际可用内存不一样什么原因

    通常我们安装内存条时候都有显示具体内存,但是有时出现安装内存和实际可用内存不一致?为什么会不一样呢?下面我们一起来看看其中的原因和解决方法. 一.你安装的不是64位Win7系统 Win7 32位只能识 ...

  7. linux实际内存,为什么Red Hat Linux在系统上报告的可用内存少于实际可用内存?

    不要将空闲内存与未使用的内存混淆. unix世界中的空闲内存是一个物理内存页面,没有映射到它的逻辑数据.未使用的内存确实有一些数据映射到它,但它当前没有被正在运行的进程使用. % free -m to ...

  8. java 可用内存_总可用内存java

    我想知道为什么创建大表后总的可用内存没有变化.但是当我使用垃圾收集器时,总的可用内存增加了. import java.util.Random; public class Main{ public st ...

  9. 释放Ubuntu/Linux系统cache,增加可用内存空间

    某台式机内存共3G,但free的内存只有200M,无法满足scala的jvm需求. 注意用top命令查看才能看到真正的free内存.下面是查看真正内存使用量的另一种命令. watch -n 1 cat ...

最新文章

  1. python框架之Flask基础篇(一)
  2. 电脑软件:微软Windows官方电脑管家,仅针对国内用户?看看怎么说
  3. 谷歌发布端到端AI平台,还有用于视频和表格的AutoML、文档理解API等多款工具
  4. [线段树][树上差分] Jzoj P3397 雨天的尾巴
  5. SQL Server 高可用方案
  6. 性能测试--jmeter响应数据中文乱码【12】
  7. 华为网络设备-FTP文件传输
  8. win系统的阿里云服务器部署IDEASpringBoot项目保姆级教程
  9. 成功的IT创始精英访谈之拉里·埃里森——甲骨文软件之父
  10. Mysql----关联查询
  11. ESMTP身份验证机制探索手记
  12. 计算机视觉入门 拜读
  13. 实验9-9 有理数比较(10 分)
  14. 什么是函数指针?(理解及使用)
  15. MapReduce中加强内容
  16. node readFile读html乱码,nodejs读取本地中文json文件出现乱码
  17. 2018网站优化人员不同阶段在做哪些事
  18. 海滩景色Mac高清动态壁纸
  19. 成功解决Component template should contain exactly one root element
  20. json字符串转list<对象>

热门文章

  1. SimBERTv2来了!融合检索和生成的RoFormer-Sim模型
  2. 报名 | AlphaGo Zero是如何实现无师自通的?
  3. 蓝桥备赛第一周2021.1.11 递归 枚举 位运算
  4. 计算机视觉:目标检测的发展历程与基础概念
  5. 路痴的单身小菡 BFS求最短路径+DFS求路径数
  6. ajax中return不生效
  7. java面试开发过程中用到的问题
  8. Python——OpenCV(opencv-python库)调用摄像头
  9. 数学好的男生适合学计算机吗,数学好的男生适合读什么专业 2021前景好吗
  10. 【学习笔记】Redis的geohash数据结构介绍