2009-11-25 2 views
0

Linux에서 async io를 사용하려고합니다. 내가 아는 한 3 가지 옵션이있어 : - 사용자 공간 /proc/sys/fs/aio-nr은 1024보다 높지 않습니다 (Linux의 AIO)

  • libRTKAIO에서 스레드를 사용 -

    • 커널 호출 (io_submit 친구)
    • libRT을 스레드
    • 를 사용하지 않는 커널 호출의 래퍼

    마지막 옵션을 사용하고 있으며, 여러 스레드에서 많은 비동기 io 요청을 실행하는 유닛 테스트에서/proc/sys/fs/aio-nr이 1024보다 높지는 않습니다. 그러한 한계를두고있는 곳이 궁금합니다.

    나는/proc/sys/fs/aio-max-nr을 16M으로 설정 했으므로 문제가되지 않습니다.

    이와 관련된 질문은 (또한 광산) aio_write on linux with rtkaio is sometimes long

  • 답변

    0

    는 "io_setup"라는 이름의 시스템 호출이있다. 라이브러리에서이 호출은 인수로 1024를받습니다. 병렬로 1,024 개 이상의 ios가있을 경우 성능에 해를 입히고 설명하면 상수 1024가됩니다. 1024는 하드 코드 된 것입니다.

    차단 모드에서 lio_listio 만 호출하면이 1024 바를 높일 수 있습니다.