当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。这个问题,貌似有不少人在问,不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。
$ free -m
total used free shared buff/cache available
Mem: 15707 781 3067 400 11858 14203
Swap: 4096 4 4091
其中:引用
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
为了提高磁盘存取效率,Linux做了一些精心的设计,除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换),还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
实际情况下,内存的管理还与Swap有关
手动释放缓存
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下:
# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默认为0。
# sync手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
sudo -i
# echo 3 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3
手动释放linux缓存——/proc/sys/vm/drop_caches
sudo sh -c “echo 1 > /proc/sys/vm/drop_caches”
sudo sh -c “echo 2 > /proc/sys/vm/drop_caches”
sudo sh -c “echo 3 > /proc/sys/vm/drop_caches”
swap交换区,也称虚拟内存是Linux在内存不足时充当内存的文件(已验证)
在ubuntu里面往往不是物理内存全部耗尽采取使用swap分区,swappiness的值的大小对如何使用swap分区是有着很大的联系的。 swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。两个极端,对于 ubuntu的默认设置,这个值等于60,建议修改为10。具体这样做:
1.查看你的系统里面的swappiness
cat /proc/sys/vm/swappiness不出意外的话,你应该看到是 602.修改swappiness值为10
sudo sysctl vm.swappiness=10但是这只是临时性的修改,在你重启系统后会恢复默认的60,所以,还要做一步:
sudo gedit /etc/sysctl.conf在这个文档的最后加上这样一行:
vm.swappiness=10
定时释放内存
该操作可能导致部分浏览器页面内容丢失转:https://blog.csdn.net/qq_21398167/article/details/51657977
## CPU设置
转:https://blog.csdn.net/Heimerdinger_Feng/article/details/79126365
-sudo apt-get install cpufrequtils-cpufreq-info其中available cpufreq governors:performance,powersave表示我的cpu目前只支持高性能和省电两个模式所有的策略模式包括powersave, userspace, ondemand, conservative, performance这几种-sudo cpufreq-set -g performance-sudo cpufreq-set -d 3000m -u 3400m
设置当下策略下cpu频率【硬件为准】sudo cpufreq-set -d 3000m -u 3400m //适用模式:powersave|ondemand|conservative|performancesudo cpufreq-set -f {3000m~3400m} //适用模式:userspace