为什么我的内存中的缓存总是满的?


13

我有6GB RAM,运行Ubuntu 11.10的i5 2.4GHZ处理器。我对HD进行了分区,以便有8GB的交换空间。

在线流式传输或在Chromium中打开多个标签时,我很快就会在缓存中拥有4GB内存。我认为这会使我的笔记本电脑运行缓慢。在流式传输视频时,几分钟后,它确实会变慢并绊倒/颠簸。

可能是什么问题?我该如何解决?

PS:最初我有4GB,最近又升级到6GB,但是我并没有经历太大的改变。

PPS:free -g在终端上打印此:

               total       used       free     shared    buffers     cached
Mem:             5          2          3          0          0          0
-/+ buffers/cache:          1          4
Swap:            8          0          8

您所说的“ RAM Cache”是什么意思,如何得知它已满?
谢尔盖(Sergey)

free -g当遇到问题并将命令的输出包含在问题中时,可以在终端中运行吗?
Portablejim

在我的上面板中,我有一个小程序,可以指出内存和CPU的使用情况。当我单击它时,它告诉我:“内存:2GB缓存4GB”
Tobias

1
free -g说您有3GB的可用RAM。记忆不是你的问题!
AMS

好的,非常感谢您清除了这些内容,但是也许是因为那时候我没有在线流媒体播放?我刚运行铬。
Tobias

Answers:


13

缓存数据RAM是应该做的事情更快而不是更慢-从磁盘读取反复的事情,当你有未使用的内存仅仅是愚蠢的。但是,如果您溢出到交换空间中,那将会影响性能。您可以通过运行轻松判断是否正在使用任何交换System Monitor。如果问题开始时交换空间图没有上升,则问题与内存无关。

当然,当您流式传输视频时,它将被缓存在内存中,但是要填充6Gb的视频需要大量的视频!我希望下载这么多数据需要花费几分钟以上的时间,而且还会导致更多的问题!

您确定不是其他问题吗?说,也许冷却?与冷却系统相比,许多笔记本电脑的处理器规格都过高。这很好-它提供了很高的峰值性能,对突发流量很有用,同时又保持了较低的体积-但在被迫拨回时钟速率或融化之前,它无法保持很长时间的性能。视频可能占用大量处理器,所以您永远不知道吗?

无论如何,您应该能够从内存使用情况中查看它是否在交换。如果是这样,那就是软件问题,可以解决这些问题。:)


我仅使用1.8%的SWAP。冷却不是问题,因为我有一个带两个风扇的冷却垫。我知道视频是处理器密集型的,但是i5四核2,4GH和6GB RAM应该绝对足以流畅播放。
Tobias

1.8%的掉期对我而言,您的问题并不在于内存用完了。我同意,只要您的处理器没有受到限制,它就应该能够完成这项工作。
AMS

好,也许不是浏览器本身?
Tobias

感谢您的回答,我将尝试使用其他浏览器,并让您知道问题是否仍然存在。再次感谢您,我们非常乐于助人和友善,非常感谢!
Tobias

11

我遇到了同样的问题,似乎从未释放过缓存...一个例子是当我签出存储库并最终获得4GB的缓存时

例:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7949       7425        523          0        112       4433
-/+ buffers/cache:       2879       5069
Swap:         7627          2       7625

我所做的是运行下面的代码(这些注释只是为了使您知道发生了什么),您可以创建一个脚本,以便可以在需要时运行它:

# To free pagecache:
#         echo 1 > /proc/sys/vm/drop_caches
# To free dentries and inodes:
#         echo 2 > /proc/sys/vm/drop_caches
# To free pagecache, dentries and inodes:
#         echo 3 > /proc/sys/vm/drop_caches
sudo sync && sudo sysctl -w vm.drop_caches=3

运行上面的代码后:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          7949       2820       5129          0          2        407
-/+ buffers/cache:       2409       5539
Swap:         7627          2       7625

4
这不是问题,这是页面缓存的工作方式。它将使内容尽可能长时间地缓存,但是当来自其他应用程序的内存压力增加时,将自动释放项目。无需手动清除它。

5
可能是这样,但是在那种情况下算法不是那么好。为什么我会有超过4GB的缓存并开始使用swap?
卡罗

关于这个主题,我喜欢这篇文章:链接
Carlo

1
在我目前的情况下,我正在检查一个巨大的存储库,并且所有文件都将被缓存,直到它填满内存,一旦它开始交换而不是释放缓存...
Carlo

我以前对内核开发很感兴趣..可以肯定的是,这仍然是“设计使然”。如果内核认为某个文件的一部分比某些匿名数据更有可能很快被再次访问,则它将交换匿名数据并保留页面缓存。当然,是否做出正确的决定是一个不同的问题:)
史蒂夫·迪

0

我的建议是运行任何进程浏览器(例如System Monitor),并检查什么进程占用了如此多的内存。张贴在这里,我们将看看是否可以将其关闭。

ps。好的,我现在明白了。我敢打赌它的“插件容器”由于使用内存的方式会随着时间增长。我猜是因为它是Gill Bates系统的端口;)。杀死它无济于事(杀死它会破坏每个页面上的所有动画,主要是广告,还有Youtube视频)。另外,Chromium本身喜欢随着时间而膨胀,因此处理它的唯一方法可能是不时地重新启动它。看看是否有帮助...


确实,当我重新启动浏览器时,流再次恢复流畅运行,但是仅持续了10分钟。然后,我必须重新启动浏览器。
Tobias

的方法中使用:铬250MB铬214 MB铬150MB,compiz的119 MB,时代精神守护111 MB,铬70MB,CPU和60MB,50MB的Rhythmbox,ubuntuone-syndaemon 26MB等的EXE 24%
托拜厄斯

恐怕您的问题可能是由浏览器本身引起的。考虑改用Firefox或您选择的任何一种,用户在网络上的看法是,Chromium消耗的内存比任何其他“顶级”浏览器多3倍。试试看。安装,打开相同数量的标签并进行比较...
Adam Kroczyk

我会的。非常感谢您的建议。一切
Tobias
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.