微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vm / min_free_kbytes – 为什么要保留最小保留内存?

根据这篇文章

/ proc / sys / vm / min_free_kbytes:这个控制内存空间的大小,这个空间可以被特殊的储备使用,包括“primefaces”分配(那些不能等待回收的内存)

我的问题是,那些“不能等待收回”的人是什么意思? 换句话说,我想了解为什么需要告诉系统始终保持一定的最小内存量,并且在什么情况下会使用这个内存? [它必须被某物使用; 否则没有看到需要]

我的第二个问题:设置这个内存高于4MB(在我的系统上)导致更好的性能? 我们有一个服务器偶尔会performance出很差的shell性能(例如ls -l需要10-15秒才能执行),如果将这个数字设置得更高,会导致更好的shell性能

PHP获取Linux发行版名称

如何在UWP中获得操作系统版本

为什么32位等于4Giga字节而不是4千兆位

无法使用read()系统调用从其他terminal读取数据

Linux中复制和粘贴function的代码在哪里?

如何在Python中检查操作系统?

捕获窗口中的http / https请求

可以在Shift,Ctrl,Alt或Win键之一中使用其他用途,例如键入文本?

当控制权返回时,操作系统是否会假定被调用者保存的寄存器?

如何获得信号来捕捉SIGABRT

链接已经死了,看起来像现在这里

该文本是指原子分配,这是内存的请求,必须满足而不放弃控制(即当前线程不能被暂停)。 这种情况通常发生在中断例程中,但是它适用于所有需要内存的情况,同时持有一个基本的锁。 这些分配必须是立即的,因为你不能等待交换器释放内存。

有关更详细的解释,请参阅Linux-MM ,但以下是内存分配过程:

_alloc_pages首先遍历每个内存区域,寻找包含合格的免费页面的第一个内存区域

_alloc_pages然后唤醒kswapd任务[..to ..]点击保留的每个区域的保留内存池。

如果内存分配仍然不成功,_alloc页面将放弃[..] 在这个过程中_alloc_pages执行一个cond_resched(),这可能会导致睡眠,这就是为什么这个分支被禁止与GFP_ATOMIC分配

min_free_kbytes对描述的“ls -l需要10-15秒执行”不太可能有帮助。 这可能是由一般的记忆力和交换而不是区域耗尽造成的。 min_free_kbytes设置只需要允许足够的空闲页面来处理即时请求。 一旦正常操作恢复,交换器进程可以运行来重新平衡内存区域。 我必须增加min_free_kbytes的唯一时间是在不支持dma散播的网卡上启用巨型帧之后。

为了扩展你的第二个问题,你会有更好的结果调整vm.swappiness和在链接文章中提到的脏比率。 但是,请注意,对“ls -l”性能进行优化可能会导致其他进程变慢。 永远不要为非主要用例进行优化。

所有的linux系统都会尝试使用系统可用的所有物理内存,通常是通过创建一个文件系统缓冲区缓存,这个缓存简单地说就是一个I / O缓冲区,以帮助提高系统性能。 从技术上讲,这个内存没有被使用,即使它被分配用于缓存。

在你的问题中,“等待回收”指的是回收那个“未被使用”的缓冲存储器的过程,以便它可以被分配给一个过程。 这应该是透明的,但在现实世界中,有许多进程不等待这个内存变得可用。 Java是一个很好的例子,特别是在设置了最小堆大小的情况下。 该进程试图分配内存,如果它不是立即在一个大的连续(原子?)块中可用,则进程将会死亡。

使用min_free_kbytes保留一定数量的内存可以使此内存立即可用,并在新内存需要启动,运行和完成时,减少内存压力,同时还有高内存负载和缓冲区缓存。

4MB似乎相当低,因为如果缓冲区缓存已满,任何想要立即分配超过4MB的进程可能会失败。 该设置是非常可调和系统特定的,但如果你有几GB的内存可用,它不会伤害到提高到128MB的预留内存。 我不确定它会对壳互动有什么影响,但可能是积极的。

这个内存不被正常的进程使用。 正如@Arno所提到的那样,可以运行的特殊进程包括中断例程,它必须立即运行(因为它是一个中断),并在任何其他进程可以运行之前完成(原子)。 这可以包括内存已满时将内存换出到磁盘等内容

如果内存被填满,一个中断(内存管理)进程将运行一些内存到磁盘,这样可以释放一些内存以供普通进程使用。 但是,如果vm.min_free_kbytes太小而无法运行,则会锁定系统。 这是因为这个中断过程必须首先运行以释放内存,以便其他人可以运行,但是由于它没有足够的保留内存vm.min_free_kbytes来执行其任务导致死锁,所以它被卡住了。

另请参阅:

https://blogs.linbit.com/p/28/kernel-min_free_kbytes/和

https://askubuntu.com/questions/41778/computer-freezing-on-almost-full-ram-possibly-disk-cache-problem (其中内存管理进程有很少的内存来处理它需要这么长的时间来交换一点一点的感觉就像冻结了一样。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐