在我的工作中,我经常遇到以下情况:Linux的内存很大,但是缓存占用了大部分内存空间,导致Linux开始交换。
Marge Education关于Linux内存的文章,您可以一目了然地理解:
下面的图片是这样的:
总内存为128G,缓存占用108G,导致系统不得不使用交换内存,这会导致性能下降和速度降低
缓冲和缓存的作用:
缓存主要负责缓存文件的使用,而较大的日志文件会导致缓存区域的内存增加,并且内存已用完。
Free中的缓冲区和缓存:(它们都占用内存):
buffer:作为缓冲区高速缓存的内存,它是块设备的读写缓冲区

cache:作为页面缓存的内存,是文件系统的缓存
如果缓存的值很大,则意味着缓存中有很多文件。
为了提高磁盘访问效率,Linux进行了一些仔细的设计。除了缓存dentry(用于VFS以加速文件路径名到inode的转换)之外,它还采用两种主要的Cache方法:Buffer Cache和Page Cache。前者用于读取和写入磁盘块,而后者用于读取和写入文件索引节点。这些缓存有效地缩短了I / O系统调用(如读取,写入,getdents)的时间。
如何解决导致机器速度降低的问题?
罪魁祸首是内存被缓存,而空闲空间基本消失了。
所以我们应该考虑如何释放缓存的内存
重启机器肯定可以解决,但是我们绝对不能使用这种方法
有三种释放方法(系统默认值为0,释放后需要将其更改回0):

要释放页面缓存:回显1> / proc / sys / vm / drop_caches
要释放牙科和i节点:回显2> / proc / sys / vm / drop_caches
要释放页面缓存,牙科和索引节点:回显3> / proc / sys / vm / drop_caches
常见方法是:echo 1> / proc / sys / vm / drop_caches
执行上述命令,您可以释放大约40G的缓存空间
经常使用rsync传输大量数据的朋友可能会遇到类似的情况:首先,过去传输大量文件,然后传输的数据虽然不大,但速度非常慢,而且慢。在另一台服务器上看到它。我发现在终端中输入命令不会感到缓慢,但是当查看内存使用情况时,我发现可用内存非常小,几乎接近零。我认为可能是由于内存被缓存所致。
为什么我们要释放缓存的内存?因为当我们使用rsync传输大量数据时,Linux系统将一些文件信息缓存在内存中,这可以减少常用文件的磁盘IO时间。当我们传输一批文件时,我们必须传输另一文件。过去,批处理文件是完全不同的文件,或者文件的内容已更改。内存中缓存的文件不是我们所需要的。我们需要清除缓存并释放内存以传输下一批文件。这时候,我们很渴望。无需查看更多内存。

在这种前提下,我们有必要亲自手动清除缓存以释放更多可用内存
注意:在清除缓存之前,我们需要在Linux系统中执行sync命令,以将尚未写入磁盘的缓存内容写入磁盘
除了释放缓存的内存外,还需要设置vm.swappiness的值以尽可能多地使用物理内存
查看vm.swappiness参数的值:
#sysctl -q vm.swappiness
临时设置vm.swappiness的值(重新启动后生效)
#sysctl vm.swappiness = 10
永久设置vm.swappiness:
echo“ vm.swappiness = 10” >> /etc/sysctl.conf
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-360495-1.html
别忘了苹果也是在中国生产的
就是有人先知道要双降啊
常识告诉我不太可能
打倒美帝国主义