CPU
查看 CPU 型号和个数:grep 'model name' /proc/cpuinfo
uptime
[biocloo@app2 ~]$ uptime
11:22:44 up 99 days, 14:53, 2 users, load average: 2.03, 1.70, 1.61
// 11:22:44 当前时间
// up 99 days, 14:53 系统运行时间
// 2 users 正在登陆的用户数
// load average 后面的三个数字分别是过去 1分钟,5分钟,15分钟的平均负载
top:系统摘要信息以及当前由Linux内核管理的进程或线程列表
# 第一行的含义与使用 uptime 返回的一样。
# 第二行表示总进程数和线程数,和分类。
# 第三行表示 CPU 状态百分比
# user(通常缩写为 us),代表用户态 CPU 时间。注意,它不包括下面的 nice 时间,但包括了 guest 时间。
# system(通常缩写为 sy),代表内核态 CPU 时间。
# nice(通常缩写为 ni),代表低优先级用户态 CPU 时间,也就是进程的 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围是 -20 到 19,数值越大,优先级反而越低。
# idle(通常缩写为 id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。
# iowait(通常缩写为 wa),代表等待 I/O 的 CPU 时间。
# irq(通常缩写为 hi),代表处理硬中断的 CPU 时间。
# softirq(通常缩写为 si),代表处理软中断的 CPU 时间。
# steal(通常缩写为 st),代表当系统运行在虚拟机中的时候,被其他虚拟机占用的 CPU 时间。
# 第四行反应物理内存使用情况,单位为千字节
# 第五行反应虚拟内存。
# 第六行
# PID 进程ID
# USER 任务所有者
# PR 优先级。rt 表示实时。
# NI 任务的 nice value。负的意味着更高的优先级,而正的意味着更低的优先级。 此字段中的零值仅表示在确定任务的调度能力时不会调整优先级。
# VIRT 虚拟内存大小。此任务已使用的虚拟内存总量。它包括所有代码,数据和共享库以及已换出的页面和已映射但未使用的页面。
# RES 驻留内存大小。任务正在使用的非交换物理内存。
# SHR 共享内存大小。可用于任务的共享内存量,并非所有内容通常都是驻留的。 它只是反映了可能与其他进程共享的内存。
# S 进程状态。D 不间断睡眠。R 运行。S 睡眠。T 被作业控制信号停止。t 在 debug 被停止。Z 僵尸。
# %CPU CPU 使用率
# %MEM 内存使用率
# TIME+ 自任务启动使用总 CPU 时间。
[biocloo@app2 ~]$ top
top - 15:47:57 up 99 days, 19:18, 1 user, load average: 0.49, 1.15, 1.61
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 0.8 sy, 0.0 ni, 93.2 id, 0.1 wa, 0.0 hi, 0.6 si, 0.0 st
KiB Mem : 16267724 total, 572080 free, 7713840 used, 7981804 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 8153176 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
26703 biocloo 20 0 7892880 2.026g 7244 S 20.0 13.1 1727:22 java
25533 biocloo 20 0 1264128 143588 4200 S 2.7 0.9 3269:04 filebeat
13217 biocloo 20 0 10.663g 1.859g 8148 S 1.3 12.0 227:15.47 java
1168 root 20 0 2531604 85292 3016 S 1.0 0.5 616:51.62 java
9 root 20 0 0 0 0 S 0.3 0.0 157:15.55 rcu_sched
1091 root 20 0 122040 892 296 S 0.3 0.0 48:07.98 wrapper
9269 root 0 -20 128384 9228 4652 S 0.3 0.1 194:31.22 AliYunDun
26855 biocloo 20 0 7895992 2.784g 7216 S 0.3 17.9 1287:51 java
1 root 20 0 43392 2888 1556 S 0.0 0.0 1:30.58 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.27 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 5:34.81 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:28.66 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root rt 0 0 0 0 S 0.0 0.0 0:21.78 watchdog/0
11 root rt 0 0 0 0 S 0.0 0.0 0:17.62 watchdog/1
12 root rt 0 0 0 0 S 0.0 0.0 0:30.18 migration/1
13 root 20 0 0 0 0 S 0.0 0.0 16:33.84 ksoftirqd/1
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
16 root rt 0 0 0 0 S 0.0 0.0 0:18.12 watchdog/2
17 root rt 0 0 0 0 S 0.0 0.0 0:27.21 migration/2
18 root 20 0 0 0 0 S 0.0 0.0 5:39.52 ksoftirqd/2
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H
21 root rt 0 0 0 0 S 0.0 0.0 0:17.55 watchdog/3
22 root rt 0 0 0 0 S 0.0 0.0 0:29.42 migration/3
mpstat:每个可用CPU的活动,默认是CPU利用率报告。
// -P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
[biocloo@app2 ~]$ mpstat -P ALL 5
Linux 3.10.0-693.2.2.el7.x86_64 (app2) 2019年03月08日 _x86_64_ (4 CPU)
11时26分39秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11时26分44秒 all 8.42 0.00 1.20 0.10 0.00 0.80 0.00 0.00 0.00 89.48
11时26分44秒 0 9.05 0.00 1.21 0.00 0.00 0.40 0.00 0.00 0.00 89.34
11时26分44秒 1 7.26 0.00 1.01 0.00 0.00 0.81 0.00 0.00 0.00 90.93
11时26分44秒 2 9.60 0.00 1.40 0.20 0.00 0.80 0.00 0.00 0.00 88.00
11时26分44秒 3 7.78 0.00 1.40 0.00 0.00 1.00 0.00 0.00 0.00 89.82
11时26分44秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11时26分49秒 all 7.15 0.00 1.11 0.10 0.00 0.81 0.00 0.00 0.00 90.84
11时26分49秒 0 8.25 0.00 1.21 0.20 0.00 0.80 0.00 0.00 0.00 89.54
11时26分49秒 1 4.23 0.00 0.60 0.00 0.00 0.60 0.00 0.00 0.00 94.56
11时26分49秒 2 9.22 0.00 1.40 0.20 0.00 0.80 0.00 0.00 0.00 88.38
11时26分49秒 3 7.09 0.00 0.81 0.00 0.00 1.01 0.00 0.00 0.00 91.09
pidstat:用于监控当前由Linux内核管理的各个任务
-u
查看 cpu 使用指标
-w
查看进程切换指标
-t
与所选任务关联的线程的统计信息。
# UID 用户ID
# PID 任务ID
# %usr:用户态 CPU 使用率。
# %system:内核态 CPU 使用率。
# %guest 运行虚拟机 CPU 使用率。
# %wait 等待 CPU 使用率。
# %CPU 以及总的 CPU 使用率。
# CPU 任务在第几个 CPU 上运行。
# 每间隔5秒输出一组数据,一共输出3组。
[biocloo@app2 ~]$ pidstat -u 5 3
Linux 3.10.0-693.2.2.el7.x86_64 (app2) 2019年03月08日 _x86_64_ (4 CPU)
11时32分31秒 UID PID %usr %system %guest %CPU CPU Command
11时32分36秒 0 41 0.00 0.20 0.00 0.20 2 kswapd0
11时32分36秒 0 281 0.00 0.20 0.00 0.20 3 jbd2/vda1-8
11时32分36秒 0 1168 0.20 0.00 0.00 0.20 1 java
11时32分36秒 0 1312 0.20 0.00 0.00 0.20 1 aliyun-service
11时32分36秒 0 9269 0.20 0.20 0.00 0.40 0 AliYunDun
11时32分36秒 1000 13217 3.19 0.60 0.00 3.79 0 java
11时32分36秒 1000 25533 3.59 0.20 0.00 3.79 2 filebeat
11时32分36秒 1000 26703 24.95 3.59 0.00 28.54 0 java
11时32分36秒 1000 26855 0.20 0.00 0.00 0.20 2 java
11时32分36秒 UID PID %usr %system %guest %CPU CPU Command
11时32分41秒 0 9 0.00 0.20 0.00 0.20 1 rcu_sched
11时32分41秒 0 1168 0.20 0.20 0.00 0.40 1 java
11时32分41秒 1000 4153 0.00 0.20 0.00 0.20 1 pidstat
11时32分41秒 0 9269 0.00 0.20 0.00 0.20 1 AliYunDun
11时32分41秒 1000 13217 3.40 0.40 0.00 3.80 0 java
11时32分41秒 1000 25533 3.60 1.00 0.00 4.60 2 filebeat
11时32分41秒 1000 26703 27.40 4.20 0.00 31.60 0 java
11时32分41秒 1000 26855 0.00 0.20 0.00 0.20 2 java
11时32分41秒 UID PID %usr %system %guest %CPU CPU Command
11时32分46秒 0 9 0.00 0.20 0.00 0.20 1 rcu_sched
11时32分46秒 0 1168 0.60 0.00 0.00 0.60 1 java
11时32分46秒 0 9269 0.20 0.00 0.00 0.20 1 AliYunDun
11时32分46秒 1000 13217 1.80 0.40 0.00 2.20 0 java
11时32分46秒 1000 25533 3.80 0.00 0.00 3.80 2 filebeat
11时32分46秒 1000 26703 27.60 2.60 0.00 30.20 0 java
平均时间: UID PID %usr %system %guest %CPU CPU Command
平均时间: 0 9 0.00 0.13 0.00 0.13 - rcu_sched
平均时间: 0 41 0.00 0.07 0.00 0.07 - kswapd0
平均时间: 0 281 0.00 0.07 0.00 0.07 - jbd2/vda1-8
平均时间: 0 1168 0.33 0.07 0.00 0.40 - java
平均时间: 0 1312 0.07 0.00 0.00 0.07 - aliyun-service
平均时间: 1000 4153 0.00 0.07 0.00 0.07 - pidstat
平均时间: 0 9269 0.13 0.13 0.00 0.27 - AliYunDun
平均时间: 1000 13217 2.80 0.47 0.00 3.26 - java
平均时间: 1000 25533 3.66 0.40 0.00 4.06 - filebeat
平均时间: 1000 26703 26.65 3.46 0.00 30.11 - java
平均时间: 1000 26855 0.07 0.07 0.00 0.13 - java
vmstat:虚拟内存,上下文切换统计信息。
//* r(Running or Runnable):是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
//* b(Blocked):则是处于不可中断睡眠状态的进程数。
// swpd:使用的虚拟内存量。
// free:空闲内存量。
// buff:用作缓冲区的内存量。
// cache:用作缓存的内存量。
// si:从磁盘交换的内存量。
// so:交换到磁盘的内存量。
// bi:从块设备接收的块。
// bo:发送到块设备的块。
//* in(interrupt)则是每秒中断的次数。
//* cs(context switch)是每秒上下文切换的次数。
// us:运行非内核代码所花费的时间。
// sy:运行内核代码所花费的时间。
// id:空闲时间。在Linux 2.5.41之前,这包括IO等待时间。
// wa:等待IO的时间。在Linux 2.5.41之前,包含在空闲状态。
// st:从虚拟机中窃取的时间。在Linux 2.6.11之前,未知。
// 每隔 1 秒统计一次,共统计一次。
[biocloo@app2 ~]$ vmstat 1 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 382140 255512 7938204 0 0 19 103 0 1 6 1 93 0 0
2 0 0 379664 255520 7940528 0 0 0 113 7891 6022 8 2 91 0 0
0 0 0 380408 255512 7940004 0 0 0 154 7483 5758 7 2 91 0 0
0 0 0 383244 255476 7938936 0 0 0 2791 9373 7165 9 2 88 0 0
0 0 0 384320 255484 7941596 0 0 0 103 9010 6962 9 2 89 0 0
perf:Linux 性能分析
Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示。
Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
Object ,是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。
Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。
[root@centos ~]# perf top
Samples: 625 of event 'cpu-clock', Event count (approx.): 130078096
Overhead Shared Object Symbol
11.45% [kernel] [k] _raw_spin_unlock_irqrestore
4.41% [kernel] [k] finish_task_switch
3.48% [kernel] [k] tick_nohz_idle_enter
3.24% [kernel] [k] module_get_kallsym
3.09% [kernel] [k] __memcpy
3.09% [kernel] [k] kallsyms_expand_symbol.constprop.1
2.83% perf [.] __symbols__insert
2.80% [kernel] [k] vsnprintf
2.67% [kernel] [k] format_decode
2.32% perf [.] rb_next
2.26% [kernel] [k] clear_page_c
1.95% perf [.] rb_insert_color
1.91% perf [.] __dso__load_kallsyms
1.79% libc-2.17.so [.] _int_malloc
1.77% [kernel] [k] number.isra.2
1.62% libc-2.17.so [.] __strcmp_sse42
1.32% [kernel] [k] string.isra.7
1.32% perf [.] 0x00000000000ca264
1.25% beam.smp [.] sched_spin_wait
1.23% [kernel] [k] rcu_gp_kthread
1.18% [kernel] [k] strnlen
1.18% perf [.] 0x00000000000ca277
1.08% [kernel] [k] rcu_process_callbacks
1.03% libc-2.17.so [.] _IO_getdelim
1.03% libc-2.17.so [.] __memcpy_sse2
1.03% perf [.] hex2u64
0.97% perf [.] 0x000000000019bc27
0.95% libc-2.17.so [.] __libc_calloc
0.88% [kernel] [k] pointer.isra.19
perf top
是实时的,不能保存数据,perf record
采样数据。使用 perf report
查看保存的数据。
网友评论