AIX 平台分析TOP CPU使用进程ps和topas差异
近日一客户应用反馈数据库使用较慢,每个数据库的性能分析应该先从操作系统负载分析开始,当CPU耗尽时,其它指标可能失真变的没有意义, 当系统缓慢时不应仅从DB里找原因,数据库中几乎无负载,查看OS层发现idle接近个位数, 操作系统为AIX, 从OS层定位top process的命令通常有topas, ps, vmstat,nmon -t等,发现ps和topas显示cpu占比存在较大差异,4%和90%. 简单记录一下。
vmstat
[oracle@anbob01:/home/oracle]# vmstat 1 System configuration: lcpu=48 mem=123648MB kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 39 0 18969389 132441 0 0 0 0 0 0 322 1824188 10859 93 1 6 0 40 0 18968942 132888 0 0 0 0 0 0 360 1826953 9083 93 1 6 0 38 0 18966203 135627 0 0 0 0 0 0 588 1858182 9242 93 1 6 0 39 0 18966077 135753 0 0 0 0 0 0 294 1855065 9058 93 1 6 0 38 0 18965997 135833 0 0 0 0 0 0 243 1799485 8907 92 1 7 0 0 0 18966313 135517 0 0 0 0 0 0 225 1840313 10645 91 1 8 0 38 0 18969328 132501 0 0 0 0 0 0 617 1832792 9149 91 1 8 0 37 0 18968420 133393 0 0 0 0 0 0 1173 1807909 10358 91 1 8 0 41 0 18969701 132111 0 0 0 0 0 0 1395 1830228 11478 93 1 6 0 38 0 18969775 132037 0 0 0 0 0 0 362 1836281 8897 92 1 7 0 39 0 18967206 134605 0 0 0 0 0 0 233 1924588 10349 93 1 5 0
ps top cpu process
[oracle@anbob01:/home/oracle]# ps aux | head -1; ps aux | sort -rn +2 | head -20 USER PID %CPU %MEM SZ RSS TTY STAT STIME TIME COMMAND pconsole 2621816 4.4 0.0 141772 141824 - A Dec 08 3433492:39 /usr/java6/bin dmhs 6160490 0.8 1.0 876904 876908 - A Jun 10 321026:48 /opt/dmhs/bin/ grid 8127446 0.5 0.0 198672 126208 - A 12:15:35 0:14 oracleanbob01 root 1704000 0.4 0.0 448 448 - A Dec 08 312884:19 wait root 1638462 0.4 0.0 448 448 - A Dec 08 313028:38 wait root 1572924 0.4 0.0 448 448 - A Dec 08 312446:33 wait root 1507386 0.4 0.0 448 448 - A Dec 08 298379:07 wait root 1441848 0.4 0.0 448 448 - A Dec 08 313529:54 wait root 1376310 0.4 0.0 448 448 - A Dec 08 313464:31 wait root 1310772 0.4 0.0 448 448 - A Dec 08 312732:28 wait root 1245234 0.4 0.0 448 448 - A Dec 08 298581:51 wait root 1179696 0.4 0.0 448 448 - A Dec 08 314464:43 wait root 1114158 0.4 0.0 448 448 - A Dec 08 314355:18 wait root 1048620 0.4 0.0 448 448 - A Dec 08 313696:49 wait root 852872 0.4 0.0 448 448 - A Dec 08 314262:25 wait root 852592 0.4 0.0 448 448 - A Dec 08 314365:14 wait root 852312 0.4 0.0 448 448 - A Dec 08 312861:41 wait root 787334 0.4 0.0 448 448 - A Dec 08 314042:35 wait root 787054 0.4 0.0 448 448 - A Dec 08 314334:36 wait root 786774 0.4 0.0 448 448 - A Dec 08 312957:15 wait
topas
[oracle@anbob01:/home/oracle]# topas Topas Monitor for host:anbob01 EVENTS/QUEUES FILE/TTY Fri Jan 6 12:26:31 2023 Interval:2 Cswitch 10382 Readch 1472.8K Syscall 1940.7K Writech 79202 CPU User% Kern% Wait% Idle% Reads 1222 Rawin 0 Total 94.0 1.5 0.0 4.5 Writes 138 Ttyout 804 Forks 13 Igets 0 Network BPS I-Pkts O-Pkts B-In B-Out Execs 17 Namei 2289 Total 383K 457.0 431.5 160K 223K Runqueue 39.00 Dirblk 0 Waitqueue 0.0 Disk Busy% BPS TPS B-Read B-Writ MEMORY Total 2.3 55.6M 355.5 55.4M 247K PAGING Real,MB 123648 Faults 11553 % Comp 60 FileSystem BPS TPS B-Read B-Writ Steals 0 % Noncomp 39 Total 1.20M 1.07K 1.20M 3.82K PgspIn 0 % Client 39 PgspOut 0 Name PID CPU% PgSp Owner PageIn 0 PAGING SPACE java 2621816 86.0 138M pconsole PageOut 0 Size,MB 16384 dmhs_ser 6160490 2.7 856M dmhs Sios 0 % Used 1 oracle 16318758 2.0 28.5M grid % Free 99 oracle 13238760 2.0 132M grid NFS (calls/sec) reaffin 589854 0.3 640K root SerV2 0 WPAR Activ 0 oracle 7930688 0.1 7.92M grid CliV2 0 WPAR Total 0 osysmond 3801114 0.1 101M root SerV3 0 Press: "h"-help ohasd.bi 8781864 0.1 59.5M root CliV3 0 "q"-quit oracle 9896928 0.1 69.1M oracle SerV4 0 oraagent 2753262 0.1 77.2M grid CliV4 0 oraroota 7536686 0.0 99.6M root oraagent 9764938 0.0 33.0M oracle oracle 8978626 0.0 8.90M grid oracle 3080448 0.0 18.3M grid oracle 9306158 0.0 23.8M oracle crsd.bin 3932202 0.0 455M root topas 12779894 0.0 6.79M oracle oracle 15597646 0.0 12.4M grid oracle 16450166 0.0 8.84M grid octssd.b 3277270 0.0 22.2M root
pconsole从ps看进程cpu使用仅为4.4%, 而topas显示为86%+, 哪个更正确呢?stackexchange有一个相同的提问 ,是计算方式的差异。
TOPAS % CPU 进程在监视间隔内的平均处理器使用情况。首次显示进程时,此值是进程生存期内的平均处理器使用情况。 PS %CPU(U和V标志)自进程启动以来进程使用 CPU 的时间百分比。此值的计算方法是将进程使用 CPU 的时间除以进程的已用时间。在多处理器环境中,该值进一步除以可用 CPU 的数量,因为同一进程中的多个线程可以同时在不同的 CPU 上运行。(由于计算此数据的时基不同,因此所有 %CPU 字段的总和可能超过 100%。),这么看topas 显示的是当前最近时间内CPU使用更为接近 确认是pconsole占用。
pconsole是AIX系统安装了sysmgt.pconsole.rte包后一个服务java进程, pconsole提供了一个Web的系统管理界面, IBM官方在线文档有记录如何停止pconsole.
关闭的方法很简单:
Stop the services. AIX 5.3: # stopsrc -s http4websm AIX 6.1 # stopsrc -s http4websm # stopsrc -s pconsole AIX 7.1 # stopsrc -s pconsole
验证服务是否正常运行。
# lssrc -a | egrep "pconsole|webserverstart"
禁用随OS自动启动
从 /etc/inittab 中删除或注释掉命令的每个条目,以防止服务在重新启动后重新启动。
# vi /etc/inittab 在标识符前插入冒号 (“:”) 字符以禁用启动 例如:AIX 7.1: :webserverstart:2:once:startsrc -s http4websm >/dev/null 2>&1 :pconsole:2:once:/usr/bin/startsrc -s pconsole > /dev/null 2>&1
— over —
对不起,这篇文章暂时关闭评论。