- 締切済み
IOのオーバーラップについて
複数の独立したプロセスから1つのディスクの異なる領域に対してアクセスがあった場合、 OSからディスクに対してIOはオーバーラップして発行されるのでしょうか? また、オーバーラップ可能な数はOS側のパラメータで指定可能でしょうか? その数を上げるデメリットなどがあれば教えていただけますでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- dyna_1550
- ベストアンサー率34% (122/353)
回答No.2
複数のファイルに同時にI/O命令が発行された場合ということでしょうか。 おそらく、オーバラップしていると思いますが、所詮、物理ディスクは 逐次処理するので、ディスクのI/O性能に依存しそうな気がします。 性能のパフォーマンス評価であれば、sarコマンドで確認すれば システムコールの状況をつかめると思います。
- dyna_1550
- ベストアンサー率34% (122/353)
回答No.1
「1つのディスクの異なる領域」というのはどうかわかりませんが、 ファイル(に限らず)の入出力の制限値はファイルディスクリプタ が真っ先に思い浮かびます。 オーバーラップとは、どのようなことをさすのでしょう?
質問者
補足
>オーバーラップとは、どのようなことをさすのでしょう? 下記の「シングルスレッドとマルチスレッド」の図のようなイメージのつもりで言ってます。 http://www.adaptec.co.jp/about_scsi/book2/page03.html 「1つのディスクの異なる領域」というのは特別な意味があって言ってるわけではありませんが、 例えばディスクの同じセクタに対して異なるプロセスからwriteがあった場合、 OS側かディスク側かわかりませんが何か特別な動作があったりするのかと思い、 その特別な動作に関する質問ではありません、という意味で書きました。
補足
下記の「シングルスレッドとマルチスレッド」の図のようなイメージのつもりでオーバラップと書いてたのですが、 http://www.adaptec.co.jp/about_scsi/book2/page03.html 私の理解してるハードウェア構成としては、 IO時にサーバ側でディスクのシリンダやヘッドを指定するのではなくて、 サーバからのIOをSCSIコントローラが受けとって、SCSIコントローラがディスクを操作する、 というもので考えてます。(これが合ってるのかも教えていただければ、と思ってます。) で、書き込みの例で考えてるのですが、 SCSIデバイス側にはwrite用のキャッシュがあり、 サーバからオーバラップして発行されたIOをSCSIコントローラが並列処理してキャッシュに一旦書き込んで、その時点でサーバに終了を知らせて、 その後にキャッシュからディスクに書き込まれるのかな、と考えてます。 で、このオーバラップ数はSCSIデバイス側で制限があり、 その制限に合わせてサーバ側でパラメータを指定するのかと予想してるのですが、 そんなイメージで合ってるのか、 また、オーバラップ数を増やしすぎたときにSCSIコントローラ側の並列度が上がりすぎたり、SCSI側のキャッシュが溢れたり(溢れるかどうかはSCSIコントローラが判断して何か処理するのかとおもいますが、そのあたり、どの時点でwriteキャッシュからディスクへ(まとめて?)書き込みが行われるか、も知りたいのですが)して1つのIOがいつまでも終わらずにスループットだかIOPSだかが低下したりするのか、 というようなことをイメージして質問したのですが、 まだ勉強しはじめなのでまったく違ってたりするかも知れませんので、 ご指摘いただければとおもってます。