wMB/s が低いほど、iowait は高くなります。

wMB/s が低いほど、iowait は高くなります。

MySQLテーブルをインデックス化しています。そのコンピュータに高い負荷がかかります。

これは、iowaitが高いために発生するようです。ただし、これはwMB / sが2.87にすぎないことも示しています。

一般的なSATA HDDも2.87MB / s以上を処理できませんか?それでは、なぜプロセスがそんなに遅いのでしょうか?

iostat -xレポート:

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.74    0.00    3.48   47.51    0.00   47.26

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00   300.00    0.00  383.00     0.00     2.87    15.35   142.00  374.64   2.61  99.90
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00 2507.00     0.00     9.79     8.00   263.88  110.06   0.40  99.90
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00    2.00     0.00     0.01     8.00     0.41  196.00 202.50  40.50
dm-3              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

答え1

回転しているディスクでできることの中で最も遅い作業である小さなランダム書き込みを行っているので、スループットが(私の)期待を満たすと言いたいと思います。

サイズavgrq-szは15.35です。これは、平均要求がSATAディスクセクタサイズの15.35倍(最も一般的には512バイトですが、非常に新しいSATAディスクの場合は4096バイトである可能性があります)であることを意味するので、書き込みが必要です。 15.35 x 512バイト= 7,859.2バイトを入力してください。 (平均的に)要求ごとに報告されiostatた毎秒383の書き込みを掛けると3,010,073.6バイトになります(平均を掛けると0.6バイトが表示されます)。そして3,010,073.6バイト/秒は2.87MB/sです。

1秒あたりに実行できる書き込み数は、ディスクがヘッドを移動するのに必要な量によって異なりますが、おおよそ言えば、デバイスが実行できる最大1秒あたりの書き込み数に近づいています。

毎秒小さい書き込みと大きな書き込みを組み合わせると、回転するディスクでの書き込み速度が速くなりますavgrq-sz

これが重要なパフォーマンスの問題である場合は、通常、このタイプのワークロードでより良いパフォーマンスを提供するさまざまなSSDオプションを検討することをお勧めします。

答え2

iostat何が起こっているのか実際の画像を取得するには、監視中に何度も実行する必要があります。または、次のツールを使用します。サボテンこれらの統計は一定期間保持されるため、履歴グラフを表示できます。

最も可能性の高い現象は、データベーステーブルのスキャンによってディスクも多くの読み取りを実行しており、iostat公開された実行は、DBMSが読み取る代わりに書き込み中に偶然に完了したことです。ハードドライブでのインタリーブ書き込みと読み取りは、ハードドライブが実行する最も遅い操作である検索を含むため、非常に遅いです。ハードドライブの音を聞くと、ハードドライブの他の部分への書き込みと読み取りをすばやく交互にしながら、狂ったようにガタガタ音を聞くことができます。

このプロセスが予想される2桁のMByte / sレートで実行されるようにするには、プロセスを2つの部分に分割し、テーブルスキャン中にRAMにインデックスを構築してから、インデックス全体を作成する必要があります。 MySQLは高度に最適化されたソフトウェアなのでできるそうすることで私はそうなることを願っています。なぜならそうではないから、そうすることができないからです。つまり、これを実行するのに十分なRAMがない可能性があります。これは、インデックス全体を含むMySQLセクションの物理RAMがマシンに不足しているか、MySQL構成ファイルでシステムRAMセクションを十分に高く指定していないことを意味します。しかし、MySQLチューニングは他のフォーラムのトピックです。

関連情報