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机制,并且必须快速。用于管道数据的内存通常位于内核缓冲池中;它通常不会碰到磁盘。 (如果管道已满,它可能会碰到磁盘,但应该读取它的进程忽略了管道足够长的时间,并且内核缓冲池上有足够的压力。) –