Linux AIO/io_submit/io_getevents/on fifo(명명된 파이프)

Linux AIO/io_submit/io_getevents/on fifo(명명된 파이프)

파이프에 많은 양의 데이터를 써야 합니다. io_submit/io_geteventsLinux 호출을 사용하여 명명된 파이프에 쓸 수 있나요 ? 또는 일반 파일에 대해서만 정의됩니다. 파이프를 통해 AIO를 설명하는 문서를 찾으려고 했지만 찾을 수 없었습니다. 누구든지 도와줄 수 있나요?

내 주요 관심사 aio_offsetstruct iocb오프셋 8096의 패킷이 오프셋 4096의 패킷보다 먼저 읽기/쓰기로 예약되어 있으면 어떻게 됩니까?

답변1

Linux AIO는 일반 파일에만 국한되지 않습니다.할 수 있는블록 장치용 특수 파일입니다. 그러나 파이프를 찾을 수 없기 때문에 AIO 쓰기가 파이프에서 작동하지 않을 것으로 예상합니다.

IOCB_CMD_PWRITE

pwrite()는 buf에서 시작하는 버퍼의 count 바이트를 파일 설명자 fd의 오프셋 오프셋에 씁니다. 파일 오프셋은 변경되지 않았습니다.

fd가 참조하는 파일은 검색 가능해야 합니다.

AIO의 핵심은 스레드를 사용하지 않고 여러 개의 직접 IO 쓰기(또는 읽기)를 블록 장치에 대기열에 넣는 기능입니다.

파이프의 대량 전송 성능을 향상시키려면 파이프 버퍼 크기를 4kB에서 64kB 이하로 늘리는 것이 좋습니다. 그러나 최신 Linux에서는 이미 64kB가 기본값입니다.

관련 정보