[Linux] Linux下谁在消耗我们的cache
一、缘由:
曾经看到MySQL服务器上Cache占用特别大,其实大家都知道这是合理的,这些都是可用内存;
那么问题来了,是谁在占用这些Cache呢?如果去掉不合理的Cache占用,系统内存会更充分的得到利用。
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
由上图可见,Cache占用了42G内存,猛地一看很可怕。实际上他还属于memfree之列。具体说明,可以看这里:
http://www.linuxatemyram.com/。
二、解决办法:
这里有两个工具可以查看某个文件是否占用了Page Cache,占用了多少:fincore和vmtouch
1、fincore
这是linux-ftools工具的一部分,你给出文件(夹)名作为输入,他会告诉你他有多少文件(数据)被系统缓存起来。
因为不太会安装,这里不做推荐,具体看这里https://code.google.com/p/linux-ftools/。
2、vmtouch
vmtouch可以查到缓存的文件和目录、把文件推入缓存和驱逐缓存中的文件等等。(推荐)
安装方法:
$ git clone https://github.com/hoytech/vmtouch
$ cd vmtouch
$ make
$ sudo make install
使用方法:
$ vmtouch
vmtouch: no files or directories specified vmtouch v1.0.2 - the Virtual Memory Toucher by Doug Hoyte
Portable file system cache diagnostics and control Usage: vmtouch [OPTIONS] ... FILES OR DIRECTORIES ... Options:
-t touch pages into memory
-e evict pages from memory
-l lock pages in physical memory with mlock()
-L lock pages in physical memory with mlockall()
-d daemon mode
-m max file size to touch
-p use the specified portion instead of the entire file
-f follow symbolic links
-h also count hardlinked copies
-w wait until all pages are locked (only useful together with -d)
-v verbose
-q quiet
例子:
1)查看/tmp目录在内存中的缓存:
$ vmtouch /tmp/
vmtouch: WARNING: skipping non-regular file: /tmp/ssh-GgJnCEkWMQC2/agent. Files:
Directories:
Resident Pages: / 18M/18M %
Elapsed: 0.001006 seconds
详细信息查看可使用-v参数 例如:vmtouch -v /tmp/
2)查看一个文件被缓存了多少:
$ vmtouch -v ~/Downloads/phoronix-test-suite_6..1_all.deb
/home/neo/Downloads/phoronix-test-suite_6..1_all.deb
[ ] / Files:
Directories:
Resident Pages: / /528K %
Elapsed: 0.000117 seconds
3)把文件缓存起来:
$ vmtouch -vt ~/Downloads/phoronix-test-suite_6..1_all.deb
/home/neo/Downloads/phoronix-test-suite_6..1_all.deb
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] / Files:
Directories:
Touched Pages: (528K)
Elapsed: 0.007935 seconds
4)把缓存中的数据驱逐出去:
$ vmtouch -ve ~/Downloads/phoronix-test-suite_6..1_all.deb
Evicting /home/neo/Downloads/phoronix-test-suite_6..1_all.deb Files:
Directories:
Evicted Pages: (528K)
Elapsed: 0.000109 seconds
附:
具体信息参考官网:https://hoytech.com/vmtouch/
另一个参考页面:vmtouch: portable file cache analyzer
[Linux] Linux下谁在消耗我们的cache的更多相关文章
- Linux环境下的CPU消耗分析
在Linux系统中, CPU 主要用于中断,内核以及用户进程的任务处理,优先级为 中断 > 内核 > 用户进程.在CPU消耗分析中,我们还经常遇到下面几个概念. 上下文切换 ...
- 性能测试分析过程(三)linux下查看最消耗CPU/内存的进程
linux下查看最消耗CPU 内存的进程 1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10 ...
- linux下定位异常消耗的线程实战分析
前言: 之前分享过一篇Linux开发coredump文件分析实战分享 ,今天再来分享一篇实战文章. 在我们嵌入式linux开发过程中,开发过程中我们经常会使用多进程.多线程开发.那么多线程使用过程中, ...
- 在Linux操作系统下备份恢复技术的应用 转自https://yq.aliyun.com/articles/50205?spm=5176.100239.blogcont24250.9.CfBYE9
摘要: 安全防护:在Linux操作系统下备份恢复技术的应用 原文参见:http://linux.chinaunix.net/techdoc/system/2005/12/19/925898.shtm ...
- Ruby入门--Linux/Windows下的安装、代码开发及Rails实战
Ruby入门--Linux/Windows下的安装.代码开发及Rails实战 http://www.linuxidc.com/Linux/2014-04/100242.htm Ubuntu 13.04 ...
- 【云和恩墨】性能优化:Linux环境下合理配置大内存页(HugePage)
原创 2016-09-12 熊军 [云和恩墨]性能优化:Linux环境下合理配置大内存页(HugePage) 熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC S ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(1)——Linux环境下的图形系统简介
Linux/Unix环境下最早的图形系统是Xorg图形系统,Xorg图形系统通过扩展的方式以适应显卡和桌面图形发展的需要,然而随着软硬件的发展,特别是嵌入式系统的发展,Xorg显得庞大而落后.开源社区 ...
- Windows环境和Linux环境下Redis主从复制配置
Windows环境下和Linux环境下配置Redis主从复制基本上一样,都是更改配置文件.Windows环境下修改的配置文件是:redis.windows.conf.redis.windows-ser ...
- Linux环境下Java应用性能分析定位-CPU使用篇
1 CPU热点分析定位背景 CPU资源还是很昂贵的,为了深刻感受到这种昂贵,间下图当前CPU的资源售价: 所以对于程序猿们来说,需要让程序合理高效的使用CPU资源.利用有限的CPU资源来解决完 ...
随机推荐
- Objective-C( 语法二)
分类(Category):可以给某一个类扩充一些方法(不修改原来类的代码) 作用:在不改变原来类内容基础上,可以为类增加一些方法 使用注意: 1. 只能增加方法,不能增加成员变量 2. 分类方法 ...
- 实现Asp.Net MVC无刷新分页
整个过程主要就是:一开始进入页面是,在页面加载完成之后直接通过$(function(){ LoadRegisterUserInfo(1,10,0,0);//加载注册用户信息 });无条件加载数据,调 ...
- /etc/passwd和/etc/shadow
这两个路径分别是用于存储密码和隐形密码 让我们先来观察它,在了解它 [root@oc3408554812 ~]# cat /etc/passwd |grep carltoncarlton : ...
- mac 下安装jmeter
1.http://jmeter.apache.org/download_jmeter.cgi 下载jmeter 2.解压包 3.进入解压目录/bin/ 4.sh jmeter
- Spring配置中的classpath和classpath*的区别
初学SSH框架,昨天在配置Spring的时候,提示我找不到Spring.xml文件,后面百度之后把classpath改成classpath* 就好了,下面是了解到的简单区别. classpath:只会 ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- 如何利用Cloudera Manager来手动安装parcel包
1.问题的描述: 当你利用Cloudera Manager部署了CDH的集群后,也许随着你的业务需求,你需要对你的就去哪做一些优化,或者扩展之类的,这个时候你可能需要下载安装一些组件.例如,我最近在阅 ...
- js中Math.round、parseInt、Math.floor和Math.ceil小数取整总结
Math.round.parseInt.Math.floor和Math.ceil 都可以返回一个整数,具体的区别请看下面的总结. 一.Math.round 作用:四舍五入,返回参数+0.5后,向下取整 ...
- 转 TextBox的EnableViewState属性问题
问题如下: ---------------------------------------------------------------------------------------------- ...
- 去掉EditPlus自动备份bak文件
用EditPlus编辑文件是总是自动生成一个.bak文件. 其实想去掉EditPlus的自动备份也简单,方法如下: 打开菜单栏上的:工具->参数设置->文件 去掉“保存时创建备份文件”前的 ...