[转帖]系统性能分析与iostat的应用

系统,性能,分析,iostat,应用 · 浏览次数 : 0

小编点评

**分析系统性能时,top命令是永远的第一步** 分析系统性能时,top命令可以提供以下信息: * %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st * 其中,%wa的值表示磁盘 I/O 占用率较高,可能存在磁盘瓶颈问题。 **磁盘分析工具:iostatiostat -x -d 10 3#** 使用 iostatiostat 工具可以监控磁盘 I/O 性能指标,例如: * 每秒 I/O数 (IOPS 或 TPS) * 吞吐量 (throughput) * 平均 I/O 数据尺寸 * 磁盘活动时间百分比 * 服务时间 (service time) * I/O 等待队列长度 (queue length) * 等待时间 (wait time) **优化磁盘 I/O 性能的方法:** * **调整数据布局:**尽量将 I/O 请求较合理的分配到所有物理磁盘中。 * **使用 RAID 磁盘阵列:**尽量使应用程序 I/O 等于条带尺寸或为条带尺寸的倍数。 * **选择合适的 RAID 方式:**如 RAID10 或 RAID5。 * **增加磁盘驱动程序的队列深度:**但不要超过磁盘的处理能力。 * **应用缓存技术:**减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或应用程序级别。 * **减少数据库 I/O 延迟:**使用缓存技术或其他技术将频繁访问的文件或数据置于内存中。

正文

https://blog.yelvlab.cn/archives/630/

 

在分析系统性能时候,top命令是永远的第一步,可以看整体负载,还可以看这一行

 
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 

如果%wa的值很高的话,那很有可能就是磁盘IO成为了瓶颈,那么这时候就要开始分析IO了。

 

磁盘分析工具:iostat

iostat -x -d 10 3
# 使用iostat工具,只显示设备信息,并显示更多的设备列,间隔10s,显示3次
Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz  aqu-sz  %util
  • 主要字段含义如下:
    r/s 每秒读操作数
    w/s 每秒写操作数
    rsec/s 每秒从设备读取的扇区数量
    wsec/s 每秒往设备写入的山区数量
    avgrq-sz I/O 请求的平均扇区数
    avgqu-sz I/O 请求的平均队列长度
    await I/O 请求的平均等待时间(ms)
    svctm I/O 请求的平均服务时间(ms)
    %util 处理I/O请求所占用的时间百分比,即设备利用率
 

磁盘IO性能监控指标与调优方法

在介绍磁盘IO监控前,我们需要了解磁盘IO的性能指标,以及每个指标所揭示的磁盘某方面的性能。

指标1:每秒I/O数(IOPS或tps)

 

对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘 I/O, 磁盘的 IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。

 

指标2:吞吐量(Throughput)

 

指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为 Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。

 

指标3:平均I/O数据尺寸

 

指标 3:平均 I/O 数据尺寸平均 I/O 数据尺寸为吞吐量除以 I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均 I/O 数据尺寸小于 32K,可认为磁盘使用模式以随机存取为主;如果平均每次 I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。

 

指标4:磁盘活动时间百分比(Utilization)

 

磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就 是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过 70%,应用进程将花费较长的时间等待 I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。

 

指标5:服务时间(Service Time)

 

指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过 20ms,一般可考虑会对上层应用产生影响。

 

指标6:I/O 等待队列长度(Queue Length)

 

指待处理的 I/O 请求的数目,如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的 I/O 等待队列长度。

 

指标7:等待时间(Wait Time)

 

指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果 I/O 请求持续超出磁盘处理能力,意味着来不及处理的 I/O 请求不得不在队列中等待较长时间。

 

通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合 CPU、内存、交换分区的使用状况,不难发现磁盘 I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘 I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考:

  1. 调整数据布局,尽量将 I/O 请求较合理的分配到所有物理磁盘中。
  2. 对于 RAID 磁盘阵列,尽量使应用程序 I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适的 RAID 方式,如 RAID10,RAID5。
  3. 增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分 I/O 请求会因为丢失而重新发出,这将降低性能。
  4. 应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。
  5. 由于多数数据库中已包括经优化后的缓存技术,数据库 I/O 宜直接存取原始磁盘分区(raw partition)或者利用绕过文件系统缓存的 DIO 技术(direct IO)
  6. 利用内存读写带宽远比直接磁盘 I/O 操作性能优越的特点,将频繁访问的文件或数据置于内存中。

与[转帖]系统性能分析与iostat的应用相似的内容:

[转帖]系统性能分析与iostat的应用

https://blog.yelvlab.cn/archives/630/ 在分析系统性能时候,top命令是永远的第一步,可以看整体负载,还可以看这一行 %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

[转帖]磁盘的排队论的理论和实践

https://zhuanlan.zhihu.com/p/138887556 队列广泛应用在性能分析领域, 通过观察队列可以知道当时系统的繁忙程度和请求的延时, 甚至可以用排队论去做容量规划等. 对存储有一定了解的同学都或多或少听说过, 当iostat的util大于70%以后, 响应时间会如下图所示

[转帖]018 磁盘 IO 性能监控 / 压测工具 (sar、iotop、fio、iostat)

https://my.oschina.net/u/3113381/blog/5465063 1 sar 命令查看当前磁盘 IO 读写 sar(System Activity Reporter 系统活动情况报告)是 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:

[转帖]linux 系统级性能分析工具 perf 的介绍与使用

目录 1. 背景知识 1.1 tracepoints 1.2 硬件特性之cache 2. 主要关注点 3. perf的使用 3.0 perf引入的overhead 3.1 perf list 3.2 perf top 3.3 perf stat 3.4 perf bench 3.4.1 perf b

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://cloud.tencent.com/developer/article/1420726 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有

[转帖]性能分析之TCP全连接队列占满问题分析及优化过程(转载)

https://www.cnblogs.com/wx170119/p/12068005.html 前言 在对一个挡板系统进行测试时,遇到一个由于TCP全连接队列被占满而影响系统性能的问题,这里记录下如何进行分析及解决的。 理解下TCP建立连接过程与队列 从图中明显可以看出建立 TCP 连接的时候,有

[转帖]三星研发出首个基于存算一体技术的GPU大型计算系统 (收录于存算一体芯片赛道投资融资分析)

https://zhuanlan.zhihu.com/p/591850021 陈巍谈芯:产业巨头已经打通存算一体技术的落地通道,存算一体技术加快应用部署。与未使用HBM-PIM(HBM-PIM GPU v.s. HBM GPU)相比,仅用20nm工艺就使7nm集群计算性能提升了2.5倍。这个思路也是

[转帖] Linux命令拾遗-剖析工具

https://www.cnblogs.com/codelogs/p/16060472.html 简介# 这是Linux命令拾遗系列的第五篇,本篇主要介绍Linux中常用的线程与内存剖析工具,以及更高级的perf性能分析工具等。 本系列文章索引Linux命令拾遗-入门篇Linux命令拾遗-文本处理篇

[转帖]神秘的backlog参数与TCP连接队列

https://www.cnblogs.com/codelogs/p/16060820.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 这要从一次压测项目说起,那是我们公司的系统与另几家同行公司的系统做性能比拼,性能数据会直接影响项目中标,因此压力非