.png)
파이프에 많은 데이터를 써야 합니다. 명명된 파이프에 쓰기 위해 Linux 호출을 사용할 수 있습니까?
io_submit/io_getevents
아니면 일반 파일에 대해서만 정의됩니다. 파이프를 통한 AIO를 설명하는 문서를 찾으려고 노력했지만 찾을 수 없었습니다. 누군가 여기서 도움을 줄 수 있습니까?
주로 aio_offset
. struct iocb
오프셋이 8096인 데이터 패킷이 오프셋이 4096인 데이터 패킷보다 먼저 읽기/쓰기로 예약되어 있으면 어떻게 될까요?
답변1
Linux AIO는 일반 파일에만 국한되지 않습니다.~할 수 있다블록 장치 특수 파일에 사용됩니다. 하지만 파이프는 검색할 수 없기 때문에 AIO 쓰기를 파이프에서 사용할 수 없을 것으로 예상됩니다.
IOCB_CMD_PWRITE
pwrite()는 buf에서 시작하는 버퍼에서 최대 count 바이트를 오프셋 오프셋의 파일 설명자 fd에 씁니다. 파일 오프셋은 변경되지 않습니다.
fd가 참조하는 파일은 검색이 가능해야 합니다.
AIO의 핵심은 스레드를 사용하지 않고도 여러 개의 직접 IO 쓰기(또는 읽기)를 블록 장치에 대기열에 넣을 수 있다는 것입니다.
파이프를 통한 대량 전송 성능을 향상시키려면 파이프 버퍼 크기를 4kB에서 64kB 이하로 늘리는 것이 좋습니다. 단, 64kB가 최신 Linux에서는 이미 기본값입니다.