为啥还有内存,SWAP怎么都用上了
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥还有内存,SWAP怎么都用上了相关的知识,希望对你有一定的参考价值。
很正常啊""我的大内和你情况一样,刚刷后事210M的剩余内存,现在装了软件60+还有190M了""就像在电脑上装软件,所有软件都装D盘,C盘容量还会轻微减少的,因为有些系统文件必需要在机身内存的"" 参考技术A 1.用swapper软件:设定swap文件可以放在system和cache及data中,设为开机自动运行2.用脚本配合超级终端+re:设定swap文件可以放在system和cache及data中,并设定为开机加载swap文件为啥linux有足够的内存但是使用了swap
【中文标题】为啥linux有足够的内存但是使用了swap【英文标题】:Why linux has enough memory but swap is used为什么linux有足够的内存但是使用了swap 【发布时间】:2014-10-13 11:18:34 【问题描述】:我有一台服务器运行一个 erlang 应用程序,比如 riak..
问题之前,内存使用是这样的
但是过了很长时间,缓存被清除了,系统开始使用交换。
现在我有两个问题..
为什么系统会释放缓存?这导致系统的IO比以前高的问题
为什么系统还有足够的内存,但是swap还在使用..
以下是最重要的信息:
更新:这个问题又来了..
因为我已经运行命令
sudo swapoff -a
所以系统不使用swap,系统运行良好。
现在的问题是为什么系统发布页面缓存..?
而系统会释放pgae缓存是什么情况呢?
更新:我已经解决了这个问题.. 我从《Understanding Linux Kernel》一书中得到了答案 书上说如果有足够的空闲内存,页面会无限期地保存在缓存中,然后可以在不访问磁盘的情况下被其他进程重用。
我认为这意味着如果页面缓存在系统中停留时间较长,系统会释放缓存。
在我阅读了 linux 源码之后,我会更新它。为什么系统有足够的内存也会释放页面缓存?
谢谢
更新
-
linux为什么即使系统有足够的内存也要交换内存到交换区?
如果我们在进程发现内存不足时交换内存,那么进程需要很长时间才能获得足够的内存。它需要调用页框回收。
-
之所以设置vm.swappiness=0,还是会有swap。
后端有一个 global_reclaim。不检查swappiness值
【问题讨论】:
【参考方案1】:查看正在运行的进程(例如:mysql、java 等...)
如果您为这些进程设置的内存限制过低,有时它们需要更多,则丢失的内存不会被带到缓冲区,而是在交换上。
我认为这可以解释你的问题。
【讨论】:
【参考方案2】:即debian 正在交换很少使用的数据。我认为这种行为被认为是一种优化。 这个问题直接对应这个one。 您可以设置交换因子:
sudo sysctl vm.swappiness=10
【讨论】:
【参考方案3】:这不是问题(交换)
当 linux 操作系统运行时,它会将一些正在运行的服务“搁置”在交换分区中。
但如果您开始使用这些服务,它们将被带回 RAM。
【讨论】:
是的,你说的swap分区是对的,但是这里的问题是,为什么linux release page即使有足够的内存也要缓存。【参考方案4】:您需要记住,从交换区读取比从磁盘读取要快一些。
假设它,将东西保存在交换中是一件好事(并不意味着你的内存已满)。
所以,假设您有 4 Gb 的内存,并且您有 2 Gb 的可用内存。然后你加载一个应用程序 A,它是 2Gb,你将完全占用你所有的 4Gb 内存。然后关闭应用程序 X 并加载应用程序 Y (1Gb)。这意味着应用程序 X 的一半将被移动到交换,主内存现在将包含 Y 和一半 X 的一些“缓存”。
在这种情况下,您将遇到以下情况:
4 Gb 完整内存 系统占用 2 Gb 1 Gb 用于应用程序 Y X 的 1 Gb 缓存交换 * X 为 1 Gb(已删除以加载应用程序 Y)
【讨论】:
感谢您的回复。在这里,我认为我们无法比较从交换读取和从磁盘读取。由于我们存储在 swap 中的数据是匿名页面,匿名页面用于用户模式进程堆栈或堆。并且页面缓存存储在磁盘中。【参考方案5】:您可以调整“swappiness”级别以增加或减少内核对交换空间的依赖。
【讨论】:
【参考方案6】:echo 0 > /proc/sys/vm/swappiness
仅在绝对必要时进行系统交换。
【讨论】:
以上是关于为啥还有内存,SWAP怎么都用上了的主要内容,如果未能解决你的问题,请参考以下文章
deepin linux 做了哪些优化?ubuntu12.04开机后内存占用与CPU占用均不低,deepin linux 就很小.这是为啥?