项目的扩容申请了一台机器,到手之后看一下机器的指标,看到内存使用情况是这样的。

1、查看内存

free

$ free -htotal       used       free     shared    buffers     cached
Mem:          125G        89G        36G        92K       212M        74G
-/+ buffers/cache:        14G       111G
Swap:         7.5G       1.8G       5.6G 

cat /proc/meminfo 

如果你想得到更加相近的信息可以使用cat /proc/meminfo,直接看硬件的统计数据。

MemTotal:       131755760 kB
MemFree:        38151680 kB
Buffers:          217564 kB
Cached:         78274852 kB
SwapCached:         6072 kB
Active:         29647292 kB
Inactive:       50949268 kB
Active(anon):    2073604 kB
Inactive(anon):    30640 kB
Active(file):   27573688 kB
Inactive(file): 50918628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       7812092 kB
SwapFree:        5889924 kB
Dirty:               804 kB
Writeback:             0 kB
AnonPages:       2100436 kB
Mapped:           442904 kB
Shmem:                92 kB
Slab:           12017476 kB
SReclaimable:   11910264 kB
SUnreclaim:       107212 kB
KernelStack:       31184 kB
PageTables:        37492 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    73689972 kB
Committed_AS:   25708340 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      491656 kB
VmallocChunk:   34290629896 kB
HardwareCorrupted:     0 kB
AnonHugePages:    694272 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        4096 kB
DirectMap2M:     2019328 kB
DirectMap1G:    132120576 kB

这里我们看到,内存总数total=125G,已使用used=89G,空闲free=36G,cache=78G。其他类型不等。

先解释一下:

total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache (已用)的内存数:used - buffers - cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached

这里可以看到我们使用了89G,其中cache占用了78G。这个占用有点高,并且不会自动释放。

2、什么是cache

为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

cached主要负责缓存文件使用, 日志文件过大造成cached区内存增大把内存占用完 .

Free中的buffer和cache:(它们都是占用内存):
buffer : 作为buffer cache的内存,是块设备的读写缓冲区
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值很大,说明cache住的文件数很多。

3、手动释放cache

/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。

释放方法有三种(系统默认值是0,释放之后你可以再改回0值):

To free pagecache:  echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:  echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:  echo 3 > /proc/sys/vm/drop_caches

注意:在清空缓存前我们需要在linux系统中执行一下sync命令,将缓存中的未被写入磁盘的内容写到磁盘上

具体的操作如下

# 先查看一下释放cache信令值, 此时应该是0
$ cat /proc/sys/vm/drop_caches
0# 将缓冲区写入磁盘, 当需要停止系统的时候, 保证文件系统的完整性
$ sync# 释放cache, 这个命令可能要花费一点时间, 请耐心等待
$ echo 3 > /proc/sys/vm/drop_caches
# 再看一眼
$ cat /proc/sys/vm/drop_caches
3

再来看一眼内存

$ free -htotal       used       free     shared    buffers     cached
Mem:          125G       3.5G       122G        88K        13M       444M
-/+ buffers/cache:       3.1G       122G
Swap:         7.5G       1.8G       5.6G 

cache已经释放,free=122G。

转载于:https://www.cnblogs.com/kangoroo/p/7375604.html

Linux内存(手动释放cache)相关推荐

  1. Linux内存手动释放方法

    Linux服务器内存释放在有些人看起来好像可以提高不少的效率,但是它实际的工作效果并不是很理想,这里我们说一下如何进行这份工作,帮助我们更好的去理解Linux系统的工作方式. 大众释放内存方法 1. ...

  2. linux内存手动释放

    1.有关操作命令 #sync #echo 3 > /proc/sys/vm/drop_cache 2.命令说明 (1)sync命令:运行sync 命令是要保文件系统的完整性.sync 命令将所有 ...

  3. linux 内存清理 释放命令,linux 内存清理/释放命令总结

    本文介绍了linux 内存清理/释放命令,具体如下: 1.清理前内存使用情况 free -m 2.开始清理 echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用 ...

  4. linux 内存清理 释放命令,linux 内存清理释放命令(示例代码)

    linux 内存清理/释放命令 1.清理前内存使用情况 free -m 2.开始清理 echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m ...

  5. linux内存之buff/cache

    前言.今天闲来无事.打算去练习一下linux指令.然后我看了一下服务器的内存. 这就很有意思了.我总共用了1.1个g.空余内存就只有167兆了.然后我就注意到了后面的 buff/cache.Googl ...

  6. linux如何手动释放内存吗,Linux如何手动清理内存中cache信息

    当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.那么Linux如何手动清理内存中cache信息?下面跟着学习啦小编一起来了解一下吧. ...

  7. Linux之 手动释放内存

    我们在进程中要怎样去描述一个文件呢?我们用目录项(dentry)和索引节点(inode).它们的定义如下: 所谓"文件", 就是按一定的形式存储在介质上的信息,所以一个文件其实包含 ...

  8. Linux 内存中的Cache

    您真的了解Linux的free命令么? Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的 ...

  9. linux定时释放内存,定时释放Linux 内存 带释放记录

    细心的朋友会注意到,当你在linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching.这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法 ...

最新文章

  1. 判断身份证号是否合法
  2. 重磅:Elasticsearch上市!市值近50亿美元
  3. 20169205实验一 Java开发环境的熟悉(Linux+IDEA)
  4. 公司使用360安全产品造成的CRM系统故障!
  5. java下载pdf6_疯狂java讲义第6版 电子版(pdf格式)
  6. phpStorm中的unescaped xml character问题
  7. PHPSession-完全PHP5之session篇
  8. [UVa 122] Trees On the Level
  9. android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
  10. 为什么拼多多黄峥和陆奇走到了一起?
  11. AXI Memory-Mapped SRIO收发控制器
  12. Struts2通配符详解
  13. 计算机如何识别英语,Excel自动识别中英文妙招三则 -电脑资料
  14. [数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式
  15. [FPGA] 1、Artix-7 35T Arty FPGA 评估套件学习 + SiFive risc-v 指令集芯片验证
  16. 摄像头之自动曝光,自动增益,图像深度 概念
  17. hexo博客使用hexo-admin插件管理文章
  18. CLRS第十三章思考题
  19. 获取网页标题、关键字、页面ip地址、文本等详细信息接口说明
  20. PM如何快速接手项目?【万千项目】

热门文章

  1. python多线程之threading
  2. 201671010103 2016-2017-2 《Java程序设计》第十二周学习心得
  3. Laravel 手记(连接mysql)
  4. 在myeclipse当中使用正则表达式去除单行注释
  5. 十款让 Web 前端开发人员更轻松的实用工具
  6. 安装Axis2的eclipse插件后,未出现界面
  7. 利用霍夫变换做直线检测的原理及OpenCV代码实现
  8. Linux中如何将文件dump成16进制值
  9. 计算机开始按钮作用,Win8.1的12个变化:开始按钮回归功能不再
  10. Docker cgroups作用(十)