0
在linux下,這頭文件規定了可以用於在管道上寫入的大小?
我捕獲每個可配置週期主應用程序的延遲並將該數據寫入管道。一個單獨的報告過程讀取該管道。通常,主應用程序每秒交換約10,000條消息。因此,給定1秒的週期,主應用程序爲每個消息交換收集10k延遲數據點,然後將它們寫入第二個邊界的管道。在這種情況下,我有以下問題
- 有沒有辦法在創建時指定管道的大小,所以我可以確保管道中有足夠的寫入空間?
- 寫入管道是否昂貴?管道如何實施?寫入管道是否違背一些mmap文件或內存緩衝區?
見http://stackoverflow.com/questions/4624071/pipe-buffer-size-is-4k-or-64k?rq=1的管道緩衝區大小 –
你什麼寫入管道進入內核端緩衝區,一旦管道一端關閉,緩衝區將被丟棄。在Linux上,管道通常有64k緩衝區。 – fuz
您的第二季度:沒有辦法配置我所知道的管道(沒有標準方式,如POSIX提供的那樣)。寫入管道(以及讀取管道)的設計快速且便宜;它們在Unix中是一個至關重要的IPC機制,並且必須快速。用於管道數據的內存通常位於內核緩衝池中;它通常不會碰到磁盤。 (如果管道已滿,它可能會碰到磁盤,但應該讀取它的進程忽略了管道足夠長的時間,並且內核緩衝池上有足夠的壓力。) –