一个监控系统不断提醒我的机器正在突破RAM的使用阈值,即15 GB。
我已经做了一些阅读,并且了解到,表面上的RAM利用率不是实际的,额外的RAM用于缓存\缓冲磁盘I\O操作,以提高服务器的性能。我在那个服务器上运行MySQL,这是唯一值得注意的运行服务。
这是free -gt的输出
[root@ipk ~]# free -gt
total used free shared buffers cached
Mem: 15 15 0 0 0 9
-/+ buffers/cache: 5 10
Swap: 5 0 5
Total: 21 15 6Linux版本是:
[root@ipk ~]# uname -rmo
2.6.32-220.el6.x86_64 x86_64 GNU/Linux发布于 2013-09-15 16:09:40
由于你似乎既不接受我们的意见,也不接受我们作为“官方”链接到的各种页面,也许官方的红帽文档会说服你:
在本例中,可用内存量为4040360 KB。进程使用264224 KB,其他应用程序免费使用3776136 KB。不要被第一行弄糊涂了,因为第一行显示280 Do是免费的!如果您查看使用情况,您可以看到大部分内存使用都是用于缓冲区和缓存。Linux总是试图通过使用缓冲区(文件系统元数据)和缓存(具有文件或块设备实际内容的页面)的可用内存来使用RAM来加速磁盘操作。这有助于系统更快地运行,因为磁盘信息已经在内存中,从而节省了I/O操作。如果像Oracle这样的程序或应用程序需要空间,那么Linux将释放缓冲区和缓存,为应用程序生成内存。如果您的系统运行了一段时间,您通常会在第一行的字段下面看到一个“空闲”的小数字。
发布于 2015-08-29 14:11:32
这一切都很好,但是从发出内存请求到映射磁盘缓存必须发布的内存之间的滞后时间又如何呢?当然,您可能会说这是最小的,甚至是不值得注意的,但是也许我关心的是由于这个过程而增加的0.0000001秒。你是谁来决定如何使用我的内存?
如果我不想经历这样的滞后时间呢?也许我不介意我的应用程序从驱动器加载得更慢,但我希望它能够立即占用RAM,而不需要从磁盘缓存卸载内存的滞后时间。
如何限制我的磁盘缓存占用多少RAM?不要告诉我这是在没有方法的情况下实现的。
更新:找到了一种方法。
echo 3 | sudo tee /proc/sys/vm/drop_caches做a:free -m后,运行上述确认。它起作用了。
https://unix.stackexchange.com/questions/90760
复制相似问题