`
lianxiangbus
  • 浏览: 526118 次
文章分类
社区版块
存档分类
最新评论

(Ubuntu 以root用户登录)使用/proc/sys/vm/drop_caches手工释放linux内存

 
阅读更多

当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。如何将主动的将缓存写入呢,本文介绍ubuntu环境如何手工实现:

内核版本:2.16以上,命令:/proc/sys/vm/drop_caches

1、使用该命令需要root用户登录,而在ubuntu通常没有root登录用户,因此需要先建立root用户密码,并且以root登录;
注:(如果你已经设置过root用户密码,则用:su root)登录;
> sodu passwd
输入旧密码,得到权限;
输入两次新密码;
>su root

2、查看当前内存使用情况;
使用free命令:
>free -m

total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/cache: 58 191
Swap: 511 0 511
其中:

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

有了这个基础后,可以得知,我现在used为163MB,free为86MB,buffer和cached分别为10MB,94MB。
那么我们来看看,如果我执行复制文件,内存会发生什么变化.

[root@server ~]# cp -r /etc ~/test/

[root@server ~]# free -m
total used free shared buffers cached
Mem: 249 244 4 0 8 174
-/+ buffers/cache: 62 187
Swap: 511 0 511
在我命令执行结束后,used为244MB,free为4MB,buffers为8MB,cached为174MB,天呐,都被cached吃掉了。别紧张,这是为了提高文件读取效率的做法。

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

那么有人说过段时间,linux会自动释放掉所用的内存。等待一段时间后,我们使用free再来试试,看看是否有释放?


[root@server test]# free -m
total used free shared buffers cached
Mem: 249 244 5 0 8 174
-/+ buffers/cache: 61 188
Swap: 511 0 511
似乎没有任何变化。(实际情况下,内存的管理还与Swap有关)

那么我能否手动释放掉这些内存呢?回答是可以的!


3、手工释放


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


[root@server test]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默认为0。


[root@server test]# sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)


[root@server test]# echo 3 > /proc/sys/vm/drop_caches
[root@server test]# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3


[root@server test]# free -m
total used free shared buffers cached
Mem: 249 66 182 0 0 11
-/+ buffers/cache: 55 194
Swap: 511 0 511
再来运行free命令,会发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB。那么有效的释放了buffer和cache。


分享到:
评论

相关推荐

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

    echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m 4.完成! 查看内存条数命令: dmidecode | grep -A16 Memory Device$ # sync # echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/...

    手工释放linux内存_proc sys vm drop_caches

    Linux的caches的分析,如何手工释放caches。

    实现释放CentOS系统内存的Shell脚本分享

    这几天发现CentOS系统内存一直涨,即使把apache和mysql关闭了,内存也不释放,可以... #echo 1 > /proc/sys/vm/drop_caches   # To free dentries and inodes:   #echo 2 > /proc/sys/vm/drop_caches   # To fre

    linux 清理内存命令详细介绍

    echo 1 > /proc/sys/vm/drop_caches 3.清理后内存使用情况 free -m 4.完成! 查看内存条数命令: # sync # echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_...

    清理Ubuntu等页面缓存,清空物理内存

    清理Ubuntu的页面缓存, drop vm cache。一般大家在做大型工程的编译时,比如linux kernel,Android等总会遇到内存爆满,系统一旦开始刷新...一定要用root用户使用哦,要不然echo 1 > /proc/sys/vm/drop_caches会失败。

    详解Linux手动释放缓存的方法

    echo 1 > /proc/sys/vm/drop_caches drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存 释放完内存后改回去让系统重新自动...

    linux驱动开发proc文件初步

    2.4 /proc/sys/vm - 虚拟内存系统 2.5 /proc/sys/dev - 设备相关参数 2.6 /proc/sys/sunrpc - 远程过程调用 2.7 /proc/sys/net - 网络子系统可调参数 2.8 /proc/sys/net/ipv4 - IPV4设置 2.9 Appletalk 2.10 IPX

    通过Linux系统的内核观察/proc/pid/statm

    本文介绍了通过Linux系统的内核观察/proc/pid/statm,文中解释了输出内容的参数,通过内核代码,我们可以更加清楚的了解proc的机制。

    linux 操作系统 GTK /proc文件 系统监视器

    linux下读取/proc获得系统信息 监控系统状态,显示系统中若干部件的使用情况。 用GTK库实现图形界面显示系统监控状态

    AppTrafficAnalyzer,一个应用程序,可以通过读取/proc/net/xt_qtaguid/stats来分析应用程序的流量.zip

    一个应用程序,可以通过读取/proc/net/xt_qtaguid/stats来分析应用程序的流量

    使用 /proc 文件系统来访问 Linux 内核的内容.rar

    /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux® 内核空间和用户空间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件...

    linux /proc 文件 系统监控器 GTK

    通过读取/proc文件,获得系统信息 监控系统状态,显示系统中若干部件的使用情况。 用GTK库的图形界面显示系统监控状态。

    Linux 系统内存性能测试shell脚本

    Linux 系统内存性能测试shell脚本 脚本使用了 dd 命令和 /proc/sys/vm/drop_caches 文件来测试内存的读写速度和带宽

    支持linux百万级并发的参

    echo xxx >/proc/sys/vm/nr_hugepages Tune tcp : echo "4096 49152 131072" >/proc/sys/net/ipv4/tcp_wmem echo xxxx >/proc/sys/net/ipv4/tcp_max_syn_backlog echo xxxx >/proc/sys/net/core/somaxconn echo ...

    读取/proc/cmdline 文件中的标志位信息

    读取/proc/cmdline 文件中的标志位信息。。

    Qt实现的基于/proc的Linux资源管理器

    基于Ubuntu下/proc虚拟文件系统实现的类似Windows的资源管理器,文章介绍:https://blog.csdn.net/z18223345669/article/details/122377005;内含项目文件和设计报告

    Linux 内存释放命令详解

    2.echo 1 > /proc/sys/vm/drop_caches 以上内容比较简单,成功的给大家介绍了Linux 内存释放命令的知识,希望能够帮助到大家! 您可能感兴趣的文章:php查找指定目录下指定大小文件的方法linux下查看内存条数及每根...

    使用 proc 文件系统来访问 Linux 内核的内容

    使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核的内容使用 proc 文件系统来访问 Linux 内核...

    读取/proc/cpuinfo获取CPU信息demo

    linux平台下,读取/proc/cpuinfo获取CPU信息demo

    linux内核参数修改

    linux内核参数修改 linux 内核 参数 修改 /proc/sys/kernel/shmall 该文件是在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)。 缺省设置:2097152 /proc/sys/kernel/shmax 该文件指定内核所允许的...

Global site tag (gtag.js) - Google Analytics