Linux查看内存使用

Linux查看内存使用

  • top
  • free
  • vmstat
  • /proc/meminfo 文件(重要!所有命令最终都是通过该文件获取系统内存使用情况的)

vmstat

image

  • procs:
    • r (runnable): 处于运行或等待运行状态的进程数。
    • b (blocked): 处于不可中断睡眠状态的进程数,通常是等待 I/O 完成。
  • memory:
    • swpd (swap used): 已使用的交换空间大小(以 KB 为单位)。
    • free (free memory): 空闲内存大小(以 KB 为单位)。
    • buff (buffers): 用作缓冲区的高速缓存的内存大小(以 KB 为单位)。
    • cache (cache): 用作页面高速缓存的内存大小(以 KB 为单位)。
  • swap:
    • si (swap in): 每秒从磁盘交换到内存的 KB 数。
    • so (swap out): 每秒从内存交换到磁盘的 KB 数。
  • io:
    • bi (blocks in): 每秒从块设备接收的块数。
    • bo (blocks out): 每秒发送到块设备的块数。
  • system:
    • in (interrupts): 每秒中断数,包括时钟中断。
    • cs (context switches): 每秒上下文切换数。
  • cpu:
    • us (user): 用户进程占用 CPU 的百分比。
    • sy (system): 系统进程占用 CPU 的百分比。
    • id (idle): CPU 空闲的百分比。
    • wa (wait): CPU 等待 I/O 的百分比。
    • st (steal): 被虚拟化环境窃取的 CPU 百分比。

/proc/meminfo 文件

[root@localhost ~]# cat /proc/meminfo
MemTotal:        3714660 kB
MemFree:         3177016 kB
MemAvailable:    3242452 kB
Buffers:            2708 kB
Cached:           255136 kB
SwapCached:            0 kB
Active:           141640 kB
Inactive:         178340 kB
Active(anon):      51844 kB
Inactive(anon):    19408 kB
Active(file):      89796 kB
Inactive(file):   158932 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Zswap:                 0 kB
Zswapped:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         62136 kB
Mapped:            40020 kB
Shmem:              9116 kB
KReclaimable:      40960 kB
Slab:              95164 kB
SReclaimable:      40960 kB
SUnreclaim:        54204 kB
KernelStack:        4752 kB
PageTables:         1444 kB
SecPageTables:         0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3954476 kB
Committed_AS:     185864 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       54176 kB
VmallocChunk:          0 kB
Percpu:            48128 kB
HardwareCorrupted:     0 kB
AnonHugePages:     14336 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
Unaccepted:            0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      139072 kB
DirectMap2M:     3006464 kB
DirectMap1G:     3145728 kB
  • 核心内存信息:

    • MemTotal: 系统总内存大小(以 kB 为单位)。
    • MemFree: 系统空闲内存大小(以 kB 为单位)。
    • MemAvailable: 系统可用内存大小(以 kB 为单位)。这个值估计了系统在不使用交换空间的情况下,可以立即用于新应用程序的内存量。
    • Buffers: 用于块设备(如磁盘)缓冲的内存大小(以 kB 为单位)。
    • Cached: 用于文件系统缓存的内存大小(以 kB 为单位)。
    • SwapCached: 已经被交换到交换空间,但是仍然被缓存在内存中的内存大小。
  • 交换空间信息:

    • SwapTotal: 系统总交换空间大小(以 kB 为单位)。
    • SwapFree: 系统空闲交换空间大小(以 kB 为单位)。
  • 活动和非活动内存:

    • Active: 最近被使用的内存大小。
    • Inactive: 最近不常被使用的内存大小。
    • Active(anon): 活动的匿名内存(例如,应用程序的堆栈)。
    • Inactive(anon): 非活动的匿名内存。
    • Active(file): 活动的文件缓存内存。
    • Inactive(file): 非活动的文件缓存内存。
  • 其他内存信息:

    • Unevictable: 不能被回收的内存。
    • Mlocked: 被 mlock() 系统调用锁定的内存。
    • Dirty: 等待写入磁盘的脏页。
    • Writeback: 正在被写入磁盘的内存。
    • AnonPages: 匿名内存页(例如,应用程序的堆栈)。
    • Mapped: 映射的文件内存。
    • Shmem: 共享内存。
    • KReclaimable: 可回收的内核内存。
    • Slab: 内核 slab 分配器使用的内存。
    • SReclaimable: 可回收的 slab 内存。
    • SUnreclaim: 不可回收的 slab 内存。
    • KernelStack: 内核堆栈使用的内存。
    • PageTables: 页表使用的内存。
    • CommitLimit: 系统承诺可以分配的内存总量。
    • Committed_AS: 当前已承诺的内存量。
    • VmallocTotal: 内核 vmalloc 区域的总大小。
    • VmallocUsed: 内核 vmalloc 区域的已用大小。
    • VmallocChunk: 可用的最大 vmalloc 连续块。
    • AnonHugePages: 匿名大页。
    • HugePages_Total: 系统配置的大页总数。
    • HugePages_Free: 系统空闲的大页数。
    • Hugepagesize: 大页的大小。
    • DirectMap4k, DirectMap2M, DirectMap1G: 直接映射的内存大小。
  • 关键概念:

    • 内存缓存 (Cache): Linux 系统使用内存缓存来提高文件系统性能。
    • 交换空间 (Swap): 当物理内存不足时,系统会将不常用的内存页交换到磁盘上的交换空间。
    • 大页 (Huge Pages): 大页是一种提高内存性能的技术。
posted @ 2025-03-22 16:31  杨谖之  阅读(684)  评论(0)    收藏  举报