理解linux系统负载

查看进程状态

ps -aux

Linux上进程有5种状态:

1. 运行(正在运行或在运行队列中等待)

2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

对应:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (“zombie”) process

平均负载(load average)

查看linux平均负载命令:uptime

含义:单位时间内出入可运行状态(R)和不可中断状态(D)的平均进程数。

比如:加入系统平均负载为2,那么:

在CPU核心为2核的机器意味着CPU刚好全部被占用;在核心为4的机器上意味这有一半的CPU出于空闲。

linux cpu核心数参看

  1. top 按1
  1. cat /proc/cpuinfo | grep “model name” | wc -l

其中model name指的是cpu的型号:如下

CPU使用率 vs CPU平均负载

CPU使用率是CPU繁忙情况的统计,或者处于工作状态的时间片与总的时间片的比值。

CPU平均负载中除了出于“可运行状态”进程还包括“出于不可中断状态”进程,其中不可中断进程就包括处理IO读写状态的,而处于IO状态的进程,等待的是IO资源,是不耗费CPU的。

stress 命令

系统压力测试工具

安装: yum install stress

mpstat 命令

多核cpu性能分析功能,查看每个CPU的性能指标和所有CPU的平均指标。

  • 安装:yum install sysstat

pidstat 命令

进程性能分析工具,用来实时查看进程的CPU、内存、IO以及上下文切换等指标

pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,

  • 安装:yum install sysstat
  • 查看所有进程的 CPU 使用情况( -u -p ALL):

命令:pidstat 或pidstat -u -p ALL

PID:进程ID

%usr:进程在用户空间占用cpu的百分比

%system:进程在内核空间占用cpu的百分比

%guest:进程在虚拟机占用cpu的百分比

%CPU:进程占用cpu的百分比

CPU:处理进程的cpu编号

Command:当前进程对应的命令

  • cpu使用情况统计(-u)

pidstat -u 与pidstat 一样

  • 内存使用情况统计(-r)

pidstat -r

PID:进程标识符

Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页

Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页

VSZ:虚拟地址大小,虚拟内存的使用KB

RSS:常驻集合大小,非交换区五里内存使用KB

Command:task命令名

  • 显示各个进程的IO使用情况(-d)

pidstat -d

PID:进程id

kB_rd/s:每秒从磁盘读取的KB

kB_wr/s:每秒写入磁盘KB

kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。

COMMAND:task的命令名

  • 显示每个进程的上下文切换情况(-w)

pidstat -w -p 2831

PID:进程id

Cswch/s:每秒主动任务上下文切换数量

Nvcswch/s:每秒被动任务上下文切换数量

Command:命令名

  • 显示选择任务进程的线程的统计信息外的额外信息 (-t)

TGID:主线程的表示

TID:线程id

%usr:进程在用户空间占用cpu的百分比

%system:进程在内核空间占用cpu的百分比

%guest:进程在虚拟机占用cpu的百分比

%CPU:进程占用cpu的百分比

CPU:处理进程的cpu编号

Command:当前进程对应的命令