GNU/Linux >> Linux の 問題 >  >> Linux

Linux でのディスク I/O パフォーマンス測定のための 10 の iozone の例

Linux パフォーマンス監視の紹介記事で説明したように、IO サブシステムのパフォーマンスを測定することは非常に重要です。

あるサーバー (特定のファイルシステムまたは RAID 構成) で実行されているデータベース (または任意のアプリケーション) が、別のサーバーで実行されている同じデータベースまたはアプリケーションよりも高速に実行されていると誰かが不満を言っている場合は、ディスクレベルは両方のサーバーで同じです。この状況では iozone を使用できます。

データベース (または任意のアプリケーション) を特定の SAN または NAS 環境で実行していて、それを別の SAN または NAS 環境に移行したい場合は、以下を実行する必要があります。両方のシステムでファイルシステムのベンチマークを行い、比較します。この状況では、iozone を使用できます。

iozone の使い方を知っていれば、さまざまなファイルシステムのベンチマーク目的で使用できます。

IOZone をダウンロードしてインストール

Iozone は、オープン ソースのファイル システム ベンチマーク ユーティリティです。

以下の手順に従って、システムに iozone をダウンロードしてインストールしてください。

wget http://www.iozone.org/src/current/iozone3_394.tar

tar xvf iozone3_394.tar 

cd iozone3_394/src/current

make

make linux

IOzoneユーティリティは何を測定しますか?

IOzoneは以下の13種類のテストを行います。データベース サーバーで iozone テストを実行している場合は、データベースのパフォーマンスに直接影響する最初の 6 つのテストに集中できます。

<オール>
  • 読み取り – ファイルシステムに既に存在するファイルの読み取りのパフォーマンスを示します。
  • 書き込み – 新しいファイルをファイル システムに書き込むパフォーマンスを示します。
  • 再読み取り – ファイルを読み取った後、ファイルを再度読み取るパフォーマンスを示します。
  • 再書き込み – 既存のファイルへの書き込みのパフォーマンスを示します。
  • Random Read – ファイルからランダムな情報を読み取ることにより、ファイルの読み取りのパフォーマンスを示します。つまり、これは順次読み取りではありません。
  • Random Write – さまざまなランダムな場所にあるファイルへの書き込みのパフォーマンスを示します。つまり、これは順次書き込みではありません。
  • 逆読み
  • 記録の書き直し
  • ストライド リード
  • フレッド
  • フライト
  • フリーリード
  • フリーライト
  • 10 の IOZone の例

    1.デフォルト値を使用してすべての IOZone テストを実行します

    -a オプションは自動モードを表します。これにより、パフォーマンス テスト用にサイズ 64k から 512MB の一時テスト ファイルが作成されます。このモードでは、読み取りと書き込み (これについては後で詳しく説明します) のテストに 4k から 16M のレコード サイズも使用します。

    -a オプションは、13 種類のテストすべてを実行します。

    $ ./iozone -a

    iozone 出力の最初のセットには、以下に示すように、iozone ユーティリティに関する情報と、このレポートの生成に使用されるすべての izone オプションを表示するヘッダー情報が含まれています。

    Iozone: Performance Test of File I/O
            Version $Revision: 3.394 $
    	Compiled for 32 bit mode.
    	Build: linux 
    
    Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
                 Al Slater, Scott Rhine, Mike Wisner, Ken Goss
    
    Run began: Sat Apr 23 12:25:34 2011
    
    Auto Mode
    Command line used: ./iozone -a
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Processor cache size set to 1024 Kbytes.
    Processor cache line size set to 32 bytes.
    File stride size set to 17 * record size.

    出力の 2 番目のセクションには、さまざまなテストの出力値 (1 秒あたり) が含まれています。

    • 1 列目の KB:テストに使用されたファイル サイズを示します。
    • 2 列目 reclen:テストに使用されたレコード長を示します。
    • 3 列目から最後の列まで:実行されるさまざまなテストとその出力値を 1 秒あたりで示します。
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
      64       4  495678  152376  1824993  2065601 2204215  875739  582008   971435   667351   383106   363588  566583   889465
      64       8  507650  528611  1051124  1563289 2071399 1084570 1332702  1143842  2138827  1066172  1141145 1303442  2004783
      64      16  587283 1526887  2560897  2778775 2366545 1122734 1254016   593214  1776132   463919  1783085 3214531  3057782
      64      32  552203  402223  1121909  1388380 1162129  415722  666360  1163351  1637488  1876728  1685359  673798  2466145
      64      64  551580 1122912  2895401  4911206 2782966 1734491 1825933  1206983  2901728  1207235  1781889 2133506  2780559
     128       4  587259 1525366  1801559  3366950 1600898 1391307 1348096   547193   666360   458907  1486461 1831301  1998737
     128       8  292218 1175381  1966197  3451829 2165599 1601619 1232122  1291619  3273329  1827104  1162858 1663987  1937151
     128      16  650008  510099  4120180  4003449 2508627 1727493 1560181  1307583  2203579  1229980   603804 1911004  2669183
     128      32  703200 1802599  2842966  2974289 2777020 1331977 3279734  1347551  1152291   684197   722704  907518  2466350
     128      64  848280 1294308  2288112  1377038 1345725  659686 1997031  1439349  2903100  1267322  1968355 2560063  1506623
     128     128  902120  551579  1305206  4727881 3046261 1405509 1802090  1085124  3649539  2066688  1423514 2609286  3039423
    ...

    2. izone -b を使用して出力をスプレッドシートに保存します

    iozone の出力をスプレッドシートに保存するには、以下に示すように -b オプションを使用します。 -b はバイナリを表し、テスト出力をバイナリ形式でスプレッドシートに書き込むように iozone に指示します。

    $ ./iozone -a -b output.xls

    注:-b オプションは、以下に示す例のいずれでも使用できます。

    スプレッドシートに保存されたデータから、スプレッドシート ツールのグラフ機能を使用してきれいなグラフを作成できます。以下は、iozone の出力から作成されたサンプル グラフです。

    :IOZoneグラフ

    3. iozone -i を使用して特定のタイプのテストのみを実行します

    特定のタイプのテストのみを実行することに関心がある場合は、-i オプションを使用してください。

    構文:

    iozone -i [test-type]

    test-type は数値です。以下は、利用可能なさまざまなテストの種類とその数値です。

    • 0=書き込み/書き換え
    • 1=既読/再読
    • 2=ランダム読み取り/書き込み
    • 3=逆読み
    • 4=記録を書き直す
    • 5=ストライド リード
    • 6=fwrite/re-fwrite
    • 7=fread/re-fread,
    • 8=ランダムミックス
    • 9=pwrite/re-pwrite
    • 10=既読/再読
    • 11=pwritev/Re-pwritev
    • 12=preadv/re-preadv

    次の例では、書き込みテストのみを実行します (つまり、書き込みと書き換えの両方)。出力からわかるように、他の列は空です。

    $ ./iozone -a -i 0
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
      64       4  353666  680969                                                                                
      64       8  477269  744768                                                                                            
      64      16  429574  326442                                                                                            
      64      32  557029  942148                                                                                            
      64      64  680844  633214                                                                                            
     128       4  187138  524591

    複数のイオゾン テスト タイプを組み合わせる

    コマンド ラインで複数の -i を指定して、複数のテスト タイプを組み合わせることもできます。

    たとえば、次の例では、読み取りと書き込みの両方のテスト タイプをテストします。

    $ ./iozone -a -i 0 -i 1
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
      64       4  372112  407456  1520085   889086                                                                          
      64       8  385574  743960  3364024  2553333                                                                          
      64      16  496011  397459  3748273  1330586                                                                          
      64      32  499600  876631  2459558  4270078

    4. iozone -s を使用してファイル サイズを指定します

    デフォルトでは、iozone はさまざまなテストを実行するために、64k から 512M のサイズの一時ファイルを自動的に作成します。

    iozone 出力の 1 列目 (列ヘッダーは KB) は、ファイル サイズを示します。前の出力からわかるように、64KB のファイルから始まり、512M まで増加し続けます (毎回ファイル サイズを 2 倍にすることによって)。

    すべてのファイル サイズのテストを実行する代わりに、オプション -s を使用してファイル サイズを指定できます。

    次の例では、ファイル サイズ 1MB (つまり 1024KB) に対してのみ書き込みテストを実行します。

    $ ./iozone -a -i 0 -s 1024
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
    1024       4  469710  785882                                                                                            
    1024       8  593621 1055581                                                                                            
    1024      16  745286 1110539                                                                                            
    1024      32  610585 1030184                                                                                            
    1024      64  929225 1590130                                                                                            
    1024     128 1009859 1672930                                                                                            
    1024     256 1042711 2039603                                                                                            
    1024     512  941942 1931895                                                                                            
    1024    1024 1039504  706167

    5. iozone -r を使用してテスト用のレコード サイズを指定します

    テストを実行すると、特定のファイル サイズに対して、4k から 16M までのさまざまなレコード サイズでテストされます。

    Oracle データベースをホストする I/O サブシステムの I/O パフォーマンス テストを行う場合は、iozone のレコード サイズを DB ブロック サイズと同じ値に設定することをお勧めします。データベースは、DB ブロック サイズに基づいて読み取りと書き込みを行います。

    reclen はレコード長を表します。前の例では、2 番目の列 (列ヘッダー「reclen」を含む) は、IOzone のテストに使用する必要があるレコード長を示しています。前の出力例では、ファイル サイズが 1024KB の場合、iozone テストでは 4k から 16M までのさまざまなレコード サイズを使用して書き込みテストを実行しました。

    これらすべてのデフォルトのレコード長サイズを使用する代わりに、テストするレコード サイズを指定することもできます。

    以下の例では、レコード長が 32k の場合にのみ書き込みテストを実行します。出力では、2 列目に 32 のみが表示されます。

    $ ./iozone -a -i 0 -r 32
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
      64      32  566551  820553                                                                                            
     128      32  574098 1000000                                                                                            
     256      32  826044  948043                                                                                            
     512      32  801282 1560624                                                                                            
    1024      32  859116  528901                                                                                            
    2048      32  881206 1423096

    6.ファイルサイズとレコードサイズを組み合わせる

    -s オプションと -r オプションの両方を使用して、正確な一時ファイル サイズと、テストが必要な正確なレコード長を指定することもできます。

    たとえば、次の例では、レコード長が 1M の 2M ファイルを使用して書き込みテストを実行します。

    $ ./iozone -a -i 0 -s 2048 -r 1024
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
    2048    1024 1065570 1871841

    7. iozone -t を使用したスループット テスト

    スループット モードで iozone を実行するには、-t オプションを使用します。このテスト中にアクティブにする必要があるスレッドの数も指定する必要があります。

    次の例では、2 つのスレッドを使用して書き込みの iozone スループット テストを実行します。 -a オプションと -t オプションを組み合わせることはできないことに注意してください。

    $ ./iozone -i 0 -t 2
    
    Children see throughput for  2 initial writers 1=  433194.53 KB/sec
    Parent sees throughput for  2 initial writers 	=    7372.12 KB/sec
    Min throughput per process 			=       0.00 KB/sec 
    Max throughput per process 			=  433194.53 KB/sec
    Avg throughput per process 			=  216597.27 KB/sec
    Min xfer 					=       0.00 KB
    
    Children see throughput for  2 rewriters 	=  459924.70 KB/sec
    Parent sees throughput for  2 rewriters 	=   13049.40 KB/sec
    Min throughput per process 			=  225610.86 KB/sec 
    Max throughput per process 			=  234313.84 KB/sec
    Avg throughput per process 			=  229962.35 KB/sec
    Min xfer 					=     488.00 KB

    すべてのテスト タイプのスループットを実行するには、以下に示すように、上記の例から「-i 0」を削除します。

    $ ./iozone -t 2

    8. iozone -+u を使用して CPU 使用率を含める

    iozone テストの実行中に、-+u オプションを使用して CPU 使用率を収集するように iozone に指示することもできます。

    オプションの前の -+ は少し奇妙に見えるかもしれません。ただし、これを正しく機能させるには、-+u 全体 (-u や +u だけでなく) を指定する必要があります。

    次の例では、すべてのテストを実行し、生成される Excel スプレッドシート出力の一部として CPU 使用率レポートを含めます。

    $ ./iozone -a -+u -b output.xls

    注:これにより、実行される各テストごとに個別の CPU 使用率が表示されます。

    9. iozone -g を使用してファイル サイズを増やします

    これは重要。システムに 512MB を超える RAM がある場合は、iozone がテストに使用する一時ファイルのサイズを増やす必要があります。そうしないと、システム バッファ キャッシュが関与するため、正確な結果が得られない可能性があります。

    正確なディスク パフォーマンスを得るには、一時ファイルのサイズをシステム バッファ キャッシュのサイズの 3 倍にすることをお勧めします。

    次の例では、最大ファイル サイズを 2GB に増やして iozone を実行し、書き込みテストの自動 iozone テストを実行します。

    $ ./iozone -a -g 2G -i 0
                                                    random  random    bkwd   record   stride                                   
      KB  reclen   write rewrite    read    reread    read   write    read  rewrite     read   fwrite frewrite   fread  freread
      64       4  556674 1230677                                                                                            
      64       8  278340  441320                                                                                            
      64      16  608990 1454053                                                                                            
      64      32  504125 1085411                                                                                            
      64      64  571418 1279331                                                                                            
     128       4  526602  961764                                                                                            
     128       8  714730  518219                         
    ...

    10. iozone -F を使用して複数のマウント ポイントをまとめてテストする

    いくつかの iozone オプションを組み合わせることで、以下に示すように、複数のマウント ポイントでディスク I/O テストを実行できます。

    マウント ポイントが 2 つある場合は、2 つの異なる iozone スレッドを開始して、以下に示すように、テスト用にこれらの両方のマウント ポイントに一時ファイルを作成できます。

    $ ./iozone -l 2 -u 2 -r 16k -s 512M -F /u01/tmp1 /u02/tmp2
    • -l は、開始する必要がある iozone プロセスの最小数を示します
    • -u は、開始する必要がある iozone プロセスの最大数を示します
    • -F には複数の値を含める必要があります。つまり、-l と -u の両方で 2 を指定すると、ここに 2 つのファイル名が必要になります。マウント ポイントのみが存在する必要があることに注意してください。 -F オプションで指定されたファイルは、テスト中に izone がこの一時ファイルを作成するため、存在する必要はありません。上記の例では、マウント ポイントは /u01 と /u02 です。ファイル tmp1 と tmp2 は、テスト目的で iozone によって自動的に作成されます。

    Linux パフォーマンスの監視とチューニング シリーズの以前の記事:

    • Linux パフォーマンスの監視とチューニングの概要
    • 15 の実用的な Linux トップ コマンドの例
    • プロセス監視のための 7 つの実用的な PS コマンドの例
    • UNIX / Linux のパフォーマンス監視に役立つ Sar (Sysstat) の 10 の例

    Linux
    1. 24 Linux パフォーマンス監視の iostat、vmstat、および mpstat の例

    2. Linux でディスク I/O キャッシュをパージする方法は?

    3. Linux:I/O の top に似たものはありますか?

    1. Linux –高I / Oの原因となる特定のファイルを決定しますか?

    2. Linux –参照しかしLinuxの場合?

    3. トップコマンドからの wa (Waiting for I/O) が大きい

    1. UNIX / Linux のパフォーマンス監視に役立つ 10 の Sar (Sysstat) の例

    2. Linux OOM ディスク I/O。また、スワップ、それは何に役立ちますか?

    3. Linux での CPU I/O 待機の評価