Solaris のシステム管理 (第 2 巻)

ディスク入出力とシステム性能

ディスクは、コンピュータシステムで使用されるデータと命令を格納します。ディスクアクセス動作と端末の動作を調べることにより、システムがどの程度効率的に、ディスク上のデータにアクセスしているかが検査できます。ディスク動作に関する統計情報を表示する iostat コマンドと sar コマンドについては、第 26 章「性能の監視手順」を参照してください。ディスク容量の管理と割り当て、およびディスクをスライスに分割する方法については、『Solaris のシステム管理 (第 1 巻)』の「ディスク管理の概要」を参照してください。

CPU が入出力の完了を待っている場合は、ディスクが低速化していることになります。ディスクの低速化を防ぐには、次のような方法があります。

UFS 直接入出力

直接入出力は、バルク入出力操作を向上させます。バルク入出力操作とは、大量のバッファサイズを使用して、大きなファイル (物理メモリーより大きなファイル) を転送することです。

バルク入出力操作の例は、衛星から転送されるデータのダウンロードです。これは、大量のデータをファイルに書き込みます。直接入出力データは、オペレーティングシステムのページキャッシング機構のオーバーヘッドを使用しないで、メモリーから読み取られたり、書き込まれたりします。

直接入出力の起動は、場合によっては制限があります。入出力が要求されたファイルがすでに他のアプリケーションによってマップされていた場合、そのページは直接入出力操作が始まる前に、メモリーからフラッシュされなければなりません。

詳細は、directio(3C) のマニュアルページを参照してください。

mount コマンドに forcedirectio オプションを指定しても、ファイルシステムについて直接入出力を使用できます。ファイルシステムが大量の順次データを転送する場合のみ、直接入出力の効果が性能に現れます。

このオプションでファイルシステムをマウントすると、データはユーザーのアドレス空間とディスク間を直接転送されます。ファイルシステムに対して直接入出力を強制的に使用できない場合、ユーザーのアドレス空間とディスクとの間で転送されるデータは、まずカーネルアドレス空間に入れられます。

UFS ファイルシステムにおけるデフォルトの動作は、非強制直接入出力です。詳細は、mount_ufs(1M) のマニュアルページを参照してください。

UFS ファイルシステムに対し強制直接入出力を使用する方法

  1. スーパーユーザーになります。

  2. forcedirectio マウントオプションを指定してファイルシステムをマウントします。

    # mount -F ufs -o forcedirectio /dev/dsk/c0t3d0s7 /datab
    
  3. マウントされたファイルシステムで強制直接入出力が使用できるか確認します。

    # mount
                        .
                        .
                        .
    /export/home on /dev/dsk/c0t3d0s7 forcedirectio/setuid/read/write/
    largefiles on Tue Jun 16 10:25:05 1998