this tutorial에 따르면 비동기식 디스크 파일 io는 적어도 프로그래밍/api 관점에서 볼 때 Linux에서 AIO를 사용하여 쉽게 얻을 수 있습니다. 하지만이 튜토리얼을 시작하기 전과 후에 많은 포스트와 기사를 읽었는데,이 중 하나를 수행 할 수 없거나 패치 및 기타 많은 문제가있는 libevent를 사용해야합니다. 또 다른 것은 루프를 기다려야한다는 신호 였지만,이 튜토리얼을 기반으로 콜백 메커니즘을 사용할 수 있습니다. AIO를 사용하면 훨씬 쉽게 사용할 수 있습니다.Linux 디스크 파일 AIO
지금은 리눅스 프로그래머가 아닙니다. 리눅스에서 비동기 디스크 파일 io를 지원하는 간단한 방법을 찾고 배우고 비동기 디스크 io 라이브러리에 추가하면됩니다. 개인 프로젝트. 현재 비 윈도우 플랫폼에서 윈도우와 io 작업자 스레드에 오버랩 된 io를 사용하고 있습니다. mutithreaded 솔루션은 까다로울 수 있으므로 Linux에서 AIO로 바꾸고 싶습니다.
자,이 튜토리얼에서 설명한 AIO의 문제점은 무엇입니까? 성능입니까? AIO를 사용하여 수행 할 수있는 작업에 대한 제한이 있습니까?
p.s. 주요 리눅스 배포판에서 작동하는 한, 코드가 다른 POSIX 호환 플랫폼으로 이식 가능하지 않더라도 상관하지 않습니다. 그리고 제가 관심을 갖는 것은 일반적인 디스크 파일 io입니다.
감사합니다.
Linux에서 AIO 지원이 잘못되었습니다. 현재 AIO는 버퍼 캐시를 무시하고 디스크 IO를 직접 수행하므로 성능이 크게 저하 될 수 있습니다. – lvella
작업자 스레드 솔루션보다 더 나쁠 수 있습니까? – p00ya00
사용법에 따라 다릅니다. 큰 파일을 순차적으로 읽거나 쓰는 것만해도 성능은 좋지만 무작위로 작은 덩어리에 액세스하면 확실히 악화됩니다. 그런데이 작업자 스레드 솔루션은 POSIX 인터페이스'aio_read() '를 사용하면 얻을 수 있습니다. glibc가 사용자 공간에 스레드를 블로킹하여 구현됩니다. – lvella