百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux查看哪些文件/目录在内存缓存中的方法

ahcoder 2024-12-14 09:50 24 浏览

有时候我们会遇到内存buffer/cache占用很大的场景,我们如何定位哪些文件和目录在占用buffer/cache,从而排查和解决buffer/cache占用过高的问题。

如上图,我们展示了a.txt存在于内存的buffer/cache缓存中的一个简单示意。正常应用层读取文件都必须先从后备存储(磁盘)中把要读取的文件先加载到内存的buffer/cache中,然后才进行读取,写入时也是先写入buffer/cache中的对应文件页中,然后通过内核write-back线程定期刷到后备存储中。

现在有这样一个场景:free -h 查看内存占用很高,而且90%是被buffer/cache占用了,这时候我们要排查和解决问题,首先就是要定位哪些文件和目录在内存buffer/cache中,再进一步找出占用空间较大的哪些文件和目录,从而进行后续操作,比如手动将这些文件刷入磁盘然后从缓存中清除,从而释放内存空间。

这个需求通过linux自带的命令和对系统相关文件的读写无法实现,我们需要借助一个第三方工具,这里介绍一个,叫vmtouch。


vmtouch工具介绍:

作用:

1、查看文件系统缓存情况

2、将文件或目录加载到内存中,提高访问速度,并减少对磁盘的读取操作

安装:

git clone https://github.com/hoytech/vmtouch.git 

cd vmtouch 

make 

sudo make install 

ln -s /usr/local/bin/vmtouch /bin/vmtouch

使用:

1、加载文件或目录到内存中:

vmtouch -vt /path/to/file

2、查看文件的缓存情况:

vmtouch -v /path/to/file

3、将一个文件完全缓存到内存中

vmtouch -vt access.log

4、删除内存中文件的缓存

vmtouch -ve access.log

5、固化文件到内存缓存,并以启动守护模式

vmtouch -dl /var/www/htdocs/critical


vmtouch使用示例:

1、我们执行下面命令查看/root目录下的buffer/cache数据

vmtouch -v /root 

如上图,代表有408M在内存的buffer/cache中,目录总大小503M,在缓存中的文件占该目录总大小的比81%。

2、找到该目录的大文件1.img,执行

vmtouch -v ./1.img

输出:Resident Pages: 6521/8000 407M/500M 81.5%,说明主要是1.img在占用buffer/cache。

3、先执行sync把脏数据刷入磁盘,然后执行下面命令从缓存中清除1.img

sync && vmtouch -ve ./1.img

4、最后再执行vmtouch -v ./ 查看执行结果

发现缓存占用大小只有448K了,说明1.img已经从缓存中清除了,最后执行free -h查看,发现buff/cache一栏增加了407M,说明我们成功从缓存中清除了1.img,从而达到释放缓存的来缓解内存的目的。


end:当然还有其他用法,比如手动把文件从磁盘加载到内存,和将文件永久保持在内存等功能,可以自行去实践,这是一个很实用的小工具,分享给大家。

相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何"挖坑种树"

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...