我们有一个关键应用程序,它占用了我们大部分的 RAM 内存。大多数时候,该应用程序都位于 RAM 中,但是在某些情况下(例如,当其他一些应用程序和守护进程开始使用更多 RAM 时),它会转到 SWAP,这意味着我们的应用程序开始响应非常缓慢。
有什么方法可以阻止我们的应用程序进入 SWAP 状态?
多谢你们!
答案1
关闭交换,或者使用mlockall()以防止进程内存被换出。但是,对于可以锁定的页面数量,进程和系统存在限制,可能需要根据您的目的进行调整。
答案2
看一看这里通过将 0 到 100 之间的值回显到/proc/sys/vm/swappiness
,您可以控制交换的迫切程度(0 表示不太迫切,而 100 表示非常迫切)。
答案3
首先,您需要解决要进行交换的根本原因。这意味着调整您的应用或添加 RAM。交换是症状,而不是问题 - 您的应用的硬件大小不正确(或调整/架构不佳的应用)才是问题所在。
答案4
阻止应用程序交换可能会使其响应速度变慢。操作系统只能交换出您的应用程序,因为它别无选择。如果您阻止它这样做,系统上的总 I/O 负载将会增加,因为其他进程必须更多地交换进出,因为您占用了所有物理内存。这也会减慢您的 I/O 速度,结果将是一场灾难。
如果一台机器没有足够的物理内存来处理其工作负载,那么它就会变慢。增加物理内存或减少工作负载是解决方案。像您建议的那样进行粗暴的调整往往会使一切变得更糟。