Skip to content

Latest commit

 

History

History
1459 lines (1290 loc) · 87.2 KB

常用指令.md

File metadata and controls

1459 lines (1290 loc) · 87.2 KB

1.uptime

显示系统的运行时间以及系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载。等同于 top 命令的第一行。

[root@jz-desktop-02 ~]# uptime
 23:35:41 up 44 days,  4:41,  3 users,  load average: 0.59, 0.56, 0.63
  • 23:35:41: 当前时间;
  • up 44 days, 4:41: 系统运行了 44天4小时41分钟;
  • 3 users: 当前有3个用户登录;
  • load average: 0.59, 0.56, 0.63: 系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

常用选项

-p, --pretty
 采用可读友好的格式输出系统已运行时长
-h, --help
 显示帮助信息
-s, --since
 以格式 yyyy-mm-dd HH:MM:SS format 输出系统启动时间
-V, --version
 显示版本信息
  • -p:
    [root@jz-desktop-02 ~]# uptime -p
    up 6 weeks, 2 days, 4 hours, 42 minutes
  • -s:
    [root@jz-desktop-02 ~]# uptime -s
    2023-06-25 18:54:12

什么是系统平均负载

系统平均负载指单位时间内, 系统中处于 可运行状态 和 不可中断状态的进程数,也就是 平均活跃进程数, 它和 cpu使用率 没有直接的关系.

可运行状态的进程

指正在使用 cpu 或正在等待使用 cpu 的进程, 也就是 ps 命令看到的, 处于 R状态(Running or Runnable) 的进程.

不可中断状态的进程

指正在等待某些 I/O 的进程, 也就是 ps 命令看到的 D状态(Uninterruptible Sleep, 也称为 Disk Sleep)的进程。 例如等待磁盘 I/O, 当一个进程向磁盘读写数据时, 为了保证数据的一致性, 在得到磁盘回复前, 它是不能被其他进程打断的, 这个时候的进程就处于不可中断状态. 如果此时的进程被打断了, 就容易出现磁盘数据与进程数据不一致的问题。 所以, 不可中断状态实际上是系统对进程和硬件设备的一种保护机制。

系统平均负载多少时合理

uptime 命令给出的三个时间段的平均负载并不是标准化的, 因为系统中的 cpu 核心数量是不定的. 所以平均负载为 1 意味着拥有 一个cpu核心 的系统一直在忙碌, 而在一个拥有 四个cpu核心 的系统上, 以为着系统 75% 的时间是空闲的。

所以,当 系统平均负载 除以 cpu核心数 小于等于1,表示系统没有出现过载的情况。最理想的情况是 每个cpu上都刚好运行一个进程,这样 cpu 就得到了充分的利用。

2.top

top - 00:13:47 up 44 days,  5:19,  3 users,  load average: 0.34, 0.43, 0.50
Tasks: 438 total,   1 running, 437 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.4 us,  0.7 sy,  0.0 ni, 97.8 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 65631716 total,   493936 free, 42085480 used, 23052300 buff/cache
KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18945300 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
13336 root      20   0   18.0g   2.1g   6180 S   6.6  3.3   1413:58 java
15756 root      20   0   15.6g   2.9g   8344 S   5.6  4.6   3265:53 ld-linux-x86-64
 8283 10001     20   0   19.3g   1.1g  15668 S   2.6  1.8  78:23.30 sqlservr
23424 impala    20   0   22.6g 524108   8416 S   2.0  0.8 898:36.06 impalad
 4634 10000     20   0 2019808  76372  10780 S   1.6  0.1 297:00.83 harbor_core
 7406 hive      20   0 2797808 643316   6048 S   1.6  1.0   1111:45 java
 5841 200       20   0   13.1g   2.5g   5376 S   1.3  4.0 677:46.53 java
17932 root      20   0   10.8g 775660      0 S   1.3  1.2 647:50.16 java
22034 yarn      20   0 3480388   1.2g   6408 S   1.3  1.9   1103:10 java
29559 hbase     20   0   12.0g   7.9g   6820 S   1.3 12.6 875:48.01 java
 1631 root      20   0 2707556  54028   3016 S   1.0  0.1   3655:28 python
 3732 hive      20   0   26.7g   1.4g   6800 S   1.0  2.3 727:30.33 java
18257 root      20   0    9.8g 873360    616 S   1.0  1.3 677:35.10 java

第一行: 和 uptime 命令一样.

第二行: 当前系统重任务(进程数)的相关情况,

438 total: 系统当前一共有 652 个进程. 1 running: 有一个进程正在执行. 437 sleeping: 有 437 个进程处于睡眠状态, 也就是不需要使用 cpu 的状态. 0 stopped: 有 0 个进程处于 stopped 状态, 这个状态就是被停下来的进程, 比如通过 ctrl+z 让一个进程停下来, 你可以通过给这个进程发送一个信号 SIGCONT 让这个进程恢复执行. 0 zombie: 有 0 个僵尸进程, 僵尸进程就是一个进程执行完了, 但是其父进程还没来得及处理子进程的退出状态信息(成为"退出状态码" 或 "退出码").

第三行:

  • us: 用户空间占用 CPU 百分比.
  • sy: 内核空间占用 CPU 百分比.
  • ni: 用户进程空间内改变过优先级的进程占用 CPU 百分比.
  • id: 空闲CPU百分比.
  • wa: 等待输入输入的CPU百分比.
  • hi: 硬中断占用CPU百分比.
  • si: 软中断CPU百分比.
  • st: 虚拟CPU等待实际CPU的时间的百分比.

一般关注的多的是 ussyidwahiwi 这 6 个数值, 需要注意的指标如下:

  • CPU(s): 表示当前 cpu 的平均值, 默认 top 命令配置显示的事平均的 cpu 使用情况, 按键盘1可以显示各个逻辑 cpu 的使用情况
    top - 00:42:44 up 44 days,  5:48,  3 users,  load average: 0.43, 0.42, 0.50
    Tasks: 438 total,   1 running, 437 sleeping,   0 stopped,   0 zombie
    %Cpu0  :  7.0 us,  1.0 sy,  0.0 ni, 89.9 id,  1.7 wa,  0.0 hi,  0.3 si,  0.0 st
    %Cpu1  :  2.0 us,  1.0 sy,  0.0 ni, 88.6 id,  8.4 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu2  :  1.7 us,  1.0 sy,  0.0 ni, 96.6 id,  0.7 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu3  :  2.0 us,  0.7 sy,  0.0 ni, 97.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu4  :  3.4 us,  2.0 sy,  0.0 ni, 92.6 id,  2.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu5  :  2.7 us,  1.0 sy,  0.0 ni, 81.3 id, 15.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu6  :  6.0 us,  4.7 sy,  0.0 ni, 77.5 id, 11.7 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu7  :  2.3 us,  1.7 sy,  0.0 ni, 77.9 id, 17.7 wa,  0.0 hi,  0.3 si,  0.0 st
    %Cpu8  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu9  :  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu10 :  6.3 us,  1.0 sy,  0.0 ni, 92.4 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu11 :  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu12 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu13 :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu14 :  0.0 us,  0.3 sy,  0.0 ni, 90.7 id,  9.0 wa,  0.0 hi,  0.0 si,  0.0 st
    %Cpu15 :  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   440220 free, 42104888 used, 23086608 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18925900 avail Mem
    • 统计空闲的 cpu 利用率, 直接统计 %id 即可, 当 id 持续过低的时候, 表示系统迫切需要解决 cpu 资源问题.
    • 统计cpu使用率, 使用 1-%id 获取, 或者 us+sy+si.
    • wa: 使用率过高的时候, 需要考虑 IO 的性能是否有瓶颈, 可以在使用 iostat、sar 等命令进一步分析.
    • hi: 使用率过高时, 表示当前硬件中断占用很大的百分比, 一般硬件中断可以分析文件 /proc/interrupts/proc/irq/pid/smp_affinity、服务 irqbalance 是否配置,以及 cpu 的频率设置, 通过这些可以帮助系统打散优化系统的硬件中断.
    • si: 常见的软终端一般都是和网络有关. 从网卡到IP层的数据报文收发都是si处理的,长时间写日志也可能产生软中断. 当软终端出现瓶颈的时候, 系统有个进行叫 ksoftirqd, 每个cpu都有自己对应的 ksoftirqd/n(n为cpu的逻辑id),每个 ksoftirqd 的内核线程都会去运行对应的 ksoftirqd(函数) 来处理自己的终端队列上的软件中断. 所以, 当网络出现阻塞的时候, 软件中断程序 ksoftirqd 肯定会出现瓶颈. 此时可以通过 ps -aux|grep ksoftirqd 查看 ksoftirqd 的瓶颈.

第四行: 内存的使用情况

  • total: 总共有 65631716kb 的内存.
  • free: 还有 493936kb 的内存没有使用.
  • used: 使用了 42085480kb 的内存.
  • buff/cache: 用于缓存的物理内存大小.

第五行: 交换分区的使用情况, 交换分区就是当操作系统发现内存满了之后, 操作系统会选择部分不常使用的页面将它放到磁盘中,需要使用的时候再将这部分数据从磁盘中读取出来.

  • total: 总共有 32964604kb 的交换内存.
  • free: 还有 31364860kb 的交换内存没有使用.
  • used: 使用了 1599744kb 的交换内存.
  • avail Mem: 可用于启动新程序的内存大小估值.

第七行: 各进程(任务)的状态监控

  • PID: 进程id.
  • USER: 进程所有者.
  • PR: 进程优先级.
  • NI: nice值, 负值表示高优先级, 正直表示低优先级.
  • VIRT: 进程使用的虚拟内存总量, 单位kb. VIRT=SWAP+RES.
  • RES: 进程使用的、未被交换出的物理内存大小, 单位kb. RES=CODE+DATA
  • SHR: 共享内存大小,单位kb.
  • S: 进程状态. D:不可中断的睡眠状态; R:运行; S:睡眠; T:跟踪/停止; Z:僵尸进程.
  • %CPU: 上次更新到现在的 CPU 时间占用百分比.
  • %MEM: 进程使用的物理内存百分比.
  • TIME: 进程使用的CPU时间总计, 单位1/100秒.
  • COMMAND: 进程名称(命令名/命令行).

top 命令交互操作

  • c: 详细显示命令行的内容

    top - 01:05:17 up 44 days,  6:11,  3 users,  load average: 0.55, 0.63, 0.61
    Tasks: 442 total,   1 running, 441 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  2.2 us,  1.0 sy,  0.0 ni, 94.7 id,  2.1 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   451328 free, 42115916 used, 23064472 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18914888 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    13336 root      20   0   18.0g   2.1g   6180 S   6.9  3.3   1417:18 /app/doris/starrocks/fe/jdk/bin/java -Dlog4j2.formatMsgNoLookups=true -Xmx8192m -XX:+UseMembar -XX:Surv+
    29559 hbase     20   0   12.0g   7.9g   6820 S   6.9 12.6 876:30.92 /usr/jdk64/jdk1.8.0_112/bin/java -Dproc_regionserver -XX:OnOutOfMemoryError=kill -9 %p -Dhdp.version=3.+
    15756 root      20   0   15.6g   2.9g   8344 S   5.6  4.6   3268:42 /lib64/ld-linux-x86-64.so.2 --library-path /root/.cache/JetBrains/RemoteDev/dist/c3754c14958a2_ideaIU-2+
    19070 infra-s+  20   0   14.8g   1.9g 140536 S   3.3  3.1   1165:37 /usr/jdk64/jdk1.8.0_112/bin/java -server -Xms2048m -Xmx4096m -XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:Tar+
     1406 root      20   0 1689256  28268   7040 S   2.6  0.0 251:10.79 /usr/bin/containerd
     8283 10001     20   0   19.3g   1.1g  15668 S   2.3  1.8  79:32.45 /opt/mssql/bin/sqlservr
    22034 yarn      20   0 3480388   1.2g   6408 S   1.6  1.9   1104:05 /usr/jdk64/jdk1.8.0_112/bin/java -Dproc_nodemanager -Dhdp.version=3.3.1.0-001 -Djava.net.preferIPv4Stac+
     1641 root      20   0 4815780  92204   9496 S   1.3  0.1 487:55.10 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
     7914 root      20   0  164668   2692   1624 R   1.3  0.0   0:00.26 top
    17932 root      20   0   10.8g 775660      0 S   1.3  1.2 648:25.56 /usr/lib/jvm/java-1.8.0-openjdk/bin/java -Xmx1073741824 -Xms1073741824 -XX:MaxMetaspaceSize=268435456 -+
    18257 root      20   0    9.8g 873360    616 S   1.3  1.3 678:11.56 /usr
  • o: 可以输入过滤条件

    # 查询 %CPU>5.0 的记录
    top - 01:11:06 up 44 days,  6:16,  3 users,  load average: 1.61, 1.01, 0.76
    Tasks: 437 total,   1 running, 436 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  2.7 us,  1.1 sy,  0.0 ni, 96.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   452736 free, 42117024 used, 23061956 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18913780 avail Mem
    add filter #1 (ignoring case) as: [!]FLD?VAL %CPU>5.0
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    13336 root      20   0   18.0g   2.1g   6180 S   8.6  3.3   1417:42 java
    
    # 查询 USER 是 root的记录
    top - 01:11:06 up 44 days,  6:16,  3 users,  load average: 1.61, 1.01, 0.76
    Tasks: 437 total,   1 running, 436 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  2.7 us,  1.1 sy,  0.0 ni, 96.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   452736 free, 42117024 used, 23061956 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18913780 avail Mem
    add filter #1 (ignoring case) as: [!]FLD?VAL USER=root
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    13336 root      20   0   18.0g   2.1g   6180 S   7.0  3.3   1417:46 java
    15756 root      20   0   15.6g   2.9g   8344 S   6.7  4.6   3269:04 ld-linux-x86-64
     1631 root      20   0 2707556  54036   3016 S   1.7  0.1   3658:51 python
    18257 root      20   0    9.8g 873360    616 S   1.7  1.3 678:16.64 java
    17932 root      20   0   10.8g 775660      0 S   1.3  1.2 648:30.48 java
  • k: 杀死进程

    top - 01:13:27 up 44 days,  6:19,  3 users,  load average: 0.75, 0.88, 0.75
    Tasks: 443 total,   1 running, 442 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.0 us,  1.4 sy,  0.0 ni, 97.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   459880 free, 42119044 used, 23052792 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18911764 avail Mem
    PID to signal/kill [default pid = 17234] 17234  # 杀死 17234 进程
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    17234 root      20   0  164508   2608   1576 R  12.5  0.0   0:00.02 top
    
    top - 01:13:27 up 44 days,  6:19,  3 users,  load average: 0.75, 0.88, 0.75
    Tasks: 443 total,   1 running, 442 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.0 us,  1.4 sy,  0.0 ni, 97.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   459880 free, 42119044 used, 23052792 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18911764 avail Mem
    Send pid 17234 signal [15/sigterm] 9 # 输入信号
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    17234 root      20   0  164508   2608   1576 R  12.5  0.0   0:00.02 top
    
    top - 01:13:27 up 44 days,  6:19,  3 users,  load average: 0.75, 0.88, 0.75
    Tasks: 443 total,   1 running, 442 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.0 us,  1.4 sy,  0.0 ni, 97.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   459880 free, 42119044 used, 23052792 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18911764 avail Mem
    Send pid 17234 signal [15/sigterm] 9已杀死

    下面是信号表

     1) SIGHUP  2) SIGINT  3) SIGQUIT  4) SIGILL  5) SIGTRAP
     6) SIGABRT  7) SIGBUS  8) SIGFPE  9) SIGKILL 10) SIGUSR1
    11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
    16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
    21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
    26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
    31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
    38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
    43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
    53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
    58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
    63) SIGRTMAX-1 64) SIGRTMAX
  • u: 过滤查看指定用户的进程

    top - 01:15:46 up 44 days,  6:21,  3 users,  load average: 0.37, 0.71, 0.71
    Tasks: 441 total,   1 running, 440 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.4 us,  1.7 sy,  0.0 ni, 96.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   461296 free, 42116332 used, 23054088 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18914480 avail Mem
    Which user (blank for all) nginx # 查看nginx用户的进程
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    13336 root      20   0   18.0g   2.1g   6180 S  13.3  3.3   1417:58 java
    20036 root      20   0  164508   2604   1576 R  13.3  0.0   0:00.02 top
    
    top - 01:16:08 up 44 days,  6:21,  3 users,  load average: 0.25, 0.65, 0.69
    Tasks: 441 total,   1 running, 440 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  2.6 us,  0.8 sy,  0.0 ni, 96.4 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem : 65631716 total,   460584 free, 42118176 used, 23052956 buff/cache
    KiB Swap: 32964604 total, 31364860 free,  1599744 used. 18912612 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
     2687 nginx     20   0   48764    104    104 S   0.0  0.0   0:00.00 nginx
     2688 nginx     20   0   48764    124    124 S   0.0  0.0   0:00.00 nginx
  • i: 过滤CPU利用率很低的进程, 很多时候我们在进行系统分析的时候需要去判断那个进程CPU占有率高,因此i是一个非常有效的方式过滤掉干扰进程。

3.pidstat

pidstat 可以监控进程的cpu、内存、线程、设备IO等系统资源的占用情况

Ubuntu 安装 pidstat

apt-get install sysstat

Centos 安装 pidstat

yum install sysstat

3.1 pidstat 用法

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

常用的参数:

  • -u:默认的参数,显示各个进程的cpu使用统计
  • -r:显示各个进程的内存使用统计
  • -d:显示各个进程的IO使用情况
  • -p:指定进程号
  • -w:显示每个进程的上下文切换情况
  • -t:显示选择任务的线程的统计信息外的额外信息
  • -T { TASK | CHILD | ALL }: 这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。 注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
  • -V:版本号
  • -h:在一行上显示了所有活动,这样其他程序可以容易解析。
  • -I:在SMP环境,表示任务的CPU使用率/内核数量
  • -l:显示命令名和所有参数

3.2 查看所有进程的 CPU 使用情况( -u -p ALL)

pidstat 
pidstat -u -p ALL 

两个命令的效果一样

[root@jz-desktop-02 ~]# pidstat
[root@jz-desktop-02 ~]# pidstat -u -p ALL 1  #每秒一次显示所有cpu, 一直统计
[root@jz-desktop-02 ~]# pidstat -u -p ALL 1 3  #每秒一次显示所有cpu, 总共统计3次
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

12时07分01秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
12时07分01秒     0         1    0.10    0.06    0.00    0.16     4  systemd
12时07分01秒     0         2    0.00    0.00    0.00    0.00     1  kthreadd
12时07分01秒     0         6    0.00    0.00    0.00    0.00     0  ksoftirqd/0
12时07分01秒     0         7    0.00    0.00    0.00    0.00     0  migration/0
12时07分01秒     0         9    0.00    0.29    0.00    0.29     6  rcu_sched
12时07分01秒     0        11    0.00    0.00    0.00    0.00     0  watchdog/0
12时07分01秒     0        12    0.00    0.00    0.00    0.00     1  watchdog/1
12时07分01秒     0        13    0.00    0.00    0.00    0.00     1  migration/1
12时07分01秒     0        14    0.00    0.00    0.00    0.00     1  ksoftirqd/1

参数说明:

  • PID: 进程ID
  • %usr: 进程在用户空间占用cpu的百分比, 这个参数过大, 可能是
    • 大量 CPU密集型任务 正在运行, 比如应用程序需要执行复杂的算法、数据处理等;
    • 大量 多线程应用在执行, 比如应用程序使用多线程并且这些线程在用户空间中执行大量的工作;
    • 大量 高并发操作, 比如应用程序在用户空间中执行大量的并发操作,如网络通信、文件操作等;
  • %system: 进程在内核空间占用cpu的百分比, 这个参数过大, 可能是有大量的 I/O 操作(如磁盘读写、网络通信), 也可以使用 pidstat 查看系统当前I/O情况.
  • %guest: 进程在虚拟机占用cpu的百分比.
  • %CPU: 进程占用cpu的百分比, %CPU=%usr+%system+%guest.
  • CPU: 处理进程的cpu编号.
  • Command: 当前进程对应的命令.

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

执行 pidstat -u 与单独指定 pidstat 效果一样

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

pidstat -r 1 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

13时25分50秒   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
13时25分51秒     0      1432     11.88      0.00  127676   1124   0.00  keepalived
13时25分51秒  1000      3222      0.99      0.00 11239548 1719420   2.62  java
13时25分51秒 10001      8283      0.99      0.00 20223048 1205344   1.84  sqlservr
13时25分51秒     0      8608    560.40      0.00  108856   1496   0.00  pidstat
13时25分51秒  1013     19070      0.99      0.00 15492668 2030184   3.09  java
13时25分51秒  1012     28618      6.93      0.00 10798544 984620   1.50  java

平均时间:   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
平均时间:     0      1432     11.88      0.00  127676   1124   0.00  keepalived
平均时间:  1000      3222      0.99      0.00 11239548 1719420   2.62  java
平均时间: 10001      8283      0.99      0.00 20223048 1205344   1.84  sqlservr
平均时间:     0      8608    560.40      0.00  108856   1496   0.00  pidstat
平均时间:  1013     19070      0.99      0.00 15492668 2030184   3.09  java
平均时间:  1012     28618      6.93      0.00 10798544 984620   1.50  java

参数说明:

  • PID: 进程ID.
  • minflt/s: 任务每秒发生的次要错误, 不需要从磁盘中加载页.
  • majflt/s: 任务每秒发生的主要错误, 需要从磁盘中加载页.
  • VSZ: 虚拟地址大小, 虚拟内存的使用, 单位kb.
  • RSS: 常驻集合大小, 非交换分区的使用, 单位kb.
  • %MEM: 进程占用的内存.

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

pidstat -d 1 2
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

13时32分04秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
13时32分05秒     0     13336      0.00      3.92      0.00  java

13时32分05秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
13时32分06秒     0       843      0.00    404.00      0.00  jbd2/sda-8
13时32分06秒     0      1631      0.00   1352.00   1352.00  python
13时32分06秒     0      1641      0.00     80.00      0.00  dockerd
13时32分06秒     0      3039      0.00      4.00      4.00  containerd-shim
13时32分06秒     0      3175      0.00      4.00      4.00  containerd-shim
13时32分06秒     0      3697      0.00      4.00      4.00  containerd-shim
13时32分06秒     0      4041      0.00      4.00      4.00  containerd-shim
13时32分06秒     0      4078      0.00      4.00      4.00  containerd-shim
13时32分06秒   999      4597      0.00     20.00      0.00  postgres
13时32分06秒     0      4613      0.00      4.00      4.00  containerd-shim
13时32分06秒  1013     19070      0.00   2080.00      8.00  java
13时32分06秒     0     21024      0.00     28.00      0.00  java

平均时间:   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
平均时间:     0       843      0.00    200.00      0.00  jbd2/sda-8
平均时间:     0      1631      0.00    669.31    669.31  python
平均时间:     0      1641      0.00     39.60      0.00  dockerd
平均时间:     0      3039      0.00      1.98      1.98  containerd-shim
平均时间:     0      3175      0.00      1.98      1.98  containerd-shim
平均时间:     0      3697      0.00      1.98      1.98  containerd-shim
平均时间:     0      4041      0.00      1.98      1.98  containerd-shim
平均时间:     0      4078      0.00      1.98      1.98  containerd-shim
平均时间:   999      4597      0.00      9.90      0.00  postgres
平均时间:     0      4613      0.00      1.98      1.98  containerd-shim
平均时间:     0     13336      0.00      1.98      0.00  java
平均时间:  1013     19070      0.00   1029.70      3.96  java
平均时间:     0     21024      0.00     13.86      0.00  java

参数说明:

  • PID: 进程ID.
  • kB_rd/s: 每秒从磁盘读取的速率, 单位kb.
  • kB_wr/s: 每秒写入磁盘的速率, 单位kb.
  • kB_ccwr/s: 任务取消的写入磁盘的速率, 单位kb, 当任务截断脏的pagecache的时候会发生.

3.6 查询进程中子线程的IO使用情况(-t -p)

pidstat -t -p 19070
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

13时37分12秒   UID      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
13时37分12秒  1013     19070         -    1.54    0.29    0.00    1.83     8  java
13时37分12秒  1013         -     19070    0.00    0.00    0.00    0.00     8  |__java
13时37分12秒  1013         -     19074    0.00    0.00    0.00    0.00    11  |__java
13时37分12秒  1013         -     19075    0.01    0.00    0.00    0.01    10  |__java

参数说明:

  • TGID: 主线程的表示.
  • TID: 线程id.
  • %usr: 进程在用户空间占用cpu的百分比.
  • %system: 进程在内核空间占用cpu的百分比.
  • %guest: 进程在虚拟机占用cpu的百分比.
  • %CPU: 进程占用cpu的百分比.
  • CPU: 处理进程的cpu编号.
  • Command: 当前进程对应的命令.

3.7 查看系统上下文切换情况(-w)

pidstat -w 1 2
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月09日 	_x86_64_	(20 CPU)

13时41分21秒   UID       PID   cswch/s nvcswch/s  Command
13时41分22秒     0         8      1.98      0.00  ksoftirqd/0
13时41分22秒     0         9    146.53      0.00  rcu_sched
13时41分22秒     0        17      1.98      0.00  ksoftirqd/1
13时41分22秒     0        53      5.94      0.00  ksoftirqd/7
13时41分22秒     0        77     57.43      0.00  ksoftirqd/11
13时41分22秒     0        95      0.99      0.00  ksoftirqd/14
13时41分22秒     0       107      0.99      0.00  ksoftirqd/16
13时41分22秒     0       113      0.99      0.00  ksoftirqd/17
13时41分22秒     0       119      0.99      0.00  ksoftirqd/18
13时41分22秒     0       125      0.99      0.00  ksoftirqd/19
13时41分22秒     0       371    155.45      0.00  kworker/7:1H
13时41分22秒     0       523     49.50      0.00  jbd2/dm-1-8

参数说明:

  • PID: 进程id.
  • Cswch/s: 每秒主动任务上下文切换数量.
  • Nvcswch/s: 每秒被动任务上下文切换数量.
  • Command: 命令名.

自愿上下文切换: 自愿上下文切换:是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

非自愿上下文切换:则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

每秒上下文切换多少次算正常?

这个数值主要取决于系统CPU的性能,如果上下文切换比较稳定,那在1万以下都算是正常,如果超过1万或者切换次数出现很大的增长,就很可能出现了性能问题。

  • cswch ,自愿上下文切换的次数增多了,说明系统正在等待资源,有可能发生了I/O等其它问题;
  • nvcswch ,非自愿上下文切换的次数增多了,说明进程都在强制调度,也就是在争抢CPU,说明CPU性能成了瓶颈.

中断次数增多了,说明CPU被中断,通过分析/proc/interrupt文件来确认中断类型。

pidstat 结合 vmstat 使用

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b 交换 空闲 缓冲 缓存   si   so    bi    bo   in   cs us sy id wa st
 2  3      0 4357204 8018304 40037852    0    0    15    92    0    0  2  1 82 15  0
  • system 显示采集间隔内发生的中断数
  • in 列表示在某一时间间隔中观测到的每秒设备中断数。
  • cs 列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查

4.mpstat

mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。

[root@jz-desktop-02 ~]# mpstat -P ALL 1  # 查看所有 cpu,每 1s 刷新一次
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

01时22分12秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时22分13秒  all    1.13    0.00    0.69    0.19    0.00    0.00    0.00    0.00    0.00   97.99
01时22分13秒    0    2.02    0.00    2.02    0.00    0.00    0.00    0.00    0.00    0.00   95.96
01时22分13秒    1    2.02    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
01时22分13秒    2    2.02    0.00    1.01    3.03    0.00    0.00    0.00    0.00    0.00   93.94
01时22分13秒    3    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
01时22分13秒    4    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
01时22分13秒    5    2.02    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
01时22分13秒    6    1.02    0.00    1.02    0.00    0.00    0.00    0.00    0.00    0.00   97.96
01时22分13秒    7    5.00    0.00    1.00    0.00    0.00    1.00    0.00    0.00    0.00   93.00
01时22分13秒    8    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时22分13秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时22分13秒   10    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01
01时22分13秒   11    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
01时22分13秒   12    0.99    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.01
01时22分13秒   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时22分13秒   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时22分13秒   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

[root@jz-desktop-02 ~]# mpstat -P ALL 1 2 # 查看所有 cpu,每 1s 刷新一次, 一共刷新 2次
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

01时26分47秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时26分48秒  all    4.39    0.00    0.75    4.57    0.00    0.00    0.00    0.00    0.00   90.29
01时26分48秒    0   15.15    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   83.84
01时26分48秒    1    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
01时26分48秒    2    1.01    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   97.98
01时26分48秒    3    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
01时26分48秒    4    1.01    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.99
01时26分48秒    5    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
01时26分48秒    6    0.00    0.00    1.02   72.45    0.00    0.00    0.00    0.00    0.00   26.53
01时26分48秒    7    1.01    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   97.98
01时26分48秒    8    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分48秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分48秒   10   47.47    0.00    4.04    0.00    0.00    0.00    0.00    0.00    0.00   48.48
01时26分48秒   11    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01
01时26分48秒   12    0.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   99.00
01时26分48秒   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分48秒   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分48秒   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

01时26分48秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时26分49秒  all    1.45    0.00    0.75    0.82    0.00    0.00    0.00    0.00    0.00   96.98
01时26分49秒    0    4.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   95.00
01时26分49秒    1    1.03    0.00    1.03    0.00    0.00    0.00    0.00    0.00    0.00   97.94
01时26分49秒    2    2.06    0.00    1.03    0.00    0.00    0.00    0.00    0.00    0.00   96.91
01时26分49秒    3    2.02    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   96.97
01时26分49秒    4    2.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
01时26分49秒    5    4.00    0.00    1.00    1.00    0.00    0.00    0.00    0.00    0.00   94.00
01时26分49秒    6    1.01    0.00    1.01   12.12    0.00    0.00    0.00    0.00    0.00   85.86
01时26分49秒    7    4.08    0.00    2.04    0.00    0.00    0.00    0.00    0.00    0.00   93.88
01时26分49秒    8    3.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   97.00
01时26分49秒    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分49秒   10    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分49秒   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分49秒   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分49秒   13    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01
01时26分49秒   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时26分49秒   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all    2.92    0.00    0.75    2.70    0.00    0.00    0.00    0.00    0.00   93.63
平均时间:    0    9.55    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   89.45
平均时间:    1    1.02    0.00    1.02    0.00    0.00    0.00    0.00    0.00    0.00   97.97
平均时间:    2    1.53    0.00    1.02    0.00    0.00    0.00    0.00    0.00    0.00   97.45
平均时间:    3    1.51    0.00    1.01    0.00    0.00    0.00    0.00    0.00    0.00   97.49
平均时间:    4    1.51    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   97.99
平均时间:    5    2.50    0.00    1.00    0.50    0.00    0.00    0.00    0.00    0.00   96.00
平均时间:    6    0.51    0.00    1.02   42.13    0.00    0.00    0.00    0.00    0.00   56.35
平均时间:    7    2.54    0.00    1.52    0.00    0.00    0.00    0.00    0.00    0.00   95.94
平均时间:    8    1.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.50
平均时间:    9    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:   10   23.62    0.00    2.01    0.00    0.00    0.00    0.00    0.00    0.00   74.37
平均时间:   11    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
平均时间:   12    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
平均时间:   13    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
平均时间:   14    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:   15    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

[root@jz-desktop-02 ~]# mpstat -P ALL 0 1 2 # 查看 0号cpu,每 1s 刷新一次, 一共刷新 2次
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

01时27分58秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时27分59秒    0    1.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00   98.00
01时28分00秒    0    1.02    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   98.98
平均时间:    0    1.01    0.00    0.51    0.00    0.00    0.00    0.00    0.00    0.00   98.48

以下是各个参数的解释:

- CPU:显示每个 CPU 的编号。
- %usr:表示用户进程在 CPU 上消耗的时间百分比。
- %nice:表示 nice 值较高的进程在 CPU 上消耗的时间百分比。
- %sys:表示内核进程在 CPU 上消耗的时间百分比。
- %iowait:表示 CPU 空闲等待 I/O 操作的时间百分比。
- %irq:表示 CPU 在服务硬件中断时消耗的时间百分比。
- %soft:表示 CPU 在服务软件中断时消耗的时间百分比。
- %steal:表示虚拟化环境下,CPU 时间被虚拟机监视器或其他虚拟机占用的时间百分比。
- %guest:表示虚拟化环境下,CPU 时间被虚拟机操作系统占用的时间百分比。
- %idle:表示 CPU 空闲的时间百分比

mpstat 的案例

mpstat 主要用在当系统变慢, 如 ssh 过去输入命令特别卡、平均负载增大时, 我们想判断到底是 CPU 的使用率增大了, 还是 IO 压力增大的情况.

当系统变慢, 第一反应使用 top 或 uptime 来了解系统的负载情况. 如上面介绍的命令.

采用stress压力测试工具,模拟高计算,高IO的情况,使用uptime查看平均负载,使用mpstat和pidstat工具,找出平均负载高的根源。

计算密集型

[root@jz-desktop-01 ~]# stress -c 10 -t 600  
stress: info: [36423] dispatching hogs: 10 cpu, 0 io, 0 vm, 0 hdd

[root@jz-desktop-01 ~]# uptime
 01:54:23 up 44 days, 10:27,  2 users,  load average: 6.83, 2.94, 2.10
[root@jz-desktop-01 ~]# pidstat -u 5
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-01) 	2023年08月09日 	_x86_64_	(16 CPU)

01时54分34秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
01时54分39秒     0         9    0.00    0.20    0.00    0.20     1  rcu_sched
01时54分39秒     0      1413    0.20    0.00    0.00    0.20     3  rsyslogd
01时54分39秒     0      1682    0.00    0.20    0.00    0.20    10  dockerd
01时54分39秒     0      1731   16.40    2.60    0.00   19.00     9  python
01时54分39秒    27      1961    0.60    0.00    0.00    0.60     8  mysqld
01时54分39秒  1018     19277    0.20    0.00    0.00    0.20     6  jsvc
01时54分39秒  1018     22014    0.80    0.20    0.00    1.00    12  java
01时54分39秒  1019     24994  101.00    0.00    0.00  101.00    14  java
01时54分39秒     0     27160    0.00    0.20    0.00    0.20     9  kworker/u32:2
01时54分39秒  1019     28025    0.60    0.20    0.00    0.80    11  java
01时54分39秒  1012     28515    0.20    0.40    0.00    0.60    15  python2.7
01时54分39秒  1009     29951    0.80    0.20    0.00    1.00    15  java
01时54分39秒     0     33714    1.00    0.40    0.00    1.40     9  java
01时54分39秒     0     36424  100.00    0.00    0.00  100.00    13  stress
01时54分39秒     0     36425  100.20    0.00    0.00  100.20     6  stress
01时54分39秒     0     36426  100.20    0.00    0.00  100.20    11  stress
01时54分39秒     0     36427  100.20    0.00    0.00  100.20    10  stress
01时54分39秒     0     36428  100.20    0.00    0.00  100.20    14  stress
01时54分39秒     0     36429  100.00    0.20    0.00  100.20     4  stress
01时54分39秒     0     36430  100.00    0.20    0.00  100.20     0  stress
01时54分39秒     0     36431  100.20    0.00    0.00  100.20     9  stress
01时54分39秒     0     36432  100.20    0.00    0.00  100.20     2  stress
01时54分39秒     0     36433   99.80    0.20    0.00  100.00    12  stress
01时54分39秒     0     37295    0.00    0.20    0.00    0.20     3  pidstat
01时54分39秒  1021     37443    0.20    0.00    0.00    0.20    12  java
01时54分39秒  1017     39672    0.20    0.00    0.00    0.20    11  java
01时54分39秒  1008     39752    0.20    0.20    0.00    0.40     9  java

可以看见, stress 命令导致10个 cpu 被使用完,所以针对性的 kill 掉相关的进程.

I/O密集型

stress --io 10 --hdd 10 --timeout 600
进行压力测试,产生10个进程,持续600秒
-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

[root@jz-desktop-01 ~]# mpstat -P ALL 3 2
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-01) 	2023年08月09日 	_x86_64_	(16 CPU)

01时59分24秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时59分27秒  all    6.65    0.00    1.07   38.05    0.00    0.02    0.00    0.00    0.00   54.21
01时59分27秒    0    0.34    0.00    5.14   94.52    0.00    0.00    0.00    0.00    0.00    0.00
01时59分27秒    1    0.68    0.00    0.34   59.86    0.00    0.00    0.00    0.00    0.00   39.12
01时59分27秒    2    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
01时59分27秒    3    1.00    0.00    0.33   24.00    0.00    0.00    0.00    0.00    0.00   74.67
01时59分27秒    4    0.34    0.00    4.44   75.09    0.00    0.00    0.00    0.00    0.00   20.14
01时59分27秒    5    0.34    0.00    1.71   97.60    0.00    0.00    0.00    0.00    0.00    0.34
01时59分27秒    6    0.68    0.00    0.00   58.78    0.00    0.00    0.00    0.00    0.00   40.54
01时59分27秒    7    0.35    0.00    0.00   99.65    0.00    0.00    0.00    0.00    0.00    0.00
01时59分27秒    8    0.33    0.00    0.00   25.75    0.00    0.00    0.00    0.00    0.00   73.91
01时59分27秒    9    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
01时59分27秒   10   99.67    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.33
01时59分27秒   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时59分27秒   12    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时59分27秒   13    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时59分27秒   14    0.67    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.33
01时59分27秒   15    0.00    0.00    5.03   80.87    0.00    0.00    0.00    0.00    0.00   14.09

01时59分27秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时59分30秒  all    6.62    0.00    0.23   41.12    0.00    0.02    0.00    0.00    0.00   52.01
01时59分30秒    0    1.35    0.00    0.00   92.57    0.00    0.00    0.00    0.00    0.00    6.08
01时59分30秒    1    0.67    0.00    0.34   89.60    0.00    0.00    0.00    0.00    0.00    9.40
01时59分30秒    2    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
01时59分30秒    3    0.68    0.00    0.00   84.07    0.00    0.00    0.00    0.00    0.00   15.25
01时59分30秒    4    0.34    0.00    0.34   84.12    0.00    0.00    0.00    0.00    0.00   15.20
01时59分30秒    5    0.67    0.00    0.00   63.55    0.00    0.00    0.00    0.00    0.00   35.79
01时59分30秒    6    0.34    0.00    0.00   99.66    0.00    0.00    0.00    0.00    0.00    0.00
01时59分30秒    7    0.34    0.00    0.34   37.37    0.00    0.00    0.00    0.00    0.00   61.95
01时59分30秒    8    0.00    0.00    0.00   13.00    0.00    0.00    0.00    0.00    0.00   87.00
01时59分30秒    9    0.00    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00   99.67
01时59分30秒   10  100.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
01时59分30秒   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
01时59分30秒   12    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
01时59分30秒   13    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
01时59分30秒   14    0.33    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.34
01时59分30秒   15    0.00    0.00    2.35   97.65    0.00    0.00    0.00    0.00    0.00    0.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all    6.63    0.00    0.65   39.59    0.00    0.02    0.00    0.00    0.00   53.11
平均时间:    0    0.85    0.00    2.55   93.54    0.00    0.00    0.00    0.00    0.00    3.06
平均时间:    1    0.68    0.00    0.34   74.83    0.00    0.00    0.00    0.00    0.00   24.16
平均时间:    2    0.33    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.67
平均时间:    3    0.84    0.00    0.17   53.78    0.00    0.00    0.00    0.00    0.00   45.21
平均时间:    4    0.34    0.00    2.38   79.63    0.00    0.00    0.00    0.00    0.00   17.66
平均时间:    5    0.51    0.00    0.85   80.37    0.00    0.00    0.00    0.00    0.00   18.27
平均时间:    6    0.51    0.00    0.00   79.22    0.00    0.00    0.00    0.00    0.00   20.27
平均时间:    7    0.34    0.00    0.17   67.98    0.00    0.00    0.00    0.00    0.00   31.51
平均时间:    8    0.17    0.00    0.00   19.37    0.00    0.00    0.00    0.00    0.00   80.47
平均时间:    9    0.17    0.00    0.00    0.17    0.00    0.00    0.00    0.00    0.00   99.67
平均时间:   10   99.83    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.17
平均时间:   11    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:   12    0.17    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.83
平均时间:   13    0.17    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.83
平均时间:   14    0.50    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.33
平均时间:   15    0.00    0.00    3.69   89.26    0.00    0.00    0.00    0.00    0.00    7.05


[root@jz-desktop-01 ~]# pidstat -d 1 3
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-01) 	2023年08月09日 	_x86_64_	(16 CPU)

01时59分59秒   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
02时00分00秒     0      1413      0.00     15.84      3.96  rsyslogd
02时00分00秒     0      1731      0.00     35.64     19.80  python
02时00分00秒  1018     22014      0.00     15.84      0.00  java
02时00分00秒  1009     29951      0.00     11.88      0.00  java
02时00分00秒     0     33714      0.00      7.92      0.00  java
02时00分00秒     0     35124      0.00     11.88      0.00  java
02时00分00秒     0     42484      0.00  42665.35      0.00  stress
02时00分00秒     0     42486      0.00  42665.35      0.00  stress
02时00分00秒     0     42488      0.00  44245.54      0.00  stress
02时00分00秒     0     42490      0.00  42665.35      0.00  stress
02时00分00秒     0     42492      0.00  42665.35      0.00  stress
02时00分00秒     0     42494      0.00  42665.35      0.00  stress
02时00分00秒     0     42496      0.00  44245.54      0.00  stress
02时00分00秒     0     42498      0.00  42665.35      0.00  stress
02时00分00秒     0     42500      0.00  42665.35 170752.48  stress
02时00分00秒     0     42502      0.00  42665.35      0.00  stress

可以看见这是因为 Command 是 stress 命令的进程造成大量读入操作, kB_wr/s 持续上升, 所以找到进程杀死即可

5.iostat

iostat 可以查看 cpu、网卡、tty设备、磁盘、等设备的活动情况,负载信息.

iostat [参数] [时间] [次数]

命令参数:

  • -C 显示CPU使用情况
  • -d 显示磁盘使用情况
  • -k 以 KB 为单位显示
  • -m 以 M 为单位显示
  • -N 显示磁盘阵列(LVM) 信息
  • -n 显示NFS 使用情况
  • -p[磁盘] 显示磁盘和分区的情况
  • -t 显示终端和CPU的信息
  • -x 显示详细信息
  • -V 显示版本信息
iostat
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.56    0.00    0.90    0.99    0.00   95.54

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nvme0n1          11.44        80.62       564.17  312908412 2189600151
sda              36.47        97.93       538.01  380075757 2088062456
sdb               6.08        16.92       510.85   65676653 1982648256
dm-0              7.10         5.86        83.40   22750599  323691832
dm-1              0.79         0.91         2.23    3550120    8659940
dm-2              4.35        73.84       483.21  286576761 1875379925

以下是各个参数的解释:

  • %user:CPU处在用户模式下的时间百分比。
  • %nice:CPU处在带NICE值的用户模式下的时间百分比。
  • %system:CPU处在系统模式下的时间百分比。
  • %iowait:CPU等待输入输出完成时间的百分比, 当结果值过高时, 表示硬盘存在 I/O 瓶颈。
  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
  • %idle:CPU空闲时间百分比,
    • 当结果值过高时, 表示 CPU 比较空闲。
    • 当结果值过高但是系统响应慢时, 有可能是 CPU 等待分配内存, 此时应加大内存容量.
    • 当结果值持续低于 10, 表示当前系统的 CPU 处理能力相对较低, 需要解决的资源是 CPU.

显示每个磁盘的详细信息(iostat -x)

iostat -x 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月09日 	_x86_64_	(16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.56    0.00    0.90    0.99    0.00   95.54

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme0n1           0.12     0.68    1.25   10.19    80.61   564.09   112.71     0.18   15.97    2.19   17.67   0.46   0.53
sda               0.03    37.45    1.07   35.40    97.92   538.05    34.88     0.30    8.30   11.79    8.19   3.29  12.00
sdb               0.01     8.75    0.81    5.27    16.92   510.78   173.55     0.44   72.04    3.98   82.55   3.45   2.10
dm-0              0.00     0.00    0.18    6.93     5.86    83.40    25.14     0.02    2.53    8.67    2.37   0.33   0.23
dm-1              0.00     0.00    0.23    0.56     0.91     2.23     8.00     0.27  338.90    4.97  475.73   0.04   0.00
dm-2              0.00     0.00    0.97    3.38    73.83   483.14   255.88     0.15   34.81    0.41   44.69   0.42   0.18

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.45    0.00    0.76    0.38    0.00   97.42

以下是各个参数的解释:

  • Device: 磁盘设备的名称.
  • rrqm/s: 每秒针对该设备的读请求排队的次数.
  • wrqm/s: 每秒针对该设备的写请求排队的次数.
  • r/s: 每秒从该设备读取的次数.
  • w/s: 每秒向该设备写入的次数.
  • rkB/s: 每秒从该设备读取的数据量, 单位为 kb.
  • wkB/s: 每秒向该设备写入的数据量, 单位为 kb.
  • avgrq-sz: 该设备每个请求的平均大小, 单位为扇区(一般为512字节).
  • avgqu-sz: 每个请求在设备等待队列中的平均长度.
  • await: 等待I/O平均的时间(milliseconds)
  • r_await: io请求读取处理的平均时间
  • w_await: io请求写入处理的平均时间
  • svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
  • %util: 设备的利用率,即设备正在工作的时间所占总时间的百分比.

显示指定设备的IO状态信息(iostat -x /dev/sda1)

iostat -x /dev/sda1
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月10日 	_x86_64_	(20 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.28    0.01    0.82   15.26    0.00   81.64

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda1             0.00    0.00      0.00      0.00     0.00     0.00  80.03   0.00    3.85  156.00   0.00    25.82     0.50   4.19   0.00

只显示cpu的IO状态

iostat -c
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月10日 	_x86_64_	(20 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.28    0.01    0.82   15.26    0.00   81.64

只显示设备的使用率状态

iostat -d
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月10日 	_x86_64_	(20 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00        514          0
loop1             0.00         0.00         0.00        518          0
loop2             0.01         0.01         0.00      23939          0
loop3             0.00         0.00         0.00        343          0
loop4             0.00         0.00         0.00          8          0
sda              99.98        40.54      1574.87  162481582 6311636392
sdb              20.40       258.50       342.12 1036002652 1371123512
dm-0             43.05       258.50       342.12 1036002256 1371123512
dm-1            211.49        40.54      1789.65  162465973 7172425904
rbd0              0.00         0.02         0.12      83637     461276
rbd1              0.00         0.00         2.55       4561   10218788
rbd3              0.52         0.03        16.37     128797   65604120
rbd4              0.20         1.71        88.25    6848441  353692812
rbd5              5.26         0.22       145.04     894837  581286600

以千字节每秒为单位显示

iostat -k
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月10日 	_x86_64_	(20 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.28    0.01    0.82   15.26    0.00   81.64

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00        514          0
loop1             0.00         0.00         0.00        518          0
loop2             0.01         0.01         0.00      23939          0
loop3             0.00         0.00         0.00        343          0
loop4             0.00         0.00         0.00          8          0
sda              99.98        40.54      1574.87  162481642 6311664584
sdb              20.40       258.50       342.12 1036002652 1371132264
dm-0             43.05       258.50       342.12 1036002256 1371132264
dm-1            211.49        40.54      1789.65  162466033 7172454240
rbd0              0.00         0.02         0.12      83637     461276
rbd1              0.00         0.00         2.55       4561   10218788
rbd3              0.52         0.03        16.37     128797   65604784
rbd4              0.20         1.71        88.25    6848441  353692960
rbd5              5.26         0.22       145.04     894837  581290208

以兆字节每秒为单位

iostat -m
Linux 4.15.0-197-generic (jz-desktop-07) 	2023年08月10日 	_x86_64_	(20 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.28    0.01    0.82   15.26    0.00   81.64

Device             tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
loop0             0.00         0.00         0.00          0          0
loop1             0.00         0.00         0.00          0          0
loop2             0.01         0.00         0.00         23          0
loop3             0.00         0.00         0.00          0          0
loop4             0.00         0.00         0.00          0          0
sda              99.98         0.04         1.54     158673    6163763
sdb              20.40         0.25         0.33    1011721    1339006
dm-0             43.05         0.25         0.33    1011720    1339006
dm-1            211.49         0.04         1.75     158658    7004384
rbd0              0.00         0.00         0.00         81        450
rbd1              0.00         0.00         0.00          4       9979
rbd3              0.52         0.00         0.02        125      64067
rbd4              0.20         0.00         0.09       6687     345403
rbd5              5.26         0.00         0.14        873     567670

6.free -m

free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存等信息,它是LINUX系统管理中常用的命令之一。

命令格式:

free [选项] [-s (间隔秒数)]

常用参数选项

参数 参数说明
-b 以Byte为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-k 以KB为单位显示内存使用情况,默认情况不带参数时按此显示
-g 以GB为单位显示内存使用情况
-s (间隔秒数) 根据指定的间隔秒数持续显示内存使用情况
-h 以友好的方式显示内存使用情况
-t 显示内存列总和

查看内存

$ free 
              total        used        free      shared  buff/cache   available
Mem:       65631716    27567684      518216     1161240    37545816    36367040
Swap:      32964604           0    32964604
  • total: 物理内存和交换内存的总大小.
  • used: 已使用的物理内存和交换内存的大小.
  • free: 空闲的物理内存和交换内存的大小.
  • shared: 多个进程共享的内存总额.
  • buff/cache: 磁盘的缓存大小.
  • available: 可用的内存大小.

以 byte 为单位显示内存

$ free -b
              total        used        free      shared  buff/cache   available
Mem:    67206877184 28228767744   530628608  1189109760 38447480832 37240401920
Swap:   33755754496           0 33755754496

以 MB 为单位显示内存

$ free -m
              total        used        free      shared  buff/cache   available
Mem:          64093       26921         505        1134       36666       35515
Swap:         32191           0       32191

以 GB 为单位显示内存

$ free -g
              total        used        free      shared  buff/cache   available
Mem:             62          26           0           1          35          34
Swap:            31           0          31

以更友好的方式显示内存

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            62G         26G        506M        1.1G         35G         34G
Swap:           31G          0B         31G

以一定间隔时间查看内容

$ free -h -s 5
              total        used        free      shared  buff/cache   available
Mem:            62G         26G        504M        1.1G         35G         34G
Swap:           31G          0B         31G

              total        used        free      shared  buff/cache   available
Mem:            62G         26G        504M        1.1G         35G         34G
Swap:           31G          0B         31G

              total        used        free      shared  buff/cache   available
Mem:            62G         26G        505M        1.1G         35G         34G
Swap:           31G          0B         31G

^C

显示列总和

$ free -h -t
              total        used        free      shared  buff/cache   available
Mem:            62G         26G        504M        1.1G         35G         34G
Swap:           31G          0B         31G
Total:          94G         26G         31G

间隔2s打印一次, 总共打印5次

$ free -h -s 2 -c 5
              total        used        free      shared  buff/cache   available
Mem:            62G         26G        502M        1.1G         35G         34G
Swap:           31G          0B         31G

              total        used        free      shared  buff/cache   available
Mem:            62G         26G        502M        1.1G         35G         34G
Swap:           31G          0B         31G

              total        used        free      shared  buff/cache   available
Mem:            62G         26G        490M        1.1G         35G         34G
Swap:           31G          0B         31G

^C

7.sar

sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。算是一个万能的小能手。

安装

# ubuntu
$ apt-get install sysstat

# centos
$ yum -y install sysstat

语法

$ sar -n DEV 1 5
  • -n: 类型, 就是我们要获取的是哪个类型的指标数据,这里的-n,代表的是监控一些网络信息
    •  -a:文件读写情况
       -A:所有报告的总和
       -B:分页状况
       -b:显示I/O和传送速率的统计信息
       -c:输出进程统计信息,每秒创建的进程数
       -d:块设备状况
       -F [ MOUNT ]:文件系统统计信息
       -H:交换空间利用率
       -I { <中断> | SUM | ALL | XALL }:中断信息状况
       -n:汇报网络情况
       -P:设定CPU
       -q:队列长度和平均负载
       -R:输出内存页面的统计信息
       -r [ ALL ]:输出内存和交换空间的统计信息
       -S:交换空间利用率信息
       -u [ ALL ]:输出CPU使用情况的统计信息
       -v:输出inode、文件和其他内核表的统计信息
       -W:输出系统交换活动信息
       -w:任务创建与系统转换信息
       -y:终端设备活动情况
  • DEV: 类型参数(可选), 有的类型带有参数,有的没有。这里的DEV,代表的是监控网卡信息
  • 1: 时间间隔, 每次报告的间隔时间(秒)
  • 5: 次数, 显示报告的次数。如:时间间隔是2,采样次数是3,那么sar命令将阻塞12秒钟。

查看 CPU 利用率

$ sar -u 1 1 
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时46分21秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00时46分22秒     all      1.50      0.00      0.56      1.94      0.00     95.99
平均时间:     all      1.50      0.00      0.56      1.94      0.00     95.99
  • %user #用户空间的CPU使用
  • %nice 改变过优先级的进程的CPU使用率
  • %system 内核空间的CPU使用率
  • %iowait CPU等待IO的百分比
  • %steal 虚拟机的虚拟机CPU使用的CPU
  • %idle 空闲的CPU
  • 在以上的显示当中,主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求,如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。

报个CPU的使用状态:

sar -p 1 3
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时48分16秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
00时48分17秒     all      3.70      0.00      1.88      0.25      0.00     94.16
00时48分18秒     all      4.38      0.00      5.07      0.00      0.00     90.54
00时48分19秒     all      1.50      0.00      1.69      0.31      0.00     96.49
平均时间:     all      3.20      0.00      2.88      0.19      0.00     93.73
  • CPU: 所有CPU的统计
  • %user 用户态的CPU使用统计
  • %nice 更改过优先级的进程的CPU使用统计
  • %iowait CPU等待IO数据的百分比
  • %steal 虚拟机的vCPU占用的物理CPU的百分比
  • %idle 空闲的CPU百分比

CPU负载

使用sar -q,同样的,和top的参数意义是相似的。除了load值,它还显示了等待队列的长度,对于排查排队问题非常有帮助。

sar -q 1 3
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时49分19秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
00时49分20秒         0      3573      0.46      0.70      0.87         0
平均时间:         0      3573      0.46      0.70      0.87         0
  • runq-sz 运行队列的长度(等待运行的进程数,每个核的CP不能超过3个)
  • plist-sz 进程列表中的进程(processes)和线程数(threads)的数量
  • ldavg-1 最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
  • ldavg-5 最后5分钟的CPU平均负载
  • ldavg-15 最后15分钟的CPU平均负载

中断

使用sar -I,注意i是大写的。由于有不同的换算方式,所以中断的参数,分为默认、SUM、ALL等。

$ sar -I SUM 1 2
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时50分17秒      INTR    intr/s
00时50分18秒       sum   8143.00
00时50分19秒       sum   6671.00
平均时间:       sum   7407.00

上下文切换

使用sar -w,它经常与监控swap交换分区的使用情况的sar -W(注意大小写)搞混,所以要注意。

$ sar -w  1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时50分50秒    proc/s   cswch/s
00时50分51秒      0.00   6443.00
00时50分52秒      4.00   7584.00
00时50分53秒      0.00   7183.00
00时50分54秒      6.00   6755.00

内存利用率

使用sar -r命令。有些sar版本可能会有sar -R,但一般小写的就够了

$ sar -r 1 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时51分47秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
00时51分48秒    468660  65163056     99.29    379432  35285760  46668768     47.33  41751780  20173644      2012
平均时间:    468660  65163056     99.29    379432  35285760  46668768     47.33  41751780  20173644      201
  • kbmemfree:可用的空闲内存大小
  • kbmemused:已使用的内存大小(不包含内核使用的内存)
  • %memused:已使用内存的百分数
  • kbbuffers :内核缓冲区(buffer)使用的内存大小
  • kbcached :内核高速缓存(cache)数据使用的内存大小
  • kbswpfree :可用的空闲交换空间大小
  • kbswpused:已使用的交换空间大小
  • %swpused:已使用交换空间的百分数
  • kbswpcad :交换空间的高速缓存使用的内存大小
  • kbcommit 保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
  • commit 这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

swap交换分区

对于swap分区来说,就可以使用sar -S。效果如下。如果想要看交换分区的使用情况(非容量情况),就要切换到sar -W命令。

$ Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时52分42秒 kbswpfree kbswpused  %swpused  kbswpcad   %swpcad
00时52分43秒  32964604         0      0.00         0      0.00
平均时间:  32964604         0      0.00         0      0.00

内核使用情况

主要是使用sar -v命令。v一般在别的命令中用作版本展示,sar命令用来输出slab区的一些信息,可以说是特立独行,不走寻常路。

sar -v 1
$ Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时53分04秒 dentunusd   file-nr  inode-nr    pty-nr
00时53分05秒   2728487     13728    164272         3
00时53分06秒   2728487     13728    164282         3
00时53分07秒   2728492     13728    164289         3
00时53分08秒   2728498     13728    164280         3
  • dentunusd 在缓冲目录条目中没有使用的条目数量
  • file-nr 被系统使用的文件句柄数量
  • inode-nr 已经使用的索引数量
  • pty-nr 使用的pty数量

监控内存分页信息,

主要是使用sar -B命令。(注意他的发音!很牛掰!) 执行结果如下:

Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时55分37秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
00时55分38秒      0.00    257.00  16521.00      0.00   6436.00      0.00      0.00      0.00      0.00
00时55分39秒      0.00     60.00   2344.00      0.00    914.00      0.00      0.00      0.00      0.00
00时55分40秒      0.00      0.00     36.00      0.00     81.00      0.00      0.00      0.00      0.00

查看系统swap分区的统计信息

Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时55分18秒  pswpin/s pswpout/s
00时55分19秒      0.00      0.00
00时55分20秒      0.00      0.00
  • pswpin/s 每秒从交换分区到系统的交换页面(swap page)数量
  • pswpout/s 每秒从系统交换到swap的交换页面(swap page)的数量

查看I/O和传递速率的统计信息

$ sar -b  1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时54分52秒       tps      rtps      wtps   bread/s   bwrtn/s
00时54分53秒      0.00      0.00      0.00      0.00      0.00
00时54分54秒      6.00      0.00      6.00      0.00     59.00
00时54分55秒      3.00      0.00      3.00      0.00    664.00
00时54分56秒     43.00      0.00     43.00      0.00   1952.00
00时54分57秒      3.00      0.00      3.00      0.00     11.00
  • tps 磁盘每秒钟的IO总数,等于iostat中的tps
  • rtps 每秒钟从磁盘读取的IO总数
  • wtps 每秒钟从写入到磁盘的IO总数
  • bread/s 每秒钟从磁盘读取的块总数
  • bwrtn/s 每秒钟写入到磁盘的块总数

磁盘使用详情统计

$ sar -d 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

00时56分17秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
00时56分18秒  dev259-0      1.00      0.00      0.00      0.00      0.01      5.00      6.00      0.60
00时56分18秒    dev8-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时56分18秒   dev8-16      3.00      0.00    104.00     34.67      0.03     11.33     11.33      3.40
00时56分18秒  dev253-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时56分18秒  dev253-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时56分18秒  dev253-2      1.00      0.00      0.00      0.00      0.01      5.00      5.00      0.50
  • DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
  • tps:每秒I/O的传输总数
  • rd_sec/s 每秒读取的扇区的总数
  • wr_sec/s 每秒写入的扇区的总数
  • avgrq-sz 平均每次次磁盘I/O操作的数据大小(扇区)
  • avgqu-sz 磁盘请求队列的平均长度
  • await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
  • svctm I/O的服务处理时间,即不包括请求队列中的时间
  • %util I/O请求占用的CPU百分比,值越高,说明I/O越慢

IO信息监控

Linux 5.4.0-150-generic (jz-desktop-04) 	2023年08月29日 	_x86_64_	(20 CPU)

00时58分35秒       tps      rtps      wtps   bread/s   bwrtn/s
00时58分36秒    113.00      0.00    113.00      0.00   2576.00
00时58分37秒     55.00      0.00     55.00      0.00   1312.00
平均时间:     84.00      0.00     84.00      0.00   1944.00
  • tps 磁盘每秒钟的IO总数,等于iostat中的tps
  • rtps 每秒钟从磁盘读取的IO总数
  • wtps 每秒钟从写入到磁盘的IO总数
  • bread/s 每秒钟从磁盘读取的块总数
  • bwrtn/s 每秒钟写入到磁盘的块总数
Linux 5.4.0-150-generic (jz-desktop-04) 	2023年08月29日 	_x86_64_	(20 CPU)

00时59分07秒       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
00时59分08秒    dev7-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-6      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-7      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev8-0     46.00      0.00    708.00     15.39      2.81     62.78     11.22     51.60
00时59分08秒   dev8-16     53.00      0.00   1044.00     19.70      0.28      7.21      6.19     32.80
00时59分08秒  dev253-0    105.00      0.00   1044.00      9.94      0.44      4.15      3.12     32.80
00时59分08秒    dev7-8      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒    dev7-9      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-10      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-11      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-12      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-13      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-14      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-15      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-17      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-18      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-19      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-20      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-21      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-22      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-23      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-24      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-25      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00时59分08秒   dev7-26      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
  • tps:每秒I/O的传输总数
  • rd_sec/s 每秒读取的扇区的总数
  • wr_sec/s 每秒写入的扇区的 总数
  • avgrq-sz 平均每次次磁盘I/O操作的数据大小(扇区)
  • avgqu-sz 磁盘请求队列的平均长度
  • await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
  • svctm I/O的服务处理时间,即不包括请求队列中的时间
  • %util I/O请求占用的CPU百分比,值越高,说明I/O越慢

统计网络信息

每1秒统计1次,总共统计1次

$ sar -n DEV 1 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

01时01分44秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
01时01分45秒 veth52f441e      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 vetha5c96e1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 veth3be34cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 veth479597b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 br-75cc768af122      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 vethed4ce16      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 veth6fe94a4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 vethed5d546      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒       em1    109.00     86.00     15.05     16.94      0.00      0.00      0.00
01时01分45秒 vethfbe8dbd     13.00     23.00      0.90     17.33      0.00      0.00      0.00
01时01分45秒 veth4fb4f50     23.00     13.00     17.33      0.90      0.00      0.00      0.00
01时01分45秒 veth4d63c46      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 vethb7ad3c9      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 veth88c85cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 br-72715db054ec      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时01分45秒 veth2aa014b      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均时间: veth52f441e      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vetha5c96e1      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth3be34cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth479597b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-75cc768af122      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethed4ce16      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth6fe94a4      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethed5d546      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:       em1    109.00     86.00     15.05     16.94      0.00      0.00      0.00
平均时间: vethfbe8dbd     13.00     23.00      0.90     17.33      0.00      0.00      0.00
平均时间: veth4fb4f50     23.00     13.00     17.33      0.90      0.00      0.00      0.00
平均时间: veth4d63c46      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethb7ad3c9      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth88c85cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-72715db054ec      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth2aa014b      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • IFACE 本地网卡接口的名称
  • rxpck/s 每秒钟接受的数据包
  • txpck/s 每秒钟发送的数据库
  • rxKB/S 每秒钟接受的数据包大小,单位为KB
  • txKB/S 每秒钟发送的数据包大小,单位为KB
  • rxcmp/s 每秒钟接受的压缩数据包
  • txcmp/s 每秒钟发送的压缩包
  • rxmcst/s 每秒钟接收的多播数据包

统计网络设备通信失败信息

$ sar -n EDEV  1 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

01时02分12秒     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
01时02分13秒 veth52f441e      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 vetha5c96e1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth3be34cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth479597b      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 br-75cc768af122      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 vethed4ce16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth6fe94a4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 vethed5d546      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒       em1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 vethfbe8dbd      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth4fb4f50      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth4d63c46      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 vethb7ad3c9      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth88c85cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 br-72715db054ec      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
01时02分13秒 veth2aa014b      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

平均时间:     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
平均时间: veth52f441e      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vetha5c96e1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth3be34cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth479597b      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-75cc768af122      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethed4ce16      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth6fe94a4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethed5d546      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:       em1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethfbe8dbd      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth4fb4f50      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth4d63c46      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: vethb7ad3c9      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth88c85cc      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: br-72715db054ec      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间:   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均时间: veth2aa014b      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
  • IFACE 网卡名称
  • rxerr/s 每秒钟接收到的损坏的数据包
  • txerr/s 每秒钟发送的数据包错误数
  • coll/s 当发送数据包时候,每秒钟发生的冲撞(collisions)数,这个是在半双工模式下才有
  • rxdrop/s 当由于缓冲区满的时候,网卡设备接收端每秒钟丢掉的网络包的数目
  • txdrop/s 当由于缓冲区满的时候,网络设备发送端每秒钟丢掉的网络包的数目
  • txcarr/s 当发送数据包的时候,每秒钟载波错误发生的次数
  • rxfram 在接收数据包的时候,每秒钟发生的帧对其错误的次数
  • rxfifo 在接收数据包的时候,每秒钟缓冲区溢出的错误发生的次数
  • txfifo 在发生数据包 的时候,每秒钟缓冲区溢出的错误发生的次数

统计socket连接信息

$ sar -n SOCK 1 1
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

01时02分58秒    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw
01时02分59秒      1700       378         8         2         0       139
平均时间:      1700       378         8         2         0       139
  • totsck 当前被使用的socket总数
  • tcpsck 当前正在被使用的TCP的socket总数
  • udpsck 当前正在被使用的UDP的socket总数
  • rawsck 当前正在被使用于RAW的skcket总数
  • ip-frag 当前的IP分片的数目
  • tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量

使用FULL关键字,相当于上述DEV、EDEV和SOCK三者的综合。

TCP连接的统计

$ sar -n TCP 1 3
Linux 3.10.0-1160.49.1.el7.x86_64 (jz-desktop-02) 	2023年08月29日 	_x86_64_	(16 CPU)

01时04分20秒  active/s passive/s    iseg/s    oseg/s
01时04分21秒      0.00      0.00    145.00    137.00
01时04分22秒      2.00      1.00    211.00    213.00
01时04分23秒      0.00      0.00    178.00    278.00
平均时间:      0.67      0.33    178.00    209.33
  • active/s 新的主动连接
  • passive/s 新的被动连接
  • iseg/s 接受的段
  • oseg/s 输出的段

8. perf

Perf是内置于Linux内核源码树中的性能剖析(profiling)工具。它基于事件采样原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析,常用于性能瓶颈的查找与热点代码的定位。

从2.6.31内核开始,Linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread),也可以用来分析内核的性能问题,当然也可以同时分析应用代码和内核,从而全面理解应用程序中的性能瓶颈。

CPU周期(cpu-cycles)是默认的性能事件,所谓的CPU周期是指CPU所能识别的最小时间单元,通常为亿分之几秒,是CPU执行最简单的指令时所需要的时间,例如读取寄存器中的内容,也叫做clock tick。

https://github.com/mz1999/blog/blob/master/docs/java-performance-analysis-with-flame-graphs.md

https://netflixtechblog.com/java-in-flames-e763b3d32166