Linux 系统 内存通用指标以及查询方式

171 阅读4分钟

指标

指标含义作用
MemTotal系统总内存表示系统可用的总物理内存大小
MemFree系统空闲内存表示当前未被使用的物理内存大小
MemAvailable可用内存估算的可供应用程序启动而不需交换的内存
Buffers缓冲内存由内核分配的缓冲区大小
Cached缓存内存由内核分配的缓存大小,用于存储最近使用的文件数据
SwapCached交换缓存已被交换出去的内存,但仍被存储在swap文件中,以便更快的重新调入内存
Active主动使用内存最近被使用的内存,不太可能被移至swap(交换空间)
Inactive不活跃内存不常被使用的内存,更可能被移至swap
SwapTotal交换总空间系统总的交换空间大小
SwapFree空闲交换空间当前未被使用的交换空间大小
Dirty脏页等待被写回到磁盘的内存
Writeback正在写回正在被写回到磁盘的内存
SlabSlab缓存内核数据结构缓存
PageTables页表管理虚拟地址空间的页表的内存
RSS常驻集大小进程实际使用的物理内存大小
RES常驻内存大小类似于RSS,进程实际使用的物理内存大小

查询方式

要检查和分析系统内存和进程内存使用情况,以下是您可以使用的主要指标,以及每个工具的含义、作用和分析方法:

  1. psrss(Resident Set Size):

    • 含义: 表示进程的常驻内存集大小,即进程当前使用的物理内存量。
    • 作用: 用于评估单个进程的内存占用。
    • 分析方法: 使用ps命令(如ps aux)查看rss值,以了解进程的内存使用情况。较高的rss值可能表明进程正在使用大量物理内存。
  2. topRES(Resident Memory Size):

    • 含义: 同psrss,表示进程的常驻内存集大小。
    • 作用: 提供实时更新的进程内存使用情况。
    • 分析方法: 在top命令中观察RES列,以监控进程的内存使用。top还可以按内存使用量对进程进行排序,帮助识别内存使用最多的进程。
  3. free命令:

    • 含义: 显示系统内存的总量、使用量、空闲量以及缓存和缓冲区的使用情况。
    • 作用: 快速了解系统的内存使用概况。
    • 分析方法: 运行free命令,关注usedfree列,以及buffers/cache行,这可以帮助您了解系统内存的使用和可用性。
  4. /proc/meminfo文件:

    • 含义: 提供详细的系统内存使用信息。
    • 作用: 用于深入分析系统内存使用情况。
    • 分析方法: 使用cat /proc/meminfo查看详细的内存信息。您可以找到如MemTotal, MemFree, Buffers, Cached, SwapTotal, SwapFree等关键指标,以及其他内核内存使用情况的指标,如SlabPageTables

使用这些工具和指标时,您可以按照以下步骤进行分析:

  • 步骤1: 使用free命令获取内存使用的概览。
  • 步骤2: 如果需要实时监控或查看特定进程的内存使用情况,使用topps
  • 步骤3: 对于更深入的分析,如内存泄漏或详细的内存分配情况,查看/proc/meminfo

通过这些步骤,您可以建立一个全面的内存使用情况视图,从而更有效地管理和优化系统资源。


命令之间的差异

  1. psrsstopRES:

    • ps命令中的rss值和top命令中的RES值确实都表示进程的常驻内存集大小,即进程当前使用的物理内存量。
    • 通常,这两个值是类似的,因为它们都是从内核中获取相同的信息。
    • 然而,top提供了一个动态的、实时更新的视图,包括系统的整体性能指标和每个进程的性能指标,而ps通常用于一次性查看进程的状态。
    • 如果您只是想快速查看某个进程的内存使用情况,ps可能更方便。如果您想要一个持续更新的系统性能概览,包括内存使用,top会更合适。
  2. freecat /proc/meminfo:

    • free命令提供了一个简洁的总结,显示了系统内存的总量、使用量、空闲量以及缓存和缓冲区的使用情况。
    • /proc/meminfo提供了更详细的信息,包括所有free显示的内容以及更多细节,如Slab重用内存、PageTables的使用情况等。
    • 对于想要快速了解内存概况的用户来说,free命令通常就足够了。而对于需要详细内存信息的高级用户或开发人员,/proc/meminfo提供了更全面的数据。

在实际使用中,您可以根据需要选择合适的工具。如果您需要实时监控和全面的进程内存使用情况,top是一个好工具。如果您需要快速了解系统内存使用的快照,free是一个简单的选择。如果您需要进行详细的内存分析或故障排除,/proc/meminfo将提供最详尽的信息。