--查看内核节拍率
[root@p4-oadmnewdb01 ~]# grep 'CONFIG_HZ=' /boot/config-4.19.90-23.32.v2101.ky10.x86_64
CONFIG_HZ=250
--查看不同场景的CPU时间
cat /proc/stat|grep ^cpu
[root@p4-oadmnewdb01 ~]# cat /proc/stat|grep ^cpu
cpu 1597988157 210022 139005384 242060533200 12123558 22164898 31585778 0 0 0
cpu0 8976740 1444 1097051 1889124001 54066 301196 5408632 0 0 0
cpu1 21409661 1504 1206388 1881452122 59949 213385 745226 0 0 0
cpu2 24666369 1605 1304782 1878296806 58566 228519 542164 0 0 0
cpu3 27948256 1572 1369251 1874959508 58276 230990 540278 0 0 0
cpu4 20027278 3011 1760924 1882231296 118487 282228 446323 0 0 0
cpu5 24340021 1811 1588562 1878143807 117757 286480 448325 0 0 0
cpu6 25898444 2197 1605952 1876542783 106132 295356 472368 0 0 0
cpu7 29649660 2268 1659499 1872725886 96203 295365 501260 0 0 0
cpu8 22422122 2380 1719910 1880278019 127207 200381 366977 0 0 0
cpu9 23136415 7637 1526691 1879732594 125973 216137 385788 0 0 0
cpu10 25253961 3927 1538012 1877572274 105277 232597 436775 0 0 0
cpu11 28045591 1817 1597679 1874642996 100254 231982 494862 0 0 0
cpu12 21822627 2423 1632735 1881055586 110663 184247 365766 0 0 0
cpu13 22554549 1817 1505783 1880423881 103083 198050 399001 0 0 0
- user(us):用户态CPU时间。包括guest时间,不包括nice时间。
- nice(ni):低优先级用户态CPU时间,也就是进程的nice值被调整为1-19之间时的CPU时间。 nice取值范围是-20到19,数值越大,优先级反而越低。
- system(sys):代表内核态CPU时间。
- idle(id):代表空闲时间。注意,不包括iowait。
- iowait(wa):代表等待IO的CPU时间。
- irq(hi):代表处理硬中断的CPU时间。
- softirq(si):代表处理软中断的CPU时间。
- steal(st):代表当系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间。
- guest(guest):代表通过虚拟化运行其他操作系统的时间,也就是运行虚拟机的CPU时间。
- guest_nice(gnice):代表以低优先级运行虚拟机的时间。
而我们通常所说的CPU使用率,就是除了空闲时间外其他时间占总CPU时间的百分比。
性能分析工具给出的都是间隔一段时间的平均CPU使用率,所以要注意间隔时间的设置。
如何查看CPU使用率?
- top显示了系统总体的CPU和内存使用情况,以及各个进程的资源使用情况。
- ps则只显示了每个进程的资源使用情况。
怎么查看每个进程细分的详细cpu情况?
pidstat 1 5
[dmdba@p4-oakdmdb1 logcommit]$ pidstat 1 5
Linux 4.19.90-23.32.v2101.ky10.x86_64 (p4-oakdmdb1) 2024年04月30日 _x86_64_ (96 CPU)
15时45分18秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时45分19秒 0 523 0.00 4.90 0.00 0.00 4.90 25 kswapd0
15时45分19秒 1000 6397 3.92 0.98 0.00 0.00 4.90 37 dmwatcher
15时45分19秒 1000 583849 0.98 1.96 0.00 0.00 2.94 9 pidstat
15时45分19秒 1000 3160711 1345.10 550.00 0.00 0.00 1895.10 11 dmserver
15时45分19秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时45分20秒 0 523 0.00 5.00 0.00 0.00 5.00 73 kswapd0
15时45分20秒 0 6116 1.00 3.00 0.00 0.00 4.00 40 irqbalance
15时45分20秒 1000 6397 5.00 1.00 0.00 0.00 6.00 29 dmwatcher
15时45分20秒 0 6913 0.00 1.00 0.00 0.00 1.00 19 titanagent
15时45分20秒 1000 583849 1.00 1.00 0.00 0.00 2.00 10 pidstat
15时45分20秒 1000 3160711 1339.00 520.00 0.00 0.00 1859.00 11 dmserver
15时45分20秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时45分21秒 3001 6240 15.00 53.00 0.00 0.00 68.00 15 node_exporter
15时45分21秒 1000 6397 3.00 0.00 0.00 0.00 3.00 29 dmwatcher
15时45分21秒 0 6913 0.00 3.00 0.00 0.00 3.00 19 titanagent
15时45分21秒 0 430123 0.00 1.00 0.00 0.00 1.00 83 cvd
15时45分21秒 0 540492 0.00 2.00 0.00 0.00 2.00 18 kworker/18:7-events_power_efficient
15时45分21秒 0 574510 0.00 1.00 0.00 0.00 1.00 83 kworker/83:22-xfs-conv/nvme0n1
15时45分21秒 0 582205 0.00 1.00 0.00 0.00 1.00 84 kworker/u192:5-bond
15时45分21秒 1000 583849 1.00 2.00 0.00 0.00 3.00 10 pidstat
15时45分21秒 1000 3160711 1322.00 619.00 0.00 0.00 1941.00 11 dmserver
15时45分21秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时45分22秒 0 6117 0.00 1.00 0.00 0.00 1.00 95 rngd
15时45分22秒 3001 6240 0.00 1.00 0.00 0.00 1.00 15 node_exporter
15时45分22秒 1000 6397 3.00 2.00 0.00 0.00 5.00 38 dmwatcher
15时45分22秒 0 6913 0.00 1.00 0.00 0.00 1.00 19 titanagent
15时45分22秒 3002 21709 0.00 1.00 0.00 0.00 1.00 46 zabbix_agentd
15时45分22秒 0 549322 0.00 1.00 0.00 0.00 1.00 19 kworker/19:63-mm_percpu_wq
15时45分22秒 1000 583849 1.00 2.00 0.00 0.00 3.00 10 pidstat
15时45分22秒 1000 3160711 1435.00 561.00 0.00 0.00 1996.00 11 dmserver
15时45分22秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时45分23秒 1000 6397 4.00 1.00 0.00 0.00 5.00 38 dmwatcher
15时45分23秒 0 6913 0.00 1.00 0.00 0.00 1.00 19 titanagent
15时45分23秒 0 562884 0.00 1.00 0.00 0.00 1.00 66 kworker/66:0-mm_percpu_wq
15时45分23秒 1000 583849 0.00 2.00 0.00 0.00 2.00 10 pidstat
15时45分23秒 0 1515814 1.00 0.00 0.00 0.00 1.00 65 java
15时45分23秒 1000 3160711 1578.00 636.00 0.00 0.00 2214.00 11 dmserver
平均时间: UID PID %usr %system %guest %wait %CPU CPU Command
平均时间: 0 523 0.00 1.99 0.00 0.00 1.99 - kswapd0
平均时间: 0 6116 0.20 0.60 0.00 0.00 0.80 - irqbalance
平均时间: 0 6117 0.00 0.20 0.00 0.00 0.20 - rngd
平均时间: 3001 6240 2.99 10.76 0.00 0.00 13.75 - node_exporter
平均时间: 1000 6397 3.78 1.00 0.00 0.00 4.78 - dmwatcher
平均时间: 0 6913 0.00 1.20 0.00 0.00 1.20 - titanagent
平均时间: 3002 21709 0.00 0.20 0.00 0.00 0.20 - zabbix_agentd
平均时间: 0 430123 0.00 0.20 0.00 0.00 0.20 - cvd
平均时间: 0 540492 0.00 0.40 0.00 0.60 0.40 - kworker/18:7-events_power_efficient
平均时间: 0 549322 0.00 0.20 0.00 0.00 0.20 - kworker/19:63-mm_percpu_wq
平均时间: 0 562884 0.00 0.20 0.00 0.00 0.20 - kworker/66:0-mm_percpu_wq
平均时间: 0 574510 0.00 0.20 0.00 0.00 0.20 - kworker/83:22-mm_percpu_wq
平均时间: 0 582205 0.00 0.20 0.00 0.00 0.20 - kworker/u192:5-bond
平均时间: 1000 583849 0.80 1.79 0.00 0.00 2.59 - pidstat
平均时间: 0 1515814 0.20 0.00 0.00 0.00 0.20 - java
平均时间: 1000 3160711 1403.59 577.09 0.00 0.00 1980.68 - dmserver
[dmdba@p4-oakdmdb1 logcommit]$ ps -ef|grep dms
dmdba 583512 2116248 0 15:44 pts/0 00:00:00 grep dms
dmdba 3160711 1 99 2月26 ? 490-08:40:12 /home/dmdba/dmdbms/bin/dmserver path=/data/1/dmdata/OA/dm.ini -noconsole mount
[dmdba@p4-oakdmdb1 logcommit]$ pidstat -p 3160711 1 5
Linux 4.19.90-23.32.v2101.ky10.x86_64 (p4-oakdmdb1) 2024年04月30日 _x86_64_ (96 CPU)
15时44分49秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时44分50秒 1000 3160711 1237.00 415.00 0.00 0.00 1652.00 11 dmserver
15时44分51秒 1000 3160711 897.00 417.00 0.00 0.00 1314.00 11 dmserver
15时44分52秒 1000 3160711 744.00 387.00 0.00 0.00 1131.00 11 dmserver
15时44分53秒 1000 3160711 734.00 339.00 0.00 0.00 1073.00 11 dmserver
15时44分54秒 1000 3160711 1160.00 507.00 0.00 0.00 1667.00 11 dmserver
平均时间: 1000 3160711 954.40 413.00 0.00 0.00 1367.40 - dmserver
CPU使用率过高怎么办?
1.perf top
- Overhead:该符号性能时间在所有采样中的比例。
- shared:该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
- Object:动态共享对象的类型。[.]表示用户空间的可执行程序、或者动态链接库,而[k]则表示内核空间。
- Symbol:符号名,也就是函数名。当函数名未知时,用十六进制地址来表示。
Samples: 28K of event 'cycles', 4000 Hz, Event count (approx.): 5985014199 lost: 0/0
Overhead Shared Object Symbol
12.46% dmserver [.] tuple4_tmp_key_from_nrec
11.12% dmserver [.] nrec_get_nth_fld_with_offset
4.98% dmserver [.] csek2_fill_one_tuple_by_nrec
4.27% dmserver [.] page4_cur_search
1.91% [kernel] [k] strstr
1.72% [kernel] [k] strlen
1.56% dmserver [.] tuple4_key_cmp_low.isra.1
1.14% dmserver [.] cscn2_get_len_blank
1.08% dmserver [.] buf4_page_get_in_fast_pool
1.04% perf [.] 0x000000000022d5b7
0.95% dmserver [.] xdec_move_from_nrec
0.89% dmserver [.] nbtr_get_child_page_fast
0.86% dmserver [.] bdta3_ptr_str
0.85% libc-2.28.so [.] memcpy
0.84% perf [.] 0x000000000023a054
0.82% dmserver [.] nbtr_cur_search_low
0.80% dmserver [.] csek2_bdta3_colstr_prepare
0.70% dmserver [.] tuple4_key_from_nrec_with_space
0.66% [kernel] [k] kallsyms_expand_symbol.constprop.2
0.66% dmserver [.] dta_cmp_real_rowid
0.60% dmserver [.] os_interlock_read
0.60% dmserver [.] buf4_fast_pool_hash_sync
0.59% [kernel] [k] clear_page_rep
0.57% dmserver [.] blkup2_exec_fill_data_normal
perf record和perf report. perf top虽然实时展示了系统的性能信息,但他的缺点是并不保存数据,也就是无法用于离线或者后续的分析。而perf record则提供了保存数据的功能,保存后的数据,需要用perf report 解析展示。
#21515是进程号
perf top -g -p 21515
小结
- 用户CPU和Nice CPU高,说明用户态进程占用了较多的CPU,所以应该着重排查进程的性能问题。
- 系统CPU高,说明内核态占用了较多的CPU,所以应该着重排查内核线程或者系统调用的性能。
- I/O等待CPU高,说明I/O时间比较长,所以应该着重排查系统存储是不是出现了I/O问题。
- 软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的CPU,所以应该着重排查内核中的中断服务程序。
碰到CPU使用率升高的问题,可以借助top,pidstat工具,确认引发CPU性能问题的来源,再使用perf等工具,排查出引起性能问题的具体函数。
标签:1.00,15,利用率,100%,45,CPU,dmserver,0.00 From: https://www.cnblogs.com/lixiaomeng/p/18170733