복붙노트

[REDIS] 선택, epoll에, kqueue, 그리고 evport 사이의 근본적인 차이점은 무엇입니까?

REDIS

선택, epoll에, kqueue, 그리고 evport 사이의 근본적인 차이점은 무엇입니까?

최근 레디 스를 읽고있다. 구현에게 I에 / O 멀티플렉싱 기반의 간단한 이벤트 중심의 라이브러리를 레디 스. 레디 스는이 시스템에서 지원하는 최적의 다중를 선택할 것이라고 말했습니다 다음 코드를 제공합니다 :

/* Include the best multiplexing layer supported by this system.
 * The following should be ordered by performances, descending. */
#ifdef HAVE_EVPORT
#include "ae_evport.c"
#else
    #ifdef HAVE_EPOLL
    #include "ae_epoll.c"
    #else
        #ifdef HAVE_KQUEUE
        #include "ae_kqueue.c"
        #else
        #include "ae_select.c"
        #endif
    #endif
#endif

나는 그들이 근본적인 성능 차이가 있는지 알고 싶어? 그렇다면, 왜?

친애하는

해결법

  1. ==============================

    1.일반적으로 모든 비동기 I / O 서브 시스템은 다른 내부를 가지고 있지만 현재 특정 케이스에 I 비동기이 콘크리트 / O libs와 가능한 많은 플랫폼으로 지원하는 데 사용됩니다. 그건:

    일반적으로 모든 비동기 I / O 서브 시스템은 다른 내부를 가지고 있지만 현재 특정 케이스에 I 비동기이 콘크리트 / O libs와 가능한 많은 플랫폼으로 지원하는 데 사용됩니다. 그건:

    Evport, epoll 파일 및 KQueue는 O (1) 기술자 선택 알고리즘 복잡도를 가지고, 모두 사용 내부 공간 커널 메모리 구조. 또한 그들은 많은 (수천 수백) 파일 디스크립터를 제공 할 수 있습니다.

    복잡도가 O (n)이, 그래서 외에 다른 사람, 1024 개 기술자까지 제공 할 수 선택하고 (그와 일에 하나를 선택하기 위해 모든 설명을 반복 할 때마다 그래서) 기술자의 전체 검사를 수행합니다.

  2. from https://stackoverflow.com/questions/26420947/what-are-the-underlying-differences-among-select-epoll-kqueue-and-evport by cc-by-sa and MIT license