Linux AIO / io_submit / io_getevents / on fifo(命名管道)

Linux AIO / io_submit / io_getevents / on fifo(命名管道)

我必須將大量資料寫入管道。我可以使用 Linux io_submit/io_getevents呼叫寫入命名管道嗎?我試圖找到任何解釋 AIO 通過管道的文檔,但找不到。有人可以幫忙嗎?

我主要關心的aio_offsetstruct iocb.如果將偏移量為 8096 的封包安排在偏移量為 4096 的封包之前進行讀取/寫入會怎樣?

答案1

Linux AIO 不僅限於常規檔案 - 它用於區塊設備特殊文件。但我預計 AIO 寫入不能在管道上使用,因為管道無法找到。

IOCB_CMD_PWRITE

pwrite() 將從 buf 開始的緩衝區中寫入 count 個位元組到檔案描述符 fd 的偏移量 offset 處。文件偏移量未更改。

fd 引用的文件必須能夠找到。

AIO 的重點是能夠對區塊裝置的多個直接 IO 寫入(或讀取)進行排隊,而無需使用執行緒。

為了提高管道上批量傳輸的效能,我建議將管道緩衝區大小從 4kB 增加到不超過 64kB...不過 64kB 已經是現代 Linux 上的預設值。

相關內容