Linux 内存数据 Metrics 指标解读

过去从未仔细了解过使用 freetop 等命令时显式的内存信息,只关注了已用内存 / 可用内存。本文我们详解解读和标注一下各个数据项的含义,同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识,很多查看内存的命令行工具都是 cat /proc/meminfo 里的数据,所以数据来源都是一样的,区别只在于显式格式,用户体验上。本文我们以 free 命令为主,最后介绍一下 tophtop 的一些细微差异。先看下图:

Linux 内存数据 Metrics 指标解读_第1张图片
第一行:

  • total: 总的物理内存
  • used: 已用内存,是 total - free 的值
  • free: 可用内存(没有被任何进程占用的内存)
  • shared: 被 tmpfs 文件系统使用的内存,tmpfs 会将文件加载到内存中以便更快速的访问
  • buffers / cached: 由操作系统内核管理的内存空间,存放的是近期访问过的数据,可以认为是 OS 级别的缓存,显然从这里读取数据要比从磁盘读取快得多

第二行:

  • -/+ buffers/cache used: 真 • 已用内存,是 used - ( buffers + cached ) 后的值,这是直接被各个进程占用的真实内存,buffers / cached 值不应统计在内,因为当内存紧张时,它们也会被征用并分配给应用程序。Ganglia 中使用的 Used Mem 就是这个值!
  • -/+ buffers/cache free: 真 • 可用内存,是 free + ( buffers + cached ) 后的值,这是真正还可以拿来分配的总内存,buffers / cached 值应该统计在内,因为当内存紧张时,它们也会被征用并分配给应用程序。

第二行的统计数据更具有实际参考意义!其实对于“已用内存”和“可用内存”这两个指标,第一行和第二行使用的两种统计口径,差别在于:buffers / cached 是算成已用内存还是可用内存,它们被操作系统管理,属于“可调节”的机动资源,应用程序占用的资源多时,buffers / cached 就多一些,反之就让渡出来给应用程序,所以它们被看成可用内存会更合理一些,所以说第二行数据更有参考价值,这也是 Ganglia 取 -/+ buffers/cache used 做“已用内存”的原因

另外

  • 使用 top 命令查看内存时是不显示 free 的第二行数据的;

  • 使用 htop 命令查看内存时,是通过颜色来区分的:

    • Green = Used memory
    • Blue = Buffers
    • Yellow/Orange = Cache

Linux 内存数据 Metrics 指标解读_第2张图片

参考:

https://www.turing.com/kb/how-to-use-the-linux-free-command
https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free

你可能感兴趣的:(Linux与Shell编程,内存,free,指标,metric,可用内存,已用内存,cache)