硬件长稳
一、查看硬件信息
sar(sar命令,好一个大宝剑_7750783的技术博客_51CTO博客超全)
使用 yum install sysstat 命令安装 #sar命令来对系统作一个了解,该命令是系统维护的重要工具,主要帮助我们掌握系统资源的使用情况,特别是内存和CPU 的使用情况 #可以监测 磁盘,CPU,网络,内存,IO1. 类型,也就是我们要获取的是哪个类型的指标数据,这里的••-n••,代表的是监控一些网络信息2. 类型参数,有的类型带有参数,有的没有。这里的••DEV••,代表的是监控网卡信息3. 时间间隔,表示多少••秒•••采样一次数据,这里的••1••就是1秒4. 次数,表示采样的次数。比如时间间隔是3,采样次数是4,那么sar命令将会阻塞12秒钟 我们来看小小偷窥一下它的输出。 # sar -n DEV 1 2 03:10:29 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 03:10:30 PM lo 30.00 30.00 2.09 2.09 0.00 0.00 0.00 0.00 03:10:30 PM eth0 6.00 2.00 0.38 0.32 0.00 0.00 0.00 0.00 03:10:30 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil 03:10:31 PM lo 39.00 39.00 2.95 2.95 0.00 0.00 0.00 0.00 03:10:31 PM eth0 11.00 12.00 0.72 5.26 0.00 0.00 0.00 0.00 Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil Average: lo 33.00 33.00 2.38 2.38 0.00 0.00 0.00 0.00 Average: eth0 9.33 8.33 0.60 2.39 0.00 0.00 0.00 0.00
storcli64工具使用介绍
storcli64工具使用介绍_wxt_hunxiaozi的博客-CSDN博客
smartctl监控磁盘性能
硬盘检测工具-smartctl的使用 - 简书
SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来 这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等 硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏 此时硬盘依然在工作,如果用户不理睬这个报警继续使用 那么硬盘将变得非常不可靠,随时可能故障.
Smartmontools通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology),自动检测分析及报告技术)技术来实现的,SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘内部电路以及盘片表面介质材料等进行监测,当SMART监测并分析出硬盘可能出现问题时会及时向用户报警以避免计算机数据受损失。SMART技术必须在主板支持的前提下才能发生作用,而且SMART技术也不能保证能预报所有可能发生的硬盘故障。
检查磁盘健康状态 smartctl -H /dev/sda 查看磁盘详细情况 smartctl -a /dev/sda, 磁盘进行短期测试 smartctl -t short /dev/sda 查看磁盘测试结果 smartctl -l selftest /dev/sda 基本磁盘健康状态就可以定位出来 检查磁盘错误日志 smartctl -l error /dev/sdb 查看硬盘的基本参数 (设备型号、厂商、驱动版本等) [root@server ~]# smartctl -i /dev/sda 查看系统上的所有设备 [root@server ~]# smartctl --scan #smartctl -a -d megaraid,0 /dev/sda (其megaraid,0中的0代表的是在megaraid中的物理盘编号) free :显示linux系统空闲的、已用的 物理内存及swap内存,及被内核使用的buffer。
iostat
-
格式:iostat [参数] [时间] [次数]
iostat -p ALL -h
-
参数说明
参数 | 说明 |
---|---|
-c | 仅显示CPU状态统计信息 |
-d | 仅显示磁盘统计信息 |
-k或者-m | 以kb或者mb为单位显示,常用-h可读性高 |
-p | 指定显示IO的设备,ALL表示显示所有 |
-x | 显示详细信息 |
注意:iostat不能直接得到磁盘饱和度
字段 | 说明 |
---|---|
r/s | 每秒发送给磁盘的读请求次数,r/s+w/s 是磁盘IOPS |
w/s | 每秒发送给磁盘的写请求次数,r/s+w/s手机磁盘IOPS |
rkB/s | 每秒从磁盘读取的数据量,rkB/s+wkB/s 是吞吐量 |
wkB/s | 每秒向磁盘写入的数据量,rkB/s+wkB/s 是吞吐量 |
r_await | 读请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间 r_await+w_await ,是RT响应时间 |
w_await | 写请求处理完成等待时间,包括在队列中的等待时间和设备实际处理时间 r_await+w_await ,是RT响应时间 |
aqu-sz | 平均请求队列长度 |
rareq-sz | 平均读请求大小 |
wareq-sz | 平均写请求大小 |
%util | 磁盘处理I/O的时间百分比,表示的是磁盘的忙碌情况;如果>80% 就是磁盘可能处于忙碌状态 一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的 |
https://wenku.baidu.com/view/5c1e0d99f221dd36a32d7375a417866fb84ac030.html?_wkts_=1682229327091&bdQuery=%E7%A3%81%E7%9B%98%E8%AF%BB%E5%86%99%E7%AD%96%E7%95%A5 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s: 每秒读扇区数。即 delta(rsect)/s wsec/s: 每秒写扇区数。即 delta(wsect)/s rMB/s: 每秒读多少MB。 wMB/s: 每秒写多少MB。 avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) %util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
lsscsi硬盘
SCSI(Small Computer System Interface)是一套完整的数据传输协议,其主要功能是在主机和存储设备之间传送命令、状态和块数据。在各类存储技术中,SCSI技术可谓是最重要的脊梁。
SCSI协议位于操作系统和外部资源之间,它具有一系列的功能组件,操作系统对外部设备(如磁盘、磁带、光盘、打印机等)的I/O操作均可以通过SCSI协议来实现,一般情况下,SCSI协议都嵌入到设备驱动器或者主机适配器的板载逻辑中。
一、SCSI接口硬盘
SCSI并不是专门为硬盘设计的接口,是一种广泛应用于小型机上的高速数据传输技术。
SCSI接口具有应用范围广、多任务、带宽大、CPU占用率低,以及热插拔等优点,但较高的价格使得它很难如IDE硬盘般普及,因此SCSI硬盘主要应用于中、高端服务器和高档工作站中。
其特点为:传输速率高、读写性能好、可连接多个设备、可支持热插拔,但是价格相对来说比较贵。 二、SATA接口类型
其英文名称为:Serial Advanced Technology Attachment。使用SATA(Serial ATA)口的硬盘又叫串口硬盘,是未来PC机硬盘的趋势。
Serial ATA采用串行连接方式,串行ATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。
串行接口还具有结构简单、支持热插拔的优点。
#lsscsi -s列出所有具有人类可读磁盘容量的 SCSI 设备: peng@ubuntu:~$ lsscsi -s [3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0 [32:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda 536GB #lsscis -L 显示详细信息 peng@ubuntu:~$ lsscsi -L [3:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0 device_blocked=0iocounterbits=32iodone_cnt=0x229ioerr_cnt=0x4iorequest_cnt=0x23aqueue_depth=1queue_type=nonescsi_level=6state=runningtimeout=30type=5
lspci(重点)
https://blog.csdn.net/star871016/article/details/11366254
显示所有的 pci 设备信息的命令。
服务器构成:服务器的组成_服务器结构_神.秘.人的博客-CSDN博客
#-vvv :v越多,显示的信息越详细 -s :后面跟随设备编号 lspci -vvv -s 0000:00:1f #0000:00:1f为pci外设地址 #-D显示pci地址 查询网卡 lspci -D |grep -i eth lspci -vvv -s 0001:03:00.0 # lspci 用来列出所有的pci设备的命令 # -v 使得lspci以冗余模式显示所有设备的详细信息 # -vv 使得lspci以过荣誉模式希纳是更详细的信息(事实上事PCI设备能给出的所有东西)。这些数据的确切意义没有在此手册页中解释, # 如果你想知道更多,请参照/usr/include/linux/pci.h或者PCI规范 # -s [[<bus>]:][<slot>][.[<func>]] 仅显示指定总线、插槽上的设备或设备上的功能信息。设备地址的任何部分都可以忽略,或者以 # “*”替代(意味着所有值)。所有数字都是十六禁止。例如:“0:”指的是在0号总线上的所有设备;“0”值的事在任意总线上0号 # 设备的所有功能块;“0.3”选择了所有总线上0号设备的第三个功能块;“.4”则事只列出每一设备上的第四个功能块。
一、PCIe卡(硬盘背板上,扩展卡)
PCI Express卡不像处理来自多个源的数据的总线那样执行,而是可以通过开关实现一系列点对点连接,以控制数据需要去哪里。插入PCIe网卡后,将在插槽和卡之间形成逻辑连接以进行通信,称为互连或链路,从而在两个PCIe端口之间启用点对点通信通道,并允许它们都发送和接收普通的PCI请求和中断。
通道:
所有PCIe卡版本都是向后兼容的。也就是说,任何版本的PCIe卡和主板都可以在最低版本的模式下协同工作
二、LnkCap 为显卡理论的传输速率上限,LnkSta为显卡当前实际的传输速率,切记 LnkSta的值是会发生变化的,这是因为英伟达的显卡会根据实际使用情况进行自动切换。
dmesg
(英文全称:display message)命令用于显示开机信息,主要是一些硬件信息。kernel 会将开机信息存储在 ring buffer中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。
-C, --clear 清除内核环形缓冲区(ring butter) -c, --read-clear 读取并清除所有消息 -D, --console-off 禁止向终端打印消息 -d, --show-delta 显示打印消息之间的时间差 -e, --reltime 以易读格式显示本地时间和时间差 -E, --console-on 启用向终端打印消息 -F, --file <文件> 用 文件 代替内核日志缓冲区 -f, --facility <列表> 将输出限制为定义的设施 -H, --human 易读格式输出 -k, --kernel 显示内核消息 -T ,输出时间戳
ethtool
ethtool [网卡名] 用于查询及设置网卡参数的命令,它显示的信息来源于网卡驱动层,即 TCP/IP 协议的链路层。
SATA接口
作为目前应用最多的硬盘接口,SATA 3.0接口最大的优势就是成熟。普通2.5英寸SSD以及HDD硬盘都使用这种接口,理论传输带宽6Gbps,虽然比起新接口的10Gbps甚至32Gbps带宽差多了,但普通2.5英寸SSD也没这么高的需求,500MB/s多的读写速度也够用。
磁盘信息
SN 物理硬盘的序列号 Model Number 物理硬盘的模块序号 Firmware Revision 物理硬盘的FW版本 Raw size 物理硬盘的容量 Drive Temperature 磁盘温度
查看cpu的方法
cat /proc/cpuinfo
dmidecode -t 4
lscpu
RAID读写策略
影响 RAID卡性能的因素很多,其中可调因素主要有 RAID 卡缓存( CACHE )大小、写策略( WRITE POLICY )、读策略( READ POLICY )、条带的大小( STRIPE SIZE )。不同的 RAID 卡虽然说法略有不同,但意思是一样的。很多设置可以在 RAID 卡的配置工具中调整。在这里我们主要讲raid卡读写策略的区别。
在创建虚拟磁盘时,会需要对其数据读写策略进行定义,以规范后续虚拟磁盘运行过程中数据的读写方式。 数据读策略
在配置界面中一般体现为“Read Policy”。RAID卡支持如下两种数据读策略:
预读取方式:在配置界面中一般体现为“Always Read Ahead”、“Read Ahead”、“Ahead”等字样。使用此策略后,从虚拟磁盘中读取所需数据时,会把后续数据同时读出放在Cache中,用户随后访问这些数据时可以直接在Cache中命中,将减少磁盘寻道操作,节省响应时间,提高了数据读取速度。 要使用该策略,要求RAID卡支持数据掉电保护功能,且如果此时超级电容异常,可能导致数据丢失。 非预读取方式:使用此策略后,RAID卡接收到数据读取命令时,才从虚拟磁盘读取数据,不会做预读取的操作。
数据写策略
在配置界面中一般体现为“Write Policy”。RAID卡支持如下三种数据写策略:
回写:在配置界面中一般体现为“Write Back”等字样。使用此策略后,需要向虚拟磁盘写数据时,会直接写入Cache中,当写入的数据积累到一定程度,RAID卡才将数据刷新到虚拟磁盘,这样不但实现了批量写入,而且提升了数据写入的速度。当控制器Cache收到所有的传输数据后,将给主机返回数据传输完成信号。 要使用该策略,要求RAID卡支持数据掉电保护功能,且如果此时超级电容异常,可能导致数据丢失。 写通:在配置界面中一般体现为“Write Through”等字样。使用此策略后,RAID卡向虚拟磁盘直接写入数据,不经过Cache。当磁盘子系统接收到所有传输数据后,控制器将给主机返回数据传输完成信号。 此种方式不要求RAID卡支持BBU,即使BBU故障,也无影响,缺点是写入速度较低。 与BBU相关的回写:在配置界面中一般体现为“Write Back with BBU”等。使用此策略后,当RAID卡BBU在位且状态正常时,RAID卡到虚拟磁盘的写操作会经过Cache中转(即回写方式);当RAID卡BBU不在位或BBU故障时,RAID卡到虚拟磁盘的写操作会自动切换为不经过Cache的直接写入(即写通方式)。
针对LSI SAS3108:
当Firmware版本为4.270.00-4382及以下时,“Write Policy”的可选参数表现为“Write Back”(回写)、“Write Through”(写通)、“Write Back with BBU”(与BBU相关的回写)。 当Firmware版本为4.650.00-6121及以上时,“Write Policy”的可选参数表现为“Always Write Back”(回写)、“Write Through”(写通)、“Write Back”(与BBU相关的回写)。
BBU
bbu(3G网络使用的分布式基站架构)_摘编百科
二、测试工具
iperf
《Linux运维总结:服务器测试内网带宽上行和下行网速》_linux 内网网速测试_东城绝神的博客-CSDN博客^v88^control_2,239^v2^insert_chatgpt&utm_term=%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%B5%8B%E8%AF%95%20&spm=1018.2226.3001.4187
#iperf下载地址 https://downloads.es.net/pub/iperf/ https://iperf.fr/iperf-download.php#archlinux # wget http://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz # tar zxvf iperf-3.0.6.tar.gz # cd iperf-3.0.6 # ./configure # make # make install 要使用iperf,首先要启用一个服务端,这里假定服务端的IP地址为192.168.12.168,在此服务器上运行“iperf3 -s”即可开启iperf的服务器模式 参数: 客户端与服务器端公用参数 -p, --port # 设置端口,与服务器端的监听端口一致。默认是5001端口,与ttcp的一样。 -f, --format [kmgKMG] 速率显示单位。分别表示以Kbits,Mbits,Gbits,KBytes,MBytes,GBytes,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K -i, --interval # 设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。 -F, --file name 指定要传输的文件。 -B, --bind <host> 绑定到主机的多个地址中的一个(用于多网口的设备)。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。在Iperf的UDP模式下,此参数用于绑定和加入一个多播组。使用范围在224.0.0.0至239.255.255.255的多播地址。参考-T参数。 -V, --verbose 输出更多细节信息。 -J, --json 以JSON格式输出。 –logfile f 把输出信息保存到一个日志文件。
yes|ptu -t -i 10000 -csv -log
taskset
优化命令taskset详解_taskset命令详解_灌南第一帅的博客-CSDN博客
numactl查看硬盘在哪块cpu上
taskset: 让进程运行在指定的CPU 1.linux taskset命令详解 SYNOPSIStaskset [options] [mask | list ] [pid | command [arg]...] OPTIONS-p, --pidoperate on an existing PID and not launch a new task-c, --cpu-listspecifiy a numerical list of processors instead of a bitmask.The list may contain multiple items, separated by comma, andranges. For example, 0,5,7,9-11.-h, --helpdisplay usage information and exit-V, --versionoutput version information and exit 2.对运行中的进程,文档上说可以用下面的命令,把CPU#1 #2 #3分配给PID为2345的进程: # taskset -cp 1,2,3 2345 3.但我尝试没奏效,于是我关掉了MySQL,并用taskset将它启动: # taskset -c 1,2,3 /etc/init.d/mysql start
阿里云安装教程如何对服务器进行简单压力测试-阿里云帮助中心
Stress(CPU压力测试)
-
执行
lscpu | egrep -i cpu | awk '{print $2}'
命令,查看服务器逻辑核数。 -
执行
stress -c $core -t 1000000 &
命令,进行CPU压力测试 。执行
ps -ef|grep stress
命令,查看stress进程是否正在运行。-c 指定CPU核数,实际的CPU逻辑核数。 128 -t 指定运行时间,单位为秒,可按照需求自定义。 1000000(达到测试7×24小时的要求)
性能测试必备知识(4)- 使用 stress 和 sysstat 分析平均负载过高的场景-腾讯云开发者社区-腾讯云
--version、-v | 版本号 |
---|---|
-q | 退出 |
-n | 显示已完成指令的情况 |
-t N、--timeout N | 运行 N 秒后停止 |
--backoff N | 等待 N 微秒后开始运行 |
-c N、--cpu N | 产生 N 个进程 每个进程反复的计算随机数的平方根 模拟 CPU 计算密集型场景 |
-i N、--io N | 产生 N 个进程 每个进程反复调用 sync() 模拟 I/O 密集型场景 |
-m N、--vm N | 产生 N 个进程 每个进程不断调用内存分配 malloc() 和内存释放 free() 函数 |
--vm-bytes B | 指定 malloc() 时内存的字节数,默认256MB |
--vm-hang N | 指定执行 free() 前等待的秒数 |
-d N、 --hdd N | 产生 N 个进程 每个进程执行 write() 和 unlink() 的进程 |
--hdd-bytes B | 每个 hdd worker 写入 B 字节(默认为1GB) |
fio(磁盘压力测试)
详细!!【测试】 FIO命令详解(一):ceph/磁盘IO测试工具 fio (并简要介绍iostat工具)Fio 输出内容的解释_51CTO博客_fio磁盘压力测试
请先了解每一项磁盘测试的具体命令,然后编写一个脚本循环测试,且实现并行测试每一块非系统盘。
IO 类型(IO pattern):指读写方式,顺序、随机两种。
块大小:上层应用读写数据时的最小逻辑存储单元,如:4KB,1MB。磁盘性能测试过程,衡量 IOPS 时,通常采用小块数据随机读写(如:4K >= 块大小 <=32K 块大小),而衡量吞吐量时,通常采用大块数据顺序读写(如:64K >= 块大小 <= 1M)。
IO 大小:每次 IO 请求需要读写的数据大小。
IO 引擎:作业读写 IO 的方式,即以特定方式来访问存储文件。每种IO引擎有其自身的使用场景。
线程数:默认情况下是使用 fork 创建进程的方式来运行作业,但开销较大,因此通常情况,会指定 -thread 参数以线程方式测试。
队列深度:队列深度指系统中等待处理的 IO 请求的数目。队列深度的值决定了应用程序可以让多个 IO 操作排队供磁盘处理。
#Fio常用输入参数 filename=/dev/emcpowerb 支持文件系统,磁盘或者裸设备,filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。 filename=/dev/sda direct=1 测试过程绕过机器自带的buffer,使测试结果更真实 rw=randread 测试随机读的I/O rw=randwrite 测试随机写的I/O rw=randrw 测试随机混合写和读的I/O rw=read 测试顺序读的I/O rw=write 测试顺序写的I/O rw=rw 测试顺序混合写和读的I/O bs=4k 单次io的块文件大小为4k bsrange=512-2048 同上,提定数据块的大小范围 size=5g 本次的测试文件大小为5g,以每次4k的io进行测试 numjobs=30 本次的测试线程为30 runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止 ioengine=psync io引擎使用pync方式(同步I),如果要使用libaio引擎, 需要yum install libaio-devel包 rwmixwrite=30 在混合读写的模式下,写占30% group_reporting 关于显示结果的,汇总每个进程的信息 lockmem=1g 只使用1g内存进行测试 zero_buffers 用0初始化系统buffer。 nrfiles=8 每个进程生成文件的数量。 磁盘读写常用测试点:1. Read=100% Ramdon=100% rw=randread (100%随机读)2. Read=100% Sequence=100% rw=read (100%顺序读)3. Write=100% Sequence=100% rw=write (100%顺序写)4. Write=100% Ramdon=100% rw=randwrite (100%随机写)5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30 (70%顺序读,30%顺序写)6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30 (70%随机读,30%随机写) ----------------------------------- 服务器io测试工具-fio https://blog.51cto.com/u_12993908/5275922 iodepth和numjobs: 使用numjobs参数测试出的效果要好,更能够增加集群客户端测试压力,使测试结果更准确。随着munjobs的增大,带宽也不断增大。而iodepth参数设置后,集群带宽值几乎不变,反而延时随着iodepth增加而成倍增加。混合设置后也同样如此,随着iodepth的值增加,带宽值没有增加,反而延时成倍增加。所有延时增加的倍数刚好是iodepth增加的倍数。
fio测试结果
fio -filename=/dev/rbd0 -name=mytest mytest: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=psync, iodepth=1 fio-3.1 Starting 1 process Jobs: 1 (f=1): [f(1)][100.0%][r=273MiB/s,w=0KiB/s][r=69.9k,w=0 IOPS][eta 00m:00s] mytest: (groupid=0, jobs=1): err= 0: pid=3367325: Thu Apr 4 14:30:31 2019 read: IOPS=26.5k, BW=103MiB/s (108MB/s)(10.0GiB/99102msec) clat (nsec): min=1042, max=528258k, avg=37415.13, stdev=2331215.59 lat (nsec): min=1087, max=528258k, avg=37464.12, stdev=2331215.58 clat percentiles (nsec): | 1.00th=[ 1160], 5.00th=[ 1192], 10.00th=[ 1208], | 20.00th=[ 1240], 30.00th=[ 1256], 40.00th=[ 1304], | 50.00th=[ 1368], 60.00th=[ 1448], 70.00th=[ 1496], | 80.00th=[ 1592], 90.00th=[ 1768], 95.00th=[ 1992], | 99.00th=[ 2576], 99.50th=[ 3504], 99.90th=[ 35584], | 99.95th=[ 5406720], 99.99th=[119013376] bw ( KiB/s): min= 8192, max=1136744, per=99.01%, avg=104755.10, stdev=208227.89, samples=198 iops : min= 2048, max=284186, avg=26188.71, stdev=52057.00, samples=198 lat (usec) : 2=95.25%, 4=4.31%, 10=0.22%, 20=0.09%, 50=0.03% lat (usec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01% lat (msec) : 2=0.03%, 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01% lat (msec) : 100=0.01%, 250=0.01%, 500=0.01%, 750=0.01% cpu : usr=1.94%, sys=4.69%, ctx=2328, majf=0, minf=62 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0% submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0% issued rwt: total=2621440,0,0, short=0,0,0, dropped=0,0,0 latency : target=0, window=0, percentile=100.00%, depth=1 Run status group 0 (all jobs): READ: bw=103MiB/s (108MB/s), 103MiB/s-103MiB/s (108MB/s-108MB/s), io=10.0GiB (10.7GB), run=99102-99102msec Disk stats (read/write): rbd0: ios=3741/0, merge=7487/0, ticks=428805/0, in_queue=428827, util=99.12%
clat percentiles:clat的分布统计数据,表示 clat “置信级”。
90.00th=[ 1768]:表明 90% 的 IO 的平均 clat 是1768 nsec。
NOTES:其计算方式,所有 IO 结束后,按照每个 IO clat 的值从小到大依次排序,并分别计算出前1%的平均clat,如:1.00th=[ 1160],百分比越大,clat的值也会随着增大。
fio参数怎么调
探索fio参数如何选择以及全方位对比HDD和SSD性能_iodepth如何理解_享学IT的博客-CSDN博客
磁盘读写常见的指标
(1)IOPS(Input/Output Operations per Second)
-
指每秒能处理的I/O个数,表示块存储处理读写(输出/输入)的能力,单位为次,有顺序IOPS和随机IOPS
-
比如100次/秒,那iops就是100次/秒,例如数据库类应用等典型场景重点提升这个指标,下面是阿里云盘性能
(2)吞吐量/带宽(Throughput)
-
是指单位时间内可以成功传输的数据数量,单位为MB/s
-
比如 一个硬盘的读写 IO 是 1MB,硬盘的 IOPS 是 100,那么硬盘总的吞吐率就是 100MB/s
-
带宽 = IOPS * IO大小
-
(3)访问时延(Latency)
-
是指IO请求从发出到收到响应的间隔时间,常以毫秒ms或者微妙us为单位
-
硬盘响应时间 = 硬盘访问时间 + IO排队延迟,过高的时延会导致应用性能下降或报错。
-
普通的HDD磁盘,随机IO读写延迟是10毫秒,IO带宽大约100MB/秒,随机IOPS一般在100左右
(4)使用率 Utilization
-
指磁盘处理 I/O 的时间百分比,过高的使用率 ,常规字段 Utilization-缩写%util 表示
-
如超过 80%意味着磁盘 I/O 存在性能瓶颈
(5)I/O 等待队列长度 Queue Length
-
表示等待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,就会增大队列长度
(6)饱和度
-
使用率只考虑有没有IO,不考虑IO的大小;当使用率是100%时,磁盘也可能接收新的IO请求
-磁盘IO常见指标和分析命令工具介绍
(1)iotop命令
-
查看当前系统各个进程使用磁盘IO的情况
-
安装:yum -y install iotop
-
iotop -o -d 3 每3秒刷新下各个进程磁盘IO情况
参数 | 说明 |
---|---|
-o | 只显示正在读写磁盘的程序 |
-d | 跟一个数值,表示iotop命令刷新的时间 |
字段 | 说明 |
---|---|
Total DISK READ | 从磁盘中读取的总速率 |
Total DISK WRITE | 往磁盘里写入的总速率 |
Actual DISK READ | 从磁盘中读取的实际速率 |
Actual DISK WRITE | 往磁盘里写入的实际速率 |
TID | 线程ID,按p可以转换成进程ID |
PRIO | 优先级 |
USER | 线程所有者 |
DISK READ | 进程从磁盘中读取的速率 |
DISK WRITE | 进程往磁盘里写入的速率 |
SWAPIN | 进程swap交换百分比 |
IO | IO等待所占用的百分比 |
COMMAND | 具体的进程命令 |
-
iostats是系统级别的IO监控
-
iotop是进程级别的IO监控
(2)案例测试:模拟IO密集型应用,系统是4核
-
终端一 模拟2个磁盘IO进程, 持续600s
stress --hdd 2 --hdd-bytes 6G --timeout 600s
-
终端二 全局
iostat -d -x 1
-
终端三 全局
top
-
终端四 局部
iotop
-
测试结果