• Linux 常用系统性能测试命令


    Linux 常用系统性能测试命令

    此文档基于CentOS7编写。

    一、CPU

    1.top命令

    [root@localhost ~]# top
    

    第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值)。

    第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

    第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。

    第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。

    第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。

    2.mpstat

    ​ 用来查看CPU负载高的原因,mpstat命令写入每个可用处理器的标准输出活动,处理器0是第一个。还报告了所有处理器的全球平均活动。mpstat命令可以在SMP和UP机器上使用,但在后者中,只会打印全局平均活动。如果未选择任何活动,则默认报告为CPU利用率。

    # 每1秒统计一次,统计三次。
    [root@k8s ~]# mpstat -P ALL 1 3
    

    %user 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)100
    %nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)
    100
    %sys 在internal时间段里,内核时间(%) (system/total)100
    %iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)100
    %irq 在internal时间段里,硬中断时间(%) (irq/total)100
    %soft 在internal时间段里,软中断时间(%) (softirq/total)100
    %idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)100

    ​ 机器一共有四个核心,所以每次显示的是4条记录,这里的输出主要看最后的Average数值。这是在没有负载的情况下机器的负载情况。

    ​ 指示要报告其统计信息的处理器编号。cpu是处理器编号。请注意,处理器0是第一个处理器。ON关键字表示要为每个联机处理器报告统计信息,而ALL关键字表示要为所有处理器报告统计信息。

    测试一:增加系统IO

    [root@k8s ~]# stress --io 1000 --timeout 600
    stress: info: [84278] dispatching hogs: 0 cpu, 1000 io, 0 vm, 0 hdd
    

    这里可以看出系统在高IO的情况下,CPU的内核态占用很高,最后的空闲占的很少。

    通过pidstat查看哪个进程对CPU的影响。

    [root@k8s ~]# pidstat -u 3 5
    

    看哪个进程对CPU的影响。看%system列的占用情况,然后根据实际情况进行进程的动作。

    测试二:增加cpu的计算采用大量线程

    [root@k8s ~]# stress -c 4 --timeout 600
    stress: info: [7634] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd
    

    ​ 这里可以看出系统在大量进程的情况下,CPU的用户态占用很高,最后的空闲%idle占的很少。不管是内核态的升高还是用户态的升高都会导致系统空闲程度的下降。

    通过pidstat查看哪个进程对CPU的影响。

    [root@k8s ~]# pidstat -u 3 5
    

    看哪个进程对CPU的影响。看%usr列的占用情况,然后根据实际情况进行进程的动作。

    二、内存

    free -h

    查看内存占用高的进程PID

    [root@k8s ~]# ps aux | sort -n -k 3 -r|head
    

    三、磁盘

    1.查看磁盘容量

    会显示磁盘占用的空间量Use%如果有100%的就需要清理磁盘,一般从先从日志文件下手。

    df -h
    

    # 显示操作系统文件系统
    [root@localhost ~]# df -Th
    Filesystem              Type      Size  Used Avail Use% Mounted on
    devtmpfs                devtmpfs  979M     0  979M   0% /dev
    tmpfs                   tmpfs     991M     0  991M   0% /dev/shm
    tmpfs                   tmpfs     991M  9.6M  981M   1% /run
    tmpfs                   tmpfs     991M     0  991M   0% /sys/fs/cgroup
    /dev/mapper/centos-root xfs        49G  1.8G   48G   4% /
    /dev/sda1               xfs      1014M  137M  878M  14% /boot
    tmpfs                   tmpfs     199M     0  199M   0% /run/user/0
    

    2.磁盘负载

    # 所依耐安装包
    yum -y install sysstat
    
    iostat -dmx 1 3
    # 每秒显示一次显示三次。
    

    # 常用参数
    
    -d         # 显示设备(磁盘)使用状态
    -c         # 只显示CPU行
    -k         # 以千字节为单位显示磁盘输出
    -m         # 以每秒兆字节为单位显示统计信息
    -t         # 在输出中包括时间戳
    -x         # 在输出中包括扩展的磁盘指标
    
    rrqm/s: 每秒进行 merge 的读操作数目。
    wrqm/s: 每秒进行 merge 的写操作数目。
    r/s: 每秒完成的读 I/O 设备次数。
    w/s: 每秒完成的写 I/O 设备次数。
    rsec/s: 每秒读扇区数。
    wsec/s: 每秒写扇区数。
    rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
    wkB/s: 每秒写K字节数。是 wsect/s 的一半。(需要计算)
    avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
    avgqu-sz: 平均I/O队列长度。
    await: 平均每次设备I/O操作的等待时间 (毫秒)。
    svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
    %util: 一秒中有百分之多少的时间用于 I/O 操作。
    
    关于Merge的解释:当系统调用需要读取数据的时 候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge
    
    await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
    
    %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
    

    四、网络测试

    1.iperf3 测试网络带宽

    # 服务端运行
    [root@k8s ~]# iperf3 -s
    

    # 客户端运行
    [root@k8s net]# iperf3 -c 10.4.7.10
    

    2.查看网卡是否有丢包

    # 查看error字段
    [root@k8s ~]# ifconfig ens33
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.4.7.10  netmask 255.255.255.0  broadcast 10.4.7.255
            inet6 fe80::20c:29ff:fe78:a8e1  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:78:a8:e1  txqueuelen 1000  (Ethernet)
            RX packets 23719  bytes 26537409 (25.3 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 9663  bytes 1953840 (1.8 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@k8s ~]# ethtool -S ens33 |grep -i error
         rx_errors: 0
         tx_errors: 0
         rx_length_errors: 0
         rx_over_errors: 0
         rx_crc_errors: 0
         rx_frame_errors: 0
         rx_missed_errors: 0
         tx_aborted_errors: 0
         tx_carrier_errors: 0
         tx_fifo_errors: 0
         tx_heartbeat_errors: 0
         tx_window_errors: 0
         rx_long_length_errors: 0
         rx_short_length_errors: 0
         rx_align_errors: 0
         rx_csum_offload_errors: 0
    
    
    [root@k8s ~]# ethtool ens33
    Settings for ens33:
    	Supported ports: [ TP ]
    	Supported link modes:   10baseT/Half 10baseT/Full 
    	                        100baseT/Half 100baseT/Full 
    	                        1000baseT/Full 
    	Supported pause frame use: No
    	Supports auto-negotiation: Yes
    	Supported FEC modes: Not reported
    	Advertised link modes:  10baseT/Half 10baseT/Full 
    	                        100baseT/Half 100baseT/Full 
    	                        1000baseT/Full 
    	Advertised pause frame use: No
    	Advertised auto-negotiation: Yes
    	Advertised FEC modes: Not reported
    	Speed: 1000Mb/s
    	Duplex: Full
    	Port: Twisted Pair
    	PHYAD: 0
    	Transceiver: internal
    	Auto-negotiation: on
    	MDI-X: off (auto)
    	Supports Wake-on: d
    	Wake-on: d
    	Current message level: 0x00000007 (7)
    			       drv probe link
    	Link detected: yes
    	
    # Speed: 1000Mb/s    # 网卡速率
    # Duplex: Full       # 全双工
    # Link detected: yes # 物理链路
    
  • 相关阅读:
    boke
    Http post/get
    记一次网站优化---图片压缩与移动端画面缩放问题
    深入浅出 Vue.js 第九章 解析器---学习笔记
    Linux/Mac中alias的使用
    JavaScript中的函数柯里化与反柯里化
    JavaScript中深拷贝实现
    JavaScript中的节流和防抖
    博客园加入百度统计遇到的坑
    记一次无数据库下动态更新文案的解决历程
  • 原文地址:https://www.cnblogs.com/gshelldon/p/16166293.html
Copyright © 2020-2023  润新知