Linux AIO/io_submit/io_getevents/on fifo (名前付きパイプ)

Linux AIO/io_submit/io_getevents/on fifo (名前付きパイプ)

パイプに大量のデータを書き込む必要があります。io_submit/io_geteventsLinux呼び出しを使用して名前付きパイプに書き込むことはできますか?または、通常のファイルに対してのみ定義されます。私はパイプを通してAIOを説明する文書を見つけようとしましたが、見つかりませんでした。誰でも助けることができますか?

私の主な関心事は、aio_offsetオフセットstruct iocb8096のパケットがオフセット4096のパケットの前に読み取り/書き込みで予約されている場合はどうなりますか?

ベストアンサー1

Linux AIOは通常のファイルに限定されません。できるブロックデバイス用の特殊ファイルです。しかし、パイプが見つからないため、AIO書き込みはパイプで機能しないと予想しています。

IOCB_CMD_PWRITE

pwrite() は、buf で始まるバッファの count バイトをファイル記述子 fd のオフセットオフセットに書き込みます。ファイルオフセットは変更されませんでした。

fdが参照するファイルは検索可能でなければなりません。

AIOの鍵は、スレッドを使用せずに複数の直接IO書き込み(または読み取り)をブロックデバイスにキューに入れることです。

パイプの一括転送性能を向上させるには、パイプバッファサイズを4kBから64kB以下に増やすことをお勧めします。しかし、最新のLinuxではすでに64kBがデフォルトです。

おすすめ記事