Linux系统性能分析

简介: Linux系统性能分析

CPU性能分析

CPU性能常用分析工具有vmstat、uptime、mpstat等

命令:vmstat

这个命令含义本是显示虚拟内存状态,但它可以报告系统整体状态

语法:vmstat [-V] [-n] [delay [count]]

参数:

-n:输出的头部信息仅显示一次

delay:表示两次输出的间隔时间

count:表示统计的次数

  • 例:表示每五秒输出一次信息,输出三次
[root@centos7 ~]# vmstat 5 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 3421504   2136 361196    0    0    26    16   73   53  4  0 96  0  0
 0  0      0 3421356   2136 361228    0    0     0     0   42   72  0  0 100  0  0
 0  0      0 3421356   2136 361228    0    0     0     1   46   76  0  0 100  0  0
  • procs:表示队列和等待时间
r:表示运行和等待CPU时间片的进程数(如果这个值长期大于系统CPU个数,说明CPU不足)
b:表示等待资源的进程数,如正在等待i/o、内存交换等。
  • memory:表示物理内存状态
swpd:表示切换到内存交换区的内存数量,单位为KB。(如果swpd的值不为0,或者比较大,只要si、so值长期为零0,就不用担心。)
free:表示当前空闲的物理内存数量。
buff:表示buffers cached的内存数量,一般对块设备的读写才需要缓冲。
cache:表示page cached的内存数量,一般作为文件系统cached。(如果cache值较大,说明cached文件数较多,如果此时i/o中bi比较小,说明文件系统效率比较好。)
  • swap:显示交换分区的使用状态
si:表示由磁盘调入内存,也就是内存。如果内存进入内存交换区的数量
so:表示由内存调入磁盘,也就是内存交换区进入内存的数量
分析:(一般情况下,si、so值都为零。如果si、so值长期不为零,则表示系统内存不足,需要增加系统内存。)
  • io:显示磁盘读写状态
bi:表示从块设备入数据的总量(即读磁盘,单位KB/s)。
bo:表示写入到块设备的数据总量(即写磁盘,单位KB/s)。
分析:(设置bi+bo参考值为1000,如果超过1000,而且wa指较大,则表示系统磁盘i/o有问题,应该考虑提高磁盘的读写性能。)
  • system:显示采集间隔内发生的中断数
in:表示在某一时间间隔中观测到的每秒设备中断数。
cs:表示每秒产生的上下文切换次数。
  • cpu:显示CPU的使用状态
us:显示了用户进程消耗的CPU时间百分比。
分析:(us的值比较高时,说明用户进程消耗的CPU时间多,如果长期大于50%,则需要考虑进行优化。)
sy:显示了内核进程消耗的CPU时间百分比。
分析:(sy的值比较高时,说明内核消耗的CPU资源很多。如果us+sy大于80%。说明可能存在CPU资源不足的情况。)
id:显示了CPU处于空闲状态的时间百分比。
wa:显示了i/o等待所占用的CPU时间百分比,wa值越高,说明i/o等待越严重。
分析:(wa的参考值为20%,如果wa值超过20%,说明i/o等待严重。原因可能是磁盘大量随机读写造成,也可能是磁盘或者磁盘控制器的宽带瓶颈造成的。)

命令:uptime

uptime是监控系统性能最常用的一个命令。主要用来统计系统当前的运行状况。

以下这条命令输出的信息依次为:系统时间、系统从开机开始运行的时间、系统目前有多少登录用户、系统在一分钟内、五分钟内、15分钟内平均负载。

[root@centos7 ~]# uptime
 19:51:32 up  2:20,  2 users,  load average: 0.00, 0.01, 0.04

需要注意的地方是load average这个输出值,这三个值的大小,一般不能大于系统CPU的个数。

例如,本书初中系统有两个CPU,如果三个数值长期大于2,说明CPU很繁忙,负载很高。相反,如果这个数值远远小于2,说明CPU很空闲。

命令:mpstat

这个命令是一个CPU实时状态监控工具。是通过/proc/stat里面的状态信息来进行统计的,他可以查看多核CPU中每个计算核的统计数据。

语法:mpstat [-P {cpu|ALL}] [internal] [count]

参数:

[-P {cpu|ALL}]:表示监控哪个CPU,第一颗CPU数值为0

internal:采集的间隔时间

count:采集的次数

[root@centos7 ~]# mpstat 3 2
Linux 3.10.0-1160.el7.x86_64 (centos7)  2022年01月04日   _x86_64_  (2 CPU)
20时06分23秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20时06分26秒  all    0.17    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.67
20时06分29秒  all    0.00    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.83
平均时间:  all    0.08    0.00    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.75

以下为输出中每列的含义:

  • CPU:处理器的ID
  • %usr:显示用户进程消耗的CPU时间百分比
  • %nice:显示了运行正常进程所消耗的CPU时间百分比
  • %sys:显示了系统进程消耗的CPU时间百分比
  • %iowait:显示了i/o等待所占用的CPU时间百分比
  • %irq:显示了硬中断时间占用的CPU时间百分比
  • %soft:显示了软中断时间占用的CPU时间百分比
  • %steal:显示了在内存相对紧张的环境下page in强制对不同的页面进行的steal操作
  • %guest:显示了运行虚拟处理器时CPU花费时间的百分比
  • %gnice:显示了运行带有nice优先级的虚拟CPU所花费的时间百分比
  • %idle:显示了CPU处在空闲状态的时间百分比

分析 :当%idle值较低时,应该是CPU不足的问题。当%iowait数值较高时,应该是当前负载下i/o子系统出现了问题。

内存性能分析

内存性能分析的常用工具有free、smem等。

命令:free

free是监控Linux内存使用状况最常用的指令。

[root@centos7 ~]# free
              total        used        free      shared  buff/cache   available
Mem:        4026156      243776     3411332       11868      371048     3550276
Swap:       2097148           0     2097148

此命令输出中显示了系统的各种内存状态,包括了物理内存和swap。

以上信息每列的内容分别为总内存(total)、使用内存(used)、空闲内存(free)、共享内存(shared)、系统缓存(buff/cache)、可用内存(available)

分析:一般来说,可用内存大于70%时,说明资源非常充足;小于20%时,说明资源紧缺,可扩容内存。

命令:smem

这个命令可以显示内存使用情况报告,他可以提供多种报告。

这个命令需要单独安装:

[root@centos7 ~]# yum -y install epel-release
[root@centos7 ~]# yum -y install smem python-matplotlib python-tk

语法:smem [参数]

-k:用来显示内存单位

-p:以百分比的形式显示内存占用

-u:显示每个用户占用的内存信息。

-s:表示排序。

[root@centos7 ~]# smem -k -s uss
  PID User     Command                         Swap      USS      PSS      RSS 
 1024 root     /sbin/agetty --noclear tty1        0   172.0K   204.0K   848.0K 
  965 root     /usr/sbin/irqbalance --fore        0   376.0K   432.0K     1.3M 
  860 root     /sbin/auditd                       0   544.0K   570.0K     1.1M 
  522 root     /usr/sbin/lvmetad -f               0   596.0K   640.0K     1.5M 

上面相关的内容最后几列的内容分别是:

  • RSS:是最常用的内存指标,表示进程占用的物理内存大小。这个值中包含了共享内存
  • PSS:所有使用某共享库的程序均分该共享库占用的内存嗯。简单来说就是将共享内存的大小进行平均后,分摊到各个进程。
  • USS:建成独自占有的内存,只计算进程独自占用的内存大小,不包含任何共享的部分。嗯呢。东莞r PS

通过这个命令,可以清晰的看到每个进程占用了多少内存资源,以及占用是否合理。

磁盘性能分析

磁盘性能分析的常用工具有iotop、iostat等

命令:iotop

这是一个用来监视磁盘i/o使用状况的top类工具,可监测到某一个程序使用的磁盘i/o的实时信息。

选项:

-p:指定进程ID,显示该进程的i/o情况

-u:指定用户名,显示该用户所有进程的i/o情况

-P:只显示进程

-k:表示以千字节显示

-t:表示在每一行前添加一个当前时间

iotop
Total DISK READ : 0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE:       0.00 B/s
TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                             
     1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 22
     2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
  1027 be/4 polkitd     0.00 B/s    0.00 B/s  0.00 %  0.00 % polkitd --no-debug
     4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
   517 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % lvmetad -f

命令:iostat

这个命令是对系统的磁盘i/o操作进行监视。主要显示磁盘读写操作的统计信息。

yum -y install sysstat

安装完成后,系统将会多出三个命令:iostat、sar、mpstat

[root@centos7 ~]# iostat -d
Linux 3.10.0-1160.el7.x86_64 (centos7)  2022年01月05日   _x86_64_  (2 CPU)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               3.32        63.47         6.58     102745      10649
scd0              0.01         0.64         0.00       1028          0
dm-0              2.14        56.08         5.31      90778       8601
dm-1              0.05         1.36         0.00       2204          0

以上的每项输出解释如下:

  • KB_read/s:表示每秒读取的数据块数
  • KB_wrth/s:表示每秒写入的数据快数
  • KB_read:表示读取的所有块数
  • KB_wrth:表示写入的所有块数

如果每秒写值很大,表示磁盘的写操作很频繁,可以优化磁盘或优化程序。如果每秒写的值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存进行操作。

网络性能分析

网络性能分析的常用工具有ping、traceroute和mtr等

命令:ping

如果网络反应慢,或连接中断。可以通过ping来测试网络连通情况。

[root@centos7 ~]# ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=128 time=11.4 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=128 time=11.8 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=128 time=12.4 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=4 ttl=128 time=11.4 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3012ms
rtt min/avg/max/mdev = 11.409/11.805/12.443/0.411 ms

在以上这个输出中,time值显示了两台主机间的网络延迟情况,如果此值很大,则表示网络延迟很大。

packet loss表示网络丢包率,这个值越小,表示网络质量越高。

目录
相关文章
|
3天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
18 3
|
3天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
16 2
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
35 5
linux系统服务二!
|
13天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
35 3
linux系统服务!!!
|
21天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
169 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
22天前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
69 3
Linux系统之部署Linux管理面板1Panel
|
3天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
18 3
|
6天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
23 6
|
6天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
31 6
|
7天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
33 5