Linux开发讲课44---linux性能查看命令和工具

CPU 性能查看命令和工具

top:实时监控系统中各进程的 CPU 使用情况。

vmstat:监控系统整体的 CPU 使用情况,包括用户态、内核态和空闲时间。

利用 top、vmstat、pidstat、strace 以及 perf 等几个最常见的工具,获取 CPU 性能指标后,再结合进程与 CPU 的工作原理,就可以迅速定位出 CPU 性能瓶颈的来源。

cpu使用排名

ps aux --sort=-%cpu | head -n 5

[root@ubuntu ~]# ps aux --sort=-%cpu | head -n 5USERPID %CPU %MEMVSZ   RSS TTY  STAT START   TIME COMMANDroot  1  0.0  0.0 191564  4536 ?Ss   Aug14   0:03 /usr/lib/systemd/systemd 
--switched-root --system --deserialize 22root  2  0.0  0.0  0 0 ?SAug14   0:00 [kthreadd]root  4  0.0  0.0  0 0 ?S<   Aug14   0:00 [kworker/0:0H]root  6  0.0  0.0  0 0 ?SAug14   0:00 [ksoftirqd/0]

vmstat 2 3

间隔2s,打印3次

[root@ubuntu ~]# vmstat 2 3procs ------memory---- ---swap-----io- -system----cpu---r  b   swpd   free   buff  cache   si   sobibo   in   cs us sy id wa st0  0  0 14435784  79416 85558400 2 1   10   12  0  0 100  0  00  0  0 14435760  79416 85561600 0 0   83  102  0  0 100  0  00  0  0 14435760  79416 85561600 0 0   39   47  0  0 100  0  0

sar -u 3 5

显示CPU利用率,间隔3s,显示5次

[root@ubuntu ~]# sar -u 3 5Linux 3.10.0-1160.el7.x86_64 (rhel7) 08/15/2024 _x86_64_ (4 CPU)02:19:56 AM CPU %user %nice   %system   %iowait%steal %idle02:19:59 AM all  0.00  0.00  0.08  0.00  0.00 99.9202:20:02 AM all  0.33  0.00  0.25  0.00  0.00 99.4202:20:05 AM all  0.00  0.00  0.00  0.00  0.00100.0002:20:08 AM all  0.00  0.00  0.08  0.00  0.00 99.9202:20:11 AM all  0.17  0.00  0.00  0.00  0.00 99.83Average:all  0.10  0.00  0.08  0.00  0.00 99.82

iostat命令

#查看CPU使用情况

[root@ubuntu ~]# iostat -c
Linux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.030.010.010.000.00   99.94

uptime命令:1、5、15分钟平均负载

#如果是8核CPU,load average三个值长期大于8,说明负载很高,会影响系统性能。

[root@ubuntu ~]# uptime
02:21:30 up 1 day, 17 min,  3 users,  load average: 0.00, 0.01, 0.05

CPU 使用率

[root@ubuntu ~]# cat /proc/stat | grep cpucpu  
13608 4699 4370 39356213 1679 0 43 0 0 0cpu0 3869 889 761 9838971 831 0 10 0 0 0cpu1 3496 744 879 9840695 50 0 3 0 0 0cpu2 3357 1611 1698 9836350 361 0 16 0 0 0cpu3 2884 1453 1031 9840195 437 0 14 0 0 0

mpstat 命令

#-P ALL 表示监控所有CPU,后面数字5表示间隔5秒后输出一组数据

[root@ubuntu ~]# mpstat -P ALL 5
Linux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)05:29:21 AM  CPU%usr   %nice%sys %iowait%irq   %soft  %steal  %guest  %gnice   %idle05:29:26 AM  all0.000.000.000.000.000.000.000.000.00  100.0005:29:26 AM00.000.000.000.000.000.000.000.000.00  100.0005:29:26 AM10.000.000.000.000.000.000.000.000.00  100.0005:29:26 AM20.000.000.000.000.000.000.000.000.00  100.0005:29:26 AM30.000.000.000.000.000.000.000.000.00  100.0005:29:26 AM  CPU%usr   %nice%sys %iowait%irq   %soft  %steal  %guest  %gnice   %idle05:29:31 AM  all0.000.000.000.050.000.000.000.000.00   99.9505:29:31 AM00.000.000.000.000.000.000.000.000.00  100.0005:29:31 AM10.000.000.000.000.000.000.000.000.00  100.0005:29:31 AM20.000.000.000.000.000.000.000.000.00  100.0005:29:31 AM30.200.000.000.000.000.000.000.000.00   99.80

pidstat 命令

#查看一下进程的情况,间隔5秒后输出一组数

[root@ubuntu ~]# pidstat -w 5 
Linux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)05:31:36 AM   UID   PID   cswch/s nvcswch/s  Command05:31:41 AM 0 6  0.20  0.00  ksoftirqd/005:31:41 AM 0 9 14.14  0.00  rcu_sched05:31:41 AM 011  0.40  0.00  watchdog/005:31:41 AM 012  0.40  0.00  watchdog/105:31:41 AM 017  0.40  0.00  watchdog/205:31:41 AM 022  0.40  0.00  watchdog/3 .....................................05:31:41 AM 0  3280  0.20  0.00  kworker/u256:005:31:41 AM 0  3483  0.40  0.00  kworker/3:205:31:41 AM 0  6305  1.59  0.00  kworker/2:105:31:41 AM 0  6354  1.39  0.00  kworker/0:005:31:41 AM 0  6355  0.20  0.20  pidstat

内存性能查看命令和工具****

free命令

#查看系统内存使用情况。

[root@ubuntu ~]# free -h 
totalusedfree  shared  buff/cache   available Mem:15G1.0G 13G 22M952M 14G Swap:  7.9G  0B7.9G

sar命令

#系统性能监控工具,可以监控系统的内存使用率、页面交换等情况。

#-r 内存使用统计信息

#-R 内存统计信息

sar -r

[root@ubuntu ~]# sar -r
Linux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty12:10:01 AM  14442968   1968988 12.00 78468783512   3222832 13.08923404351276 412:20:01 AM  14443284   1968672 12.00 78504783516   3222832 13.08923356351312 012:30:01 AM  14443108   1968848 12.00 78548783524   3222812 13.08923432351348   28412:40:01 AM  14443312   1968644 12.00 78588783528   3222840 13.08923432351396 012:50:01 AM  14442456   1969500 12.00 78712783520   3222844 13.08923344351512 0.............................................................................06:10:01 AM  14377608   2034348 12.40 84632813600   3245844 13.17966592364860 006:20:01 AM  14377108   2034848 12.40 84660813600   3245756 13.17966820364884 406:30:01 AM  14377260   2034696 12.40 84692813640   3245736 13.179668723649241606:40:01 AM  14377224   2034732 12.40 84820813628   3245764 13.17966796365052 0Average:kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirtyAverage: 14421106   1990850 12.13 80711790752   3234299 13.1293874635470110

sar -R

[root@Ubuntu ~]# sar -RLinux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)12:00:01 AM   frmpg/s   bufpg/s   campg/s12:10:01 AM -0.10  0.02  0.0012:20:01 AM  0.13  0.01  0.0012:30:01 AM -0.07  0.02  0.0012:40:01 AM  0.08  0.02  0.00 ............................06:00:01 AM -0.23  0.02 -0.0006:10:01 AM -0.16  0.01  0.0106:20:01 AM -0.21  0.01  0.0006:30:01 AM  0.06  0.01  0.0206:40:01 AM -0.01  0.05 -0.0006:40:01 AM   frmpg/s   bufpg/s   campg/s06:50:01 AM  0.00  0.02  0.01Average:-0.67  0.07  0.31

vmstat命令

#除了 CPU,也可以用来监控系统内存使用情况。

[root@Ubuntu ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   sobibo   in   cs us sy id wa st0  0  0 14378812  84888 89048400 1 1   10   12  0  0 100  0  0

内存使用排名

ps aux --sort=-%mem | head -n 6

[root@Ubuntu ~]# ps aux --sort=-%mem | head -n 6USERPID %CPU %MEMVSZ   RSS TTY  STAT START   TIME COMMANDroot   2640  0.0  1.3 3710124 219972 ?  Sl   Aug14   1:17 /usr/bin/gnome-shellroot   1430  0.0  0.2 349572 42868 tty1 Ssl+ Aug14   0:02 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-B4ETCL/database -seat seat0 -nolisten tcp vt1root   2829  0.0  0.1 877316 31764 ?Sl   Aug14   0:00 nautilus-desktop --forceroot   3017  0.0  0.1 733284 28696 ?Sl   Aug14   0:00 /usr/libexec/gnome-terminal-serverroot   2704  0.0  0.1 902492 28516 ?Sl   Aug14   0:00 /usr/libexec/goa-daemon

网络 性能查看命令和工具

iftop命令

#实时监控网络流量,需要额外安装

CentOS上安装所需依赖包:

yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel gcc build-essential -y

下载iftop

wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz

解压

tar zxvf iftop-0.17.tar.gz

进入解压目录

cd iftop-0.17

预编译

./configure

编译安装

make && make install

netstat命令

#-i 查看网络接口信息

#-r 检测系统路由表信息。

[root@Ubuntu iftop-0.17]# netstat -iKernel Interface tableIface MTURX-OK RX-ERR RX-DRP RX-OVRTX-OK TX-ERR TX-DRP TX-OVR Flgeth0 1500   349522  0  0 0 25673  0  0  0 BMRUlo  65536   36  0  0 036  0  0  0 LRU    [root@Ubuntu iftop-0.17]# netstat -rKernel IP routing tableDestination Gateway Genmask Flags   MSS Window  irtt Iface default gateway 0.0.0.0 UG0 0  0 eth0 10.255.10.00.0.0.0 255.255.255.0   U 0 0  0 eth0

IO 性能查看命令和工具

iotop命令

#实时监控系统的 IO 情况,包括读写速率和进程 IO 占用情况。

#显示正在产生的io进程,没有就不显示;​​​​​​​

[root@Ubuntu ~]# iotop -oTotal DISK READ :  0.00 B/s | Total DISK WRITE :   0.00 B/sActual DISK READ:  0.00 B/s | Actual DISK WRITE:   0.00 B/sTID  PRIO  USER DISK READ  DISK WRITE  SWAPIN IO>COMMAND9260 be/4 root0.00 B/s0.00 B/s  0.00 %  0.01 % [kworker/0:0]

#-d 5 秒刷新一次,-u 指定用户 ​​​​​​​

[root@Ubuntu ~]# iotop -d 5 -u rootTotal DISK READ :  0.00 B/s | Total DISK WRITE :   0.00 B/sActual DISK READ:  0.00 B/s | Actual DISK WRITE:   0.00 B/sTID  PRIO  USER DISK READ  DISK WRITE  SWAPIN IO>COMMAND 1 be/4 root0.00 B/s0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22 2 be/4 root0.00 B/s0.00 B/s  0.00 %  0.00 % [kthreadd] 4 be/0 root0.00 B/s0.00 B/s  0.00 %  0.00 % [kworker/0:0H]

#iotop -oP 消耗io最高的进程

iostat命令

#查看系统的 IO 统计信息,包括每个设备的读写情况和平均响应时间。

#M为单位显示所有信息​​​​​​​

[root@Ubuntu ~]# iostat -mLinux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle          0.040.010.010.000.00   99.93   Device:tpsMB_read/sMB_wrtn/sMB_readMB_wrtn      sdb   0.00 0.00 0.00  2  0      sda   0.58 0.01 0.01659935

#查看设备使用率(%util)、响应时间(await)

#-d 显示磁盘使用情况,-x 显示详细信息 1秒刷新一次,显示5次​​​​​​​

[root@Ubuntu ~]# iostat -d -x -k 1 5Linux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)Device: rrqm/s   wrqm/s r/s w/srkB/swkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util sdb   0.00 0.000.000.00 0.02 0.0054.15 0.000.070.070.00   0.07   0.00

#显示指定磁盘信息​​​​​​​

[root@Ubuntu ~]# iostat -d /dev/sdaLinux 3.10.0-1160.el7.x86_64 (rhel7)   08/15/2024   _x86_64_  (4 CPU)Device:tpskB_read/skB_wrtn/skB_readkB_wrtn sda   0.58 6.38 9.05 675114 95767​​​​​​​
相关推荐
_.Switch9 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410839 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.13 分钟前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-043 分钟前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代1 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘2 小时前
NFS服务器
运维·服务器
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
Jason-河山3 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化