我有一个专门用于 MySQL 的虚拟服务器,用于运行一些应用程序。这是一个 256 MB 的服务器。目前里面几乎没有任何数据,但free -m
显示了完整的内存使用情况:
total used free shared buffers cached
Mem: 245 197 47 0 23 120
-/+ buffers/cache: 53 192
Swap: 511 2 509
这是在 Ubuntu 10.04 上。所有配置设置都是默认的 IIRC——键缓冲区是 16,查询缓存是 16。(我可能遗漏了一些
因此,在我看来,在几乎没有任何数据并且缓冲区没有特殊设置的情况下,我应该使用远低于 256 的值。256 是否只是目前 OS + MySQL 所需的下表?
答案1
正如 Jeff 所说,Linux 上的使用数字可能会令人困惑。Linux 会自动在 RAM 中保留您访问的文件的副本。如果您再次需要它们,访问它们比返回磁盘更快。如果运行程序需要更多 RAM,则可以完全丢弃这些缓存项目。这是有道理的。不幸的是,该free
命令以包含这些缓存文件的方式向您显示数字,并使您看起来几乎用完了 RAM。
您确实应该多看看第二行,而不是第一行。第二行是不包括缓冲区/缓存数据的内存使用情况。在您的例子中,它显示您正在使用 53MB,并且有 192MB 可用。——
Christopher Karel
答案2
RAM 用于将常用位存储在比硬盘更快的存储器中。空闲的最右侧列表示一半的 RAM 被用于从硬盘缓存。
如果您没有使用所有 RAM,那么您就是在浪费资源。在内存不足的情况下删除缓存几乎是免费的,而如果某些内容未缓存,则从磁盘读取的速度会慢几个数量级。