ディスクIOとパフォーマンス指標

コンセプト、ディスクI / Oの

単語の意味からコンセプトI / Oは、入力と出力のことを理解すべきです。上から下へ、オペレーティング・システムは、さまざまなレベルの間に存在するI / Oです。例えば、CPUが有するI / O、メモリが有するI / O、広義でのI / Oである底部ディスク、上のVMM I / OがあるI / Oがあります。一般的に、I / Oの上部のI / O、つまり、上部I / Oが疎である、低いI / Oが密であるディスクの数を発生し得ます。

ディスクI / O、ディスク入力名が示唆が出力されます。入力がディスクに書き込まれることを意味し、出力データがディスクから読み出されることをいいます。図1に示すように、ディスクATA、SATA、FC、SCSI、SAS、最も一般的なタイプ。ディスクのこれらのタイプの、一般的にSASおよびFCディスクを使用するサーバ、一部のハイエンドSSDディスクストレージ使用。各ディスクの性能は同じではありません。

図1.物理ディスクは共通のアーキテクチャとディスクタイプです

第二に、性能評価

:SAN(ストレージエリアネットワーク、ストレージエリアネットワーク)とNASストレージは、一般に、2つの評価指標は、(ネットワーク接続ストレージ、ネットワーク接続ストレージ添付)IOPSと帯域幅(スループット)、二つの相互に別個であるが関連するメトリックを。主要な指標は、ストレージシステムのパフォーマンスが反映IOPS。次に、これら2つのパラメータの意味について教えてください。

IOPS(毎秒の入力/出力)、すなわちO毎秒(又は書込みサイクル)、メインディスクの性能尺度のひとつ。I IOPSシステムは典型的には、データ操作要求を読み書き/ O要求の数、I / O要求を処理できる時間の単位を指します。そのようなOLTP(オンライントランザクション処理)として頻繁にランダム読み取りおよび書き込みアプリケーションは、IOPSは重点施策です。別の重要な指標は、スループット(スループット)が成功したデータ伝送の数とすることができる単位時間を意味します。そのようなVOD(ビデオオンデマンド)などの注文の多くを読み書きするアプリケーションの場合、スループットのインデックスを懸念しています。

要するに:

 

読み書きするために何回のディスクI / O、秒以内であるディスクIOPS、。

ディスクのスループット、すなわちあたりのディスクI / Oの流れ、すなわち、プラスデータのディスク書き込みサイズを読み出します。

関係IOPSとスループット

二スループット= IOPS *平均I / OサイズあたりのI / O。それは式から分かるようにI / Oサイズ、より高いIOPS、スループットの秒当たりのI / Oが高くなります。したがって、我々は価値のIOPSとできるだけ高いスループットと思います。ディスクが懸念されるため、実際には、これら2つのパラメータは、その最大値を有し、2つのパラメータが一定の関係があります。

IOPSは、以下の指標に分けることができます。

  1. Toatal IOPS、ランダムとシーケンシャルリードと負荷の下で混合I / OのディスクIOPSを書くが、これは実際のI / O、ほとんどのアプリケーションは、この指標を見ると、ほとんど一致しています。
  2. ランダムリードIOPS、100%ランダムリードIOPS負荷の下で。
  3. ランダム書き込みIOPS、負荷条件の下で、100%のランダム書き込みIOPS。
  4. シーケンシャルリードIOPS、読み取りIOPS負荷の順で100%。
  5. シーケンシャル書き込みIOPS、負荷の下で100%シーケンシャル書き込みIOPS。

以下の図は典型的なNFS試験結果を示します。

IOPSベンチマーク・テスト・ツールである、等のIometer、IoZone、FIO、異なる状況下で統合されたディスクIOPSを試験するために使用されてもよいです。これにより、適切な記憶媒体及びソフトウェアを選択するにはアプリケーションでは、あなたは、最初の負荷特性データを決定した後、測定された合理的な指標のIOPSと比較分析を選択する必要があります。

 

IOPS式

IO操作用の完全なディスクに対して行われる:コントローラがディスクIO操作にコマンドを送信する場合離れランディングゾーン(ランディングゾーンから読み書きヘッド(ヘッド)を有するディスク・ドライブ・アーム(アクチュエータアーム)が、配置されている場合直ちにトラック(トラック上記ない内側領域データ)、)、このプロセスを参照する時に消費アドレス期間に対応し、()を探しているアドレッシングと呼ばれて配置されるデータブロックの初期動作に移動されていない(シーク時間);ヘッドディスクプラッタ(プラッタ)がセクタ(セクタに回転されるまでは、対応するトラック)は、データを読み出すすぐにこの時間を見つけることができないが、開始読み出した後の正に読み書きヘッドの上方に位置する元のデータ・ブロックを落下しますこのプロセスでは、ディスク回転のために待って回転待ち時間(回転遅れ)と呼ばれるセクタで費やされた時間に動作可能であり、次のディスクの回転に、ヘッドは、対応するデータブロックを書き込み/読み取りを継続するまでIO操作に必要な全てのデータが終了し、データ転送処理(データ転送)と呼ばれているが、時間(転送時間)に対応する送信時間と呼びます。これらの3つの手順を完了した後1つのIO操作が完了しています。

私たちは、ハードドライブメーカーのパンフレットを見てみると、私たちは、多くの場合、三つのパラメータ、すなわち、平均を見る時、ディスクの回転速度と最大伝送速度を求め、これらの3つのパラメータは3段階の計算を私たちに提供することができます時間。

最初のアドレス時間、データは、それがアドレス期間最も外側ディスクに(、ディスクに(最短時間をシーク)してもよい読み取りまたはディスク・トラックのいずれかで書かれた、両方の最も内側できるされてもよい考慮しアップ)ので、我々は唯一の平均が平均的に示されているディスクのパラメータは、ほとんどの現在の10krmpハード5msでの使用にここで、シーク時間である時間を、求める計算で考慮しました。

第2回転遅延、及びアドレス、ヘッドがトラックに配置されたとき、ちょうどこの時点でセクタ上に読み取ることができるように追加の遅延量がデータを読み書き即座になることはできませんが、最悪状況が実際にデータを読み込むための頭部の後に完全な円を回転させるディスクであるので、私たちはここに考慮しなければならない10krpmディスクがあるため、平均回転待ち時間です(60代/ 10K)*(1/2)= 2ミリ秒。

第3の転送時間は、ディスクパラメータは、私たちの最大伝送速度を提供し、当然のことながら、このレートを達成することは非常に困難ですが、この速度は、純粋なスピードディスクがディスクを読み書きで、その場合、単一のIO与えられましたサイズ、我々はデータ転送に費やさどのくらいのディスクの時間を知る必要があり、この時間は、IOのチャンクサイズ/最大転送速度です。

今、私たちは、単一のIO時間を計算するために、このような式に来ることができます。

  IOタイム=シークタイムは、+ 60秒/回転数/ 2 + IOチャンクサイズ/転送レート

だから我々はIOPSを計算することができます。

  IOPS = 1 / IO時間= 1 /(時間+ 60秒/回転数/ 2 + IOチャンクサイズ/転送レートを求めます)

与えられたIO異なるサイズのために我々は、データの次の一連を描くことができます

  4K(1 / 7.1秒= 140のIOPS)
  5msの+(60秒/ 15000RPM / 2)+ 4K / 40メガバイト= 5 + 2 + 0.1 = 7.1
  8K(1 / 7.2秒= 139のIOPS)
  5msの+(60秒/ 15000RPM / 2) + 8K / 40メガバイト= 5 + 2 + 0.2 = 7.2
  16K(1 / 7.4秒= 135のIOPS)
  5msの+(60秒/ 15000RPM / 2)+ 16K / 40メガバイト= 5 + 2 + 0.4 = 7.4
  32K(1 / 7.8秒= 128のIOPS)
  5msの+(60秒/ 15000RPM / 2)+ 32K / 40メガバイト= 5 + 2 + 0.8 = 7.8
  64K(1 / 8.6秒= 116のIOPS)
  5msの+(60秒/ 15000RPM / 2)+ 64K / 40メガバイト= 5 + 2 + 1.6 = 8.6

単一小さいIO、IO単一時間が少ない、より大きな対応するIOPSをとる上記のデータから分かるように。

より理想的な仮定で、上記のすべての私たちのデータが出ていた、ここでは理想的な状況は、時間と平均回転待ち時間を求めるディスクの平均サイズを取ることです、この仮定はで私たちの実際の状況に沿って、実際にはもっとありますこれら2回存在がIOPSのサイズを制限するとランダムリード、ランダムライト、各時間および回転待ち時間IOアドレス動作は、無視することはできません。保存されたファイルの配布は、読み取りヘッドIO操作が完了した後、連続しているので、今、私たちは、そのような連続したディスク上のファイルに分散ストレージをたくさん読んなどの操作を、比較的極端なシーケンシャルリードを考えると書き込み、アドレッシング新しいを必要としない、回転、我々はIOPSの値が大きい場合は、以下のためにすることができ、その場合には遅延を必要としません。

  4K(1 / 0.1秒= 10000のIOPS)
  は0ms +は0ms + 4K / 40メガバイト= 0.1
  8K(1 / 0.2秒= 5000 IOPS)
  は0ms +は0ms + 8K / 40メガバイト= 0.2
  16K(1 / 0.4秒= 2500 IOPS)
  は0ms + 0ms + 16K / 40メガバイト= 0.4
  32K(1 / 0.8秒= 1250 IOPS)
  は0ms +は0ms + 32K / 40メガバイト= 0.8
  64K(1 / 1.6秒= 625のIOPS)
  は0ms +は0ms + 64K / 40メガバイト= 1.6

これは、データの最初のセットに比べて非常に大きなギャップであるので、我々はエネルギー省のIOPS IOシステムを測定するために使用するときに我々は状況が読者を示すことであるIOPS、にあるもの、それは明確にしなければなりませんシングルIOモードの大きさは、当然のことながら、実際には、特にOLTPシステムでは、小さなランダム書き込みIOは最も説得力があります。

さらに、同一のディスク(またはLUN)のために、バリアの各I / O読み取りおよび書き込みデータサイズと、IOPSの値が固定されていません。例えば、各I / O書き込みまたはデータの大きなブロックは、この時間が比較的低いIOPSとなり連続して読み取り、まれに車線変更の場合には、各読み取りまたは小さなデータブロックを書き込み、 IOPSは比較的高くなります。それはまた、Iは測定IOPS / Oブロックサイズが異なっている異なる値を使用して、IOPS I / Oブロックのサイズに依存する、です。I / Oブロックサイズをテストする場合、特定のIOPSのために、あなたはそれを理解することができます。そして、IOPSは制限、表1のディスクIOPS制限の様々なています。

表1.一般的なタイプとディスクIOPS
 

 

三、I / Oの読み書きタイプ

大体上讲,I/O 的类型可以分为:读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。在这几种类型中,我们主要讨论一下:大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。

大 / 小块 I/O

这个数值指的是控制器指令中给出的连续读出扇区数目的多少。如果数目较多,如 64,128 等,我们可以认为是大块 I/O;反之,如果很小,比如 4,8,我们就会认为是小块 I/O,实际上,在大块和小块 I/O 之间,没有明确的界限。

连续 / 随机 I/O

连续 I/O 指的是本次 I/O 给出的初始扇区地址和上一次 I/O 的结束扇区地址是完全连续或者相隔不多的。反之,如果相差很大,则算作一次随机 I/O

连续 I/O 比随机 I/O 效率高的原因是:在做连续 I/O 的时候,磁头几乎不用换道,或者换道的时间很短;而对于随机 I/O,如果这个 I/O 很多的话,会导致磁头不停地换道,造成效率的极大降低。

顺序 / 并发 I/O

从概念上讲,并发 I/O 就是指向一块磁盘发出一条 I/O 指令后,不必等待它回应,接着向另外一块磁盘发 I/O 指令。对于具有条带性的 RAID(LUN),对其进行的 I/O 操作是并发的,例如:raid 0+1(1+0),raid5 等。反之则为顺序 I/O。

 

四、磁盘 I/O 性能的监控

监控磁盘的 I/O 性能,我们可以使用 AIX 的系统命令,例如:sar -d, iostat, topas, nmon 等。下面,我将以 nmon 和 topas 为例,讲述在系统中如何观察磁盘 I/O 的性能。

topas

登录 AIX 操作系统,输入 topas,然后按 D,会出现如下界面:

 

在上图中,TPS 即为磁盘的 IOPS,KBPS 即为磁盘每秒的吞吐量。由于服务器处于空闲的状态,我们可以看到 IOPS,KBPS 的数据都非常低。

我们使用 dd if 命令向磁盘 hdisk2 发读 I/O,block 大小为 1MB:

 

利用 topas 进行监控:

 

此时,hdisk2 的吞吐量为 163.9M,IOPS 为 655。

我们再启动一个 dd if,使 hdisk 的 busy 数值达到 100%:


从上图可以看出,在磁盘 busy 达到 100% 的时候,其吞吐量为 304.1M,IOPS 为 1200。

hdisk2 是本地集成的 SAS 盘,我们可以查出本地集成 SAS 通道的带宽为 3Gb:

对于 3Gb 的 SAS 通道,304.1M 的磁盘吞吐量已经接近其 I/O 带宽的峰值了。

需要指出的是,使用 dd if 测量磁盘的带宽是可行的,但是由此来确定业务 I/O 的 IOPS 和吞吐量是不科学的。因为,dd if 所发起的读写仅为顺序 I/O 读写,在 OLTP 的业务中,这种读写是不常见的,而是随机小 I/O 比较多,因此,测量业务的磁盘 I/O 性能,需要在运行业务的时候进行监控。

nmon

在系统中输入 nmon,按 d,可以得到如下界面 :

Figure xxx. Requires a heading

可以得到此时磁盘 hdisk2 吞吐量为 318M。

使用 nmon 收集一个时间段的数据,然后使用 nmon analyzer 进行分析,可以得出更为直接的图表:

将收集好的 nmon 文件使用 nmon analyzer 进行分析,得出如下报表:

图 2.nmon 图表显示磁盘性能

五、磁盘 I/O 性能调优

确认磁盘 I/O 存在性能问题

对于随机负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

1. 平均读时间大于 15ms

2. 在具有写 cache 的条件下,平均写时间大于 2.5ms

对于顺序负载,当遇到余下情况时,我们那通常认为存在 I/O 性能问题:

1. 在一个磁盘上有两个连续的 I/O 流

2. 吞吐量不足(即远远小于磁盘 I/O 带宽)

对于一块磁盘来讲,随着 IOPS 数量的增加,I/O service 也会增加,并且会有一个饱和点,即 IOPS 达到某个点以后,IOPS 再增加将会引起 I/O service time 的显著增加。

图 3. 磁盘 IOPS 与 IO service time 关系图

从经验上讲,我们在测试工作中,我们主要关注 IOPS 和吞吐量以及磁盘的 busy% 这三个数值。如果 IOPS 和吞吐量均很低,磁盘的 busy% 也很低,我们会认为磁盘压力过小,造成吞吐量和 IOPS 过低;只有在 IOPS 和吞吐量均很低,磁盘的 busy% 很高(接近 100%)的时候,我们才会从磁盘 I/O 方面分析 I/O 性能

磁盘性能指标

五个常见指标: 使用率、饱和度、IOPS、吞吐量以及响应时间。这五个指标,是衡量磁盘性能的基本指标。
• 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
• 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
• IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
• 吞吐量,是指每秒的 I/O 请求大小。
• 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。

这些指标,我们在看的时候, 不要孤立地去比较某一指标,而要结合读写比例、I/O 类型(随机还是连续)以及 I/O 的大小,综合来分析。
举个例子,在数据库、大量小文件等这类随机读写比较多的场景中,IOPS 更能反映系统的整体性能;而在多媒体等顺序读写较多的场景中,吞吐量更能反映系统的整体性能。

观测磁盘的I/O性能指标: iostat
iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些数据实际上来自 /proc/diskstats。
[root@host1 ~]# iostat -d -x 1 #-d -x 1 展示所有的磁盘I/O指标, 每1秒输出一组数据
磁盘性能指标
这些指标中,重点注意:
• %util ,就是我们前面提到的磁盘 I/O 使用率;
• r/s+ w/s ,就是 IOPS;
• rkB/s+wkB/s ,就是吞吐量;
• r_await+w_await ,就是响应时间。

关于更多的显示选项, 可以在iostat的man手册中查询

观测进程的I/O性能指标: pidstat
磁盘性能指标
输出中每项的含义:
• 每秒读取的数据大小(kB_rd/s),单位是 KB;
• 每秒发出的写请求数据大小(kB_wr/s),单位是 KB;
• 每秒取消的写请求数据大小(kB_ccwr/s),单位是 KB。

根据 I/O 大小对进程排序: iotop
[root@host1 ~]# iotop
磁盘性能指标
前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。
剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。

 

参考资料:https://blog.51cto.com/14113311/2376144

https://www.cnblogs.com/sddai/p/8647795.html

おすすめ

転載: www.cnblogs.com/wx170119/p/11427837.html