Muh*_*ana 5 rhel cache buffer mysql ram
监控系统不断提醒我的机器正在达到\突破它的 RAM 利用率阈值,即15 GBs。
我做了一些阅读并了解到明显的 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 6
Run Code Online (Sandbox Code Playgroud)
Linux 版本是:
[root@ipk ~]# uname -rmo
2.6.32-220.el6.x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
ter*_*don 15
由于您似乎既不接受我们的意见,也不接受我们作为“官方”链接的各个页面,也许 Red Hat 官方文档会说服您:
在此示例中,可用内存总量为 4040360 KB。进程使用 264224 KB,其他应用程序免费使用 3776136 KB。不要被第一行显示 28160KB 是免费的搞糊涂了!如果您查看使用数据,您会发现大部分内存使用用于缓冲区和缓存。Linux 总是尝试通过将可用内存用于缓冲区(文件系统元数据)和缓存(具有文件或块设备的实际内容的页面)来使用 RAM 来加速磁盘操作。这有助于系统运行得更快,因为磁盘信息已经在内存中,从而节省了 I/O 操作。如果程序或应用程序(如 Oracle)需要空间,Linux 将释放缓冲区和缓存以为应用程序提供内存。 如果您的系统运行了一段时间,您通常会在第一行的“空闲”字段下看到一个小数字。
小智 7
这一切都很好而且很花哨,但是在必须发出内存请求与将其映射到磁盘缓存必须释放的内容之间的延迟时间呢?当然,你可能会说它很小,甚至不明显,但也许我关心由于这个过程增加的 0.0000001 秒。你是谁来决定如何使用我的内存?
如果我不想经历这种滞后时间怎么办?也许我不介意我的应用程序从驱动器加载速度较慢,但希望它立即占用 RAM,而没有延迟时间从磁盘缓存中取消映射内存。
如何限制磁盘缓存占用的 RAM 量?不要告诉我这是在没有办法的情况下实现的。
更新:找到了一种方法。
echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
做一:free -m
运行以上确认后。有用。