01 - /proc/meminfo

 

查看RAM使用情况最简单的方法是通过/proc/meminfo。这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。/proc/meminfo列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。

 

Linux查看内存_共享库

1、MemTotal

MemTotal译为内存总大小,是系统从加电开始到引导完成,BIOS等要保留的部分内存,内核要保留的部分内存,最后剩下可供系统支配的内存就是MemTotal,这个值在Linux VPS运行过程中基本是不变的。

2、MemFree

MemFree译为空闲内存大小,表示系统尚未使用的内存,其中,MemUsed=MemTotal-MemFree,表示已被使用过的内存。

3、MemAvailable

MemAvailable译为可用内存数大小,这是因为系统中有些内存虽然已被使用但可以回收,比如cache/buffer、slab都有一部分是能够被回收的,所以MemFree不能代表全部可用的内存,这部分可回收内存加上MemFree才是系统可用的内存,也就是:MemAvailable≈MemFree+Buffers+Cached,当然它是一个估值。

 

注意:MemAvailable与MemFree的关键区别在于,MemAvailable是应用程序层面的内存大小,而MemFree是系统层面的内存大小。

 

除了以上三个主要内存的概念和区别之外,以下几个概念对内存也有间接的影响,他们分别是:

Buffer:缓冲区内存数;

Cache:缓存区内存数;

Shared:多个进程共享的内存空间。

 

其中,Buffer与Cache的主要区别有以下两点:

 

首先,Buffer是缓冲的意思,Cache是缓存的意思,从而概念上来看这二者就有很明显的区别,一个是像弹簧一样具有缓冲,一个像保管箱,可以进行短暂的存储。

其次,它们也被称作write-buffer和read-cache,所以Buffer一般用作写操作,Cache一般用在读操作上面。

 

根据上图的“free”命令,这里简单总结下这几个内存概念直接的计算公式,即:

  •  
Mem total =Mem used +Mem freebuffers/cache used = Mem used -Mem buffers – Mem cachedbuffers/cache free =Mem free + Mem buffers +Mem cachedbuffers/cache total =buffers/cache used + buffers/cache free =Mem total

 

 

02 - Free

 

free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。

Linux查看内存_sed_02

 

 

03 - ps

 

Linux查看内存_top命令_03

 

 

04 - top

 

top命令提供了实时的运行中的程序的资源使用统计。你可以根据内存的使用和大小来进行排序。

Linux查看内存_虚拟内存_04

 

 

05 - vmstat

 

vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

Linux查看内存_sed_05

 

 

06 - atop

 

atop命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。

 

Linux查看内存_sed_06

 

 

07 - htop

 

htop命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。

  •  
htop

 

 

08 - GNOME System Monitor

 

GNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看CPU及内存使用情况的方法。

  •  
gnome-system-monitor

 

 

09 - memstat

 

memstat是一个有效识别executable(s), process(es) and shared libraries使用虚拟内存情况的命令。给定一个进程ID,memstat可以列出这个进程相关的可执行文件、数据和共享库。

  •  
memstat -p <PID>

 

 

10 - nmon

 

nmon是一个基于ncurses的系统基准测试工具,它可以监控CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。

  •  
nmon

 

 

11 - smem

 

smem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图)。

  •  
sudo smem --pie name -c "pss"

 

 

12 - KDE System Monitor

 

功能同 8 中介绍的GENOME版本。

  •  
ksysguard

 

Linux查看内存_缓存_07