2012-01-20 144 views
9

將一個固定字節緩衝區寫入多個文件描述符時,是否有任何操作系統級(Linux)加速?當將許多緩衝區寫入一個文件描述符時,可以使用writev(2),所以我想知道是否有任何類似的文件或它必須由多個系統調用完成。寫入多個文件描述符

回答

2

我知道Linux上沒有這樣的系統調用。他們的詳盡列表在syscalls(2)手冊頁中給出。

而且我不會打擾那麼多。對於文件的訪問,真正的瓶頸是磁盤...

+1

除了寫不去磁盤;所有'write'都是將數據複製到內核中的緩衝區。 (有些選項可以改變這種情況,但這是默認行爲。)OP的問題是一個很好的問題,因爲如果有這樣一個問題,它將意味着一個副本,並且可能只有一個內核緩衝區(更少的資源在內核中使用)。 –

+0

我同意並且我知道,但是當您有足夠的內存以便所有熱門文件適合內部時,您不應該太擔心。我不認爲內核能夠在不同文件之間共享文件段。 –

+0

@JamesKanze:我不確定共享緩衝區是否有效。如果您有兩個文件,一個位於SSD上,另一個位於距離很遠的網絡驅動器上,SSD是否應等待網絡驅動器?根據情況,您可能更喜歡至少有一個文件成功寫入,而不是兩個半寫入。 –

0

vmsplicetee組合應該做的是什麼要求,這是多次調用雖然形成,但是用戶空間/內核空間屏障越過只有一次。

+0

謝謝,但它只適用於管道。 – Cartesius00