파일 시스템 의미를 유지하면서 더 큰 버퍼를 갖춘 Linux용 대체 FIFO 장치가 있습니까?

파일 시스템 의미를 유지하면서 더 큰 버퍼를 갖춘 Linux용 대체 FIFO 장치가 있습니까?

나는 출력을 생성하는 내가 만든 프로그램과 그것을 소비하는 내가 만들지 않은(그리고 변경하고 싶지 않은) 프로그램으로 구성된 무언가를 개발 중입니다. 을 사용하여 생성된 명명된 FIFO를 사용하고 있습니다 mkpipe. Linux FIFO 버퍼가 작기 때문에 성능 병목 현상이 발생하는 것으로 의심됩니다. (그리고 이 크기는 커널을 패치하지 않고는 변경할 수 없습니다.)

수십 메가바이트의 버퍼와 함께 사용할 수 있는 FIFO와 유사한 대안이 있습니까? 내가 만들지 않은 프로그램은 /dev/stdin명명된 파이프(지금처럼), 실제 파일 등 파일 시스템 이름을 가질 수 있는 모든 것에서 읽을 수 있습니다 /dev/any-character-device.

다른 대안을 사용할 수 없는 경우 타사 무료 커널 모듈을 사용해도 됩니다.

답변1

표시된 대로 명명된 파이프 처리량에는 문제가 없습니다. 따라서 작성자가 리더보다 빠르고 두 가지 모두 일정한 속도로 작동하는 경우 전체 작업은 리더만큼 느립니다.

그러나 작성자가 출력 사이에 일시 중지를 포함하여 버스트 방식으로 출력을 생성하는 경우 더 큰 버퍼가 유리합니다.

buffer(1)입력을 버퍼링하고 일정한 속도(기본적으로 가능한 한 빠른 속도)로 전송하도록 하는 테이프 쓰기용 유틸리티( )가 있습니다 .

your-producer | buffer > fifo & your-consumer fifo

buffer데비안 패키지 나 다음에서 직접 사용할 수 있습니다.여기.

답변2

Unix 도메인 소켓을 사용하고 setsockopt().

관련 정보