![操作系统释放缓存 RAM 的速度和效率如何?](https://linux22.com/image/119296/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E9%87%8A%E6%94%BE%E7%BC%93%E5%AD%98%20RAM%20%E7%9A%84%E9%80%9F%E5%BA%A6%E5%92%8C%E6%95%88%E7%8E%87%E5%A6%82%E4%BD%95%EF%BC%9F.png)
我知道“免费 RAM 是浪费 RAM”的概念。我的问题是操作系统如何快速有效地释放缓存的 RAM,以便应用程序在使用高峰时拥有足够的 RAM。
我们有一个在 Linux 上托管的 Web 应用程序。我们通常有 10-20% 的内存利用率。但当调用代码的某些部分时,我们看到峰值高达约 100%。(代码已进行最大优化)。我想在发生这种情况时触发电子邮件。我应该编写一个脚本来监视内存利用率(包括缓存还是仅监视应用程序内存)?
当Linux中出现Out of Memory错误时,是否意味着缓存内存为零并且所有RAM已分配给应用程序?
答案1
操作系统如何快速有效地释放缓存 RAM,以便应用程序在使用高峰时拥有足够的 RAM?
除非您在 Linux 上使用 ZFS,而 ARC 可能无法快速收缩以吸收突然的 RAM 需求,否则内核释放缓存所花费的时间可以忽略不计,正如 Kusalananda 已经评论的那样。
我应该编写一个脚本来监视内存利用率(包括缓存还是仅监视应用程序内存)?
我会监视应用程序内存和系统内存。当减少缓存以为应用程序内存腾出空间时,性能可能会下降,因为需要更多磁盘 I/O。
当Linux中出现Out of Memory错误时,是否意味着缓存内存为零并且所有RAM已分配给应用程序?
当发生内存不足时,大多数缓冲区/缓存已被释放/刷新,但这并不意味着全部内存由应用程序使用。一部分内存仍然由内核使用,也可能是基于 RAM 的文件系统或直接由某些硬件使用。