Linux系统状态监控(ps, top, free, vmstat, iostat)

ps

  • 不加任何参数的ps命令只显示当前子shell中的进程
  • ps aux的特点在于可以看到进程的CPU和内存占用率

Linux系统状态监控(ps, top, free, vmstat, iostat)_第1张图片

  • ps -ef的特点在于可以查看进程的父进程和完整的COMMAND命令
    • -e 表示不仅会显示当前子shell中的进程,还有所有父shell和init中的进程
    • -f 表示显示完整格式

Linux系统状态监控(ps, top, free, vmstat, iostat)_第2张图片

  • aux是BSD风格,-ef是System V风格
  • aux会截断command列,而-ef不会.当结合grep时这种区别会影响到结果

字段含义

  • USER 启动该进程的用户
  • PID 进程号
  • PPID 父进程
  • NI(nice) 进程运行的优先级
    • 数值在 -20~19 之间,越低优先级越高
  • VSZ 进程所使用的虚拟内存的大小
  • RSS 进程使用的实际内存的大小
  • TTY 该进程在哪个终端上运行
    • ?表未知或不需要终端
  • STAT 进程的当前状态
    • S 休眠
    • s(小s) 父进程,在它之下有子进程
    • R 运行
    • Z 僵死
    • I 空闲
    • D 不可中断的睡眠
    • T 停止
    • + 位于前台进程组
    • < 优先级高的进程
    • N 优先级较低的进程
  • TIME 占用CPU时间
  • COMMAND 启动该进程的命令的名称
  • %CPU CPU占用的百分比
  • %MEM 内存占用的百分比

pstree

  • pstree命令可以查看shell树

Linux系统状态监控(ps, top, free, vmstat, iostat)_第3张图片

top

Linux系统状态监控(ps, top, free, vmstat, iostat)_第4张图片

  • 1可查看每个核独立的CPU信息
  • 常见CPU性能问题原因us > wa > sy > si

常用参数组合

 top -H  #监控线程信息
 top -p <pid> #监控进程中的线程信息
 top -u <user> #监控用户的进程信息
 top -Hp <pid> #监控某一进程中的线程信息

顶部

  • 第一行

    • 运行时间,用户数,最近1、5、15分钟的平均CPU负载
  • 第二行:进程状态统计

    • total 进程总数

    • running 正在运行的进程数

    • sleeping 睡眠的进程数

    • stopped 停止的进程数

    • zombie 僵尸进程数

  • 第三行: CPU信息

    • us 用户空间占用CPU百分比
    • sy 内核空间占用CPU百分比
    • ni 用户进程空间内改变过优先级的进程占用CPU百分比
    • id 空闲CPU百分比
    • wa 等待输入输出的CPU时间百分比
    • hi 硬件CPU中断占用百分比
    • si 软中断占用百分比
    • st 虚拟机占用百分比
  • 第四行: 物理内存信息

  • 第五行:交换区内存信息

正文

  • VIRT表示程序使用的虚拟内存
    • VIRT=SWAP+RES
  • RES表示程序使用的物理内存
  • SHR表示共享内存大小
  • PR 表示调度优先级,也叫动态优先级
    • 数值在0-139之间,越低优先级越高
    • priority的值在内核的O1调度器上表现是会变化的
  • NI 表示抢占cpu的能力,也叫静态优先级
    • 数值在 -20~19 之间,越低优先级越高
    • 当nice值设定好了之后,除非我们用renice去改它,否则它是不变的

free

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SiQHDt4g-1587976746465)(Linux系统监控命令.assets/1587972119548.png)]

  • total总内存
    • 不包括为内核保留的那一部分,因此总会比物理总内存小一点
  • used当前被占用的内存
    • total -free -buffer -cache
  • shared多个进程共享内存
  • free真正未被使用的内存
  • buff/cache磁盘缓存
  • available对程序来说真正可用的内存,而不是free
    • Linux 通常都会把用的内存给cache,但是不一定会用,所以free肯定会越来越少,但是available是计算了buff和cache中不用的内存的,所以只要available多,就表示内存够用
    • available = free +buffer +cache
  • 当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务
    • 交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高
    • 禁止swap:swapoff -a

vmstat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CkxQ38vD-1587976746468)(Linux系统监控命令.assets/1587974266278.png)]

  • 第一行显示了系统自启动以来的平均值,第二行开始显示现在正在发生的情况,接下来的行会显示每1秒间隔发生了什么

  • proc

    • r多少进程在等待cpu
      • 长期大于CPU核心数意味着需要增加CPU
    • b多少进程正在不可中断的休眠**(等待IO)**
      • b中的队列 大于3, 表示 io性能不好
  • memory

    • swapd多少块被换出了磁盘(页面交换)
    • free多少块是空闲的(未被使用)
      • 如果free很少,但是siso也很少(大多时候是0),那么内存是够用的
    • buff多少块正在被用作缓冲区
    • cache多少正在被用作操作系统的缓存
  • swap

    • si每秒有多少块正在被换入(从磁盘)
    • so每秒有多少块正在换出(到磁盘)
    • 内存够用的时候,这2个值都是0,如果这2个值长期大于0时,表示内存不足
  • io

    • bi多少块从磁盘读取
    • bo多少块写入磁盘
    • 2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
  • system

    • in每秒中断数量
    • cs每秒上下文切换的数量
    • 上面2个值越大,会看到由内核消耗的CPU时间会越大
  • cpu

    • wa等待IO时间
      • 过高意味着IO等待过长,可能是磁盘大量随机访问或者磁盘带宽不够造成的
  • 内存不足的表现

    • free memory急剧减少
    • 大量使用交换分区(swpd),页面交换(swap)频繁
    • 读写磁盘数量(io)增多
    • 缺页中断(in)增多,上下文切换(cs)次数增多
    • 等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)

iostat

Linux系统状态监控(ps, top, free, vmstat, iostat)_第5张图片
Linux系统状态监控(ps, top, free, vmstat, iostat)_第6张图片

你可能感兴趣的:(Linux)