首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有100%的内存使用率

没有100%的内存使用率
EN

Ask Ubuntu用户
提问于 2014-10-21 06:52:47
回答 3查看 5.3K关注 0票数 2

我有4个GiB内存,系统监视器显示3.8个GiB。我想200 MiB是为GPU准备的。但我从未见过超过3.0 GiB的内存使用情况。如果内存使用量接近3 GiB,则使用交换,当内存达到3 GiB时,计算机会冻结(我正在使用Idea )。

我已经禁用了vm.swappiness (使用了-a)。帮不上忙。然后尝试swappiness=0,swappiness=1,swappiness=20。

当我添加额外的4 GiB时,我看到内存使用了5 GiB。现在我只有4 GiB内存。

我用的是Ubuntu 14.04。为什么系统监视器没有显示3.7或3.8个GiB内存的使用情况?

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2014-10-21 08:08:55

如果您禁用交换,您的RAM将变得更满。如果您增加了交换性,RAM中的数据将被分页到交换分区,当您的ram达到某个级别时。拉姆会吃饱的,但这并不总是个问题。如果您真的想做些什么,可以运行以下命令来结清现金:

(警告:如果您已经安装了配置文件同步守护进程,请关闭火狐并在运行以下命令之前运行命令sudo service psd stop!)

代码语言:javascript
复制
echo "3" | sudo tee /proc/sys/vm/drop_caches

这将清除您的现金,即使大多数时候,这是不必要的,特别是如果交换是启用的。当人们看到linux桌面上的RAM使用率很高时,人们通常会感到震惊,但开发人员坚持认为,系统实际上会运行得更快,因为内存中的内容是缓存的数据,系统可以轻松、快速地检索这些数据。当系统大量使用时,这些缓存的文件将被传输到交换。

您没有看到像以前那样大量使用RAM的原因是Linux是为了最有效地利用和利用可用的系统资源而设计的。因此,如果您有12 9GB的RAM,您可能会看到8甚至9GB的RAM使用。大量使用的RAM用于缓存,通常不需要运行直接桌面。

对于显示正在使用的3GB RAM的系统,请运行以下命令,您应该得到一个更准确的数字:

代码语言:javascript
复制
free

系统监视器说我正在使用1.4GB的RAM,而实际使用的RAM (包括缓冲区/缓存)是2.7GB,几乎是报告数字的两倍。这个数字通常要高得多,因为缓存有时会增长到总数的50%以上。此外,当实际数字接近4.9GB时,系统监视器报告我的总RAM为4.7。

为了帮助诊断您的问题,您可以安装htop和iotop,以便更好地了解有问题时发生了什么。安装:

代码语言:javascript
复制
sudo apt-get install iotop htop

跑:

代码语言:javascript
复制
sudo iotop

代码语言:javascript
复制
sudo htop

根据我自己的经验,我一直使用交换来获得更好的系统性能,并且在禁用交换时遇到了问题(系统冻结)。事实上,这很可能是你的电脑结冰的原因。如果没有交换,系统就无法在满后继续使用RAM。如果大量使用RAM,则切换过低也会导致过多的分页和硬盘崩溃。使用iotop时,这个问题有时会显示为过多的kworker活动。

票数 4
EN

Ask Ubuntu用户

发布于 2014-11-21 03:07:43

这个工具在它报告为“免费”的内容中没有包括磁盘缓存。您的系统正在进行交换,以维护大小合理的磁盘缓存。

有关更多信息,请参见我对这个问题的回答。以下是一段节选:

每个应用程序都可以使用一些内存。Linux使用所有其他未占用的内存(除了最后几个Mb)作为“缓存”。这包括页面缓存、inode缓存等。这是一件好事--它有助于加快堆的速度。通过高速缓存可以大大加快对磁盘的写入和从磁盘的读取速度。理想情况下,您有足够的内存供所有应用程序使用,并且仍然有数百Mb用于缓存。在这种情况下,只要应用程序不增加它们的内存使用,并且系统不会给缓存带来太大的压力,就没有必要进行任何交换。一旦应用程序拥有更多的RAM,它就会进入缓存所使用的空间,缩小缓存。去分配缓存既便宜又简单,只需实时完成--缓存中的所有内容要么只是已经在磁盘上的东西的第二个副本,要么就可以立即释放,或者是我们必须在接下来的几秒钟内刷新到磁盘的东西,因此在将缓存重新分配给应用程序时没有任何性能问题。因此,当有人提到“空闲”RAM时,这可能包括缓存,也可能不包括缓存,因为缓存只占用“空闲”RAM。这并不是Linux特有的情况,所有现代操作系统都是这样工作的。不同的操作系统可能只是报告不同的空闲RAM :一些包括缓存作为他们认为“免费”的一部分,而另一些则可能没有。当您谈到空闲RAM时,包含缓存更有意义,因为它实际上是免费的--如果任何应用程序请求它,它都是可用的。在Linux上,free命令以两种方式报告它:第一行包括使用的RAM列中的缓存,第二行包括使用的RAM列中的缓存。

..。

一旦占用了足够的内存,以致没有足够的内存用于平稳运行的缓存,Linux可能会从RAM中重新分配一些未使用的应用程序内存来交换,以便为缓存重新获得一些内存。但是,它并不是按照明确的截止时间来实现这一点的。这并不是说您达到一定比例的分配,然后Linux开始交换。它有一个相当“模糊”的算法。它考虑了很多事情,最好用“内存分配的压力有多大”来描述。如果有很大的“压力”来分配新的内存,那么它将增加一些人被交换以腾出更多空间的机会。如果有较少的“压力”,就会减少这些机会。

注意:我上面所说的不仅适用于Linux,而且适用于几乎所有的现代计算机操作系统,包括Windows、Mac等。

票数 2
EN

Ask Ubuntu用户

发布于 2016-08-26 14:51:48

您可以更改或修改参数vm.min_free_kbyte/etc/sysctl.conf中的de值。

这控制了可供特别储备使用的内存数量,包括“原子”分配(那些不能等待回收的内存)。

您可以设置一个小值并查看其运行情况。

您可以在 post中看到更多信息。

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/539640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档