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表示网络丢包率,这个值越小,表示网络质量越高。

目录
相关文章
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
121 3
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
98 2
|
26天前
|
存储 缓存 监控
Linux缓存管理:如何安全地清理系统缓存
在Linux系统中,内存管理至关重要。本文详细介绍了如何安全地清理系统缓存,特别是通过使用`/proc/sys/vm/drop_caches`接口。内容包括清理缓存的原因、步骤、注意事项和最佳实践,帮助你在必要时优化系统性能。
171 78
|
30天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
63 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
17天前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
35 7
|
2月前
|
缓存 Java Linux
如何解决 Linux 系统中内存使用量耗尽的问题?
如何解决 Linux 系统中内存使用量耗尽的问题?
197 48
|
26天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
94 13
|
20天前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
|
2月前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
58 3
|
27天前
|
Ubuntu Linux C++
Win10系统上直接使用linux子系统教程(仅需五步!超简单,快速上手)
本文介绍了如何在Windows 10上安装并使用Linux子系统。首先,通过应用商店安装Windows Terminal和Linux系统(如Ubuntu)。接着,在控制面板中启用“适用于Linux的Windows子系统”并重启电脑。最后,在Windows Terminal中选择安装的Linux系统即可开始使用。文中还提供了注意事项和进一步配置的链接。
42 0