查看内存占用率的方法

Linux查看内存占用率的方法及相关操作

1. free命令

  • 功能:显示系统内存的使用情况,包括总内存、已使用内存、空闲内存等信息。
  • 示例
  • bash

    free -h

  • 输出说明
  • total used free shared buff/cache available

    Mem: 7.7G 3.0G 1.4G 888M 3.2G 3.9G

    Swap: 2.0G 0B 2.0G

  • `total`:总内存大小。
  • `used`:已使用的内存大小。
  • `free`:空闲内存大小。
  • `shared`:共享内存大小。
  • `buff/cache`:缓冲区和缓存使用的内存大小。
  • `available`:可用于启动新应用程序的内存大小。
  • 2. top命令

  • 功能:实时显示系统中各个进程的资源使用情况,包括内存占用率。
  • 示例
  • bash

    top

  • 操作说明
  • 按下 `M` 键可以按照内存使用率对进程进行排序。
  • 输出说明
  • PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    13183 user1 20 0 3309580 550188 168372 S 0.3 9.0 1:33.27 Web Content

    32469 user1 20 0 3492840 447372 163296 S 7.3 7.3 3:55.60 firefox

  • `PID`:进程ID。
  • `USER`:进程所有者。
  • `PR`:进程优先级。
  • `NI`:进程的nice值。
  • `VIRT`:进程使用的虚拟内存大小。
  • `RES`:进程使用的物理内存大小。
  • `SHR`:进程使用的共享内存大小。
  • `S`:进程状态。
  • `%CPU`:进程的CPU使用率。
  • `%MEM`:进程的内存使用率。
  • `TIME+`:进程运行的总时间。
  • `COMMAND`:进程的命令名。
  • 3. vmstat命令

  • 功能:报告虚拟内存统计信息,包括内存使用情况、进程状态、CPU活动等。
  • 示例
  • bash

    vmstat -s

  • 输出说明
  • 8010408 K total memory

    344016 K used memory

    5444384 K active memory

    1380052 K inactive memory

    283468 K free memory

    719668 K buffer memory

    6663256 K swap cache

    4194304 K total swap

    724 K used swap

    4193580 K free swap

  • `total memory`:总内存大小。
  • `used memory`:已使用的内存大小。
  • `active memory`:活跃内存大小。
  • `inactive memory`:非活跃内存大小。
  • `free memory`:空闲内存大小。
  • `buffer memory`:缓冲区内存大小。
  • `swap cache`:交换缓存大小。
  • `total swap`:交换空间总大小。
  • `used swap`:已使用的交换空间大小。
  • `free swap`:空闲交换空间大小。
  • 4. /proc/meminfo文件

  • 功能:提供系统内存使用情况的详细信息。
  • 示例
  • bash

    cat /proc/meminfo

  • 输出说明
  • MemTotal: 8010408 kB

    MemFree: 283468 kB

    MemAvailable: 3902684 kB

    Buffers: 719668 kB

    Cached: 6663256 kB

    SwapTotal: 4194304 kB

    SwapFree: 4193580 kB

  • `MemTotal`:总内存大小。
  • `MemFree`:空闲内存大小。
  • `MemAvailable`:可用内存大小。
  • `Buffers`:缓冲区内存大小。
  • `Cached`:缓存内存大小。
  • `SwapTotal`:交换空间总大小。
  • `SwapFree`:空闲交换空间大小。
  • 相关操作

    Linux查看内存占用率的方法及相关操作

    1. 查找占用内存过高的进程

  • 操作:使用 `top` 命令并按下 `M` 键,按照内存使用率对进程进行排序。
  • 示例
  • bash

    top

  • 分析:根据 `%MEM` 列的值,可以快速定位占用内存最多的进程。
  • 2. 终止占用内存过高的进程

  • 操作:在 `top` 命令界面中,按下 `k` 键,输入要终止的进程的PID,然后按 `Enter` 键确认。
  • 示例
  • bash

    top

    按下k键,输入PID,按Enter键

  • 注意事项:终止操作系统关键进程可能导致系统重启,请谨慎操作。
  • 3. 查看共享内存占用情况

  • 操作:使用 `cat /proc/meminfo | grep -i shmem` 命令。
  • 示例
  • bash

    cat /proc/meminfo | grep -i shmem

  • 分析:如果输出值较高,可能存在共享内存占用过高的情况。
  • 4. 查看不可回收的slab内存占用情况

  • 操作:使用 `cat /proc/meminfo | grep -i SUnreclaim` 命令。
  • 示例
  • bash

    cat /proc/meminfo | grep -i SUnreclaim

  • 分析:如果输出值较高,可能存在不可回收的slab内存占用过高的情况。
  • 5. 查看内存大页配置情况

  • 操作:使用 `cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"` 命令。
  • 示例
  • bash

    cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize

    分析:如果 `HugePages_Total` 输出非0,则表示配置了内存大页。如果确认已不需要内存大页,可通过注释 `/etc/sysctl.conf` 文件中的 `vm.nr_hugepage` 配置项,再执行 `sysctl -p` 命令取消内存大页。