select를 사용하여 연결을 처리했습니다. 최근에 소켓 라이브러리가 변경되었으며 select가 Linux 플랫폼의 epoll로 바뀌 었습니다.epoll 대 매우 적은 수의 연결을 선택합니다.
내 응용 프로그램 아키텍처는 단일 스레드에서 최대 2 개의 소켓 연결과 epoll/select를 만드는 것과 같습니다.
최근에 epoll로 전환하면 응용 프로그램의 성능이 저하되었음을 알게되었습니다. 실제로 놀랐으며 성능이 올라가거나 같은 것을 기대하고있었습니다. 다른 여러 부분을 살펴 보았는데 이것은 변경된 유일한 코드 조각입니다.
매우 적은 수의 소켓 (예 : 1 또는 2)에 사용되는 경우 epoll은 속도 측면에서 성능상의 불이익을 갖습니다.
또한 동일한 상자 (8cpu 코어)에서 125 개의 프로세스를 실행한다는 점에 유의해야합니다. 이 경우 동일한 시스템에서 epoll_wait를 실행하는 프로세스가 너무 많을 수 있습니다.이 설정은 select를 사용할 때 비슷합니다.
로드 평균은 훨씬 높지만 CPU 사용량은 상당히 같아서 epoll 관련 변경에서 오는 I/O 및 probaly에 더 많은 시간이 소요된다고 생각하게합니다.
문제를 식별하기 위해 더 자세히보아야 할 아이디어/포인터.
비록 평균 대기 시간이 평균 1 밀리 초만큼 증가하지만 이것은 실시간 시스템이며 이러한 대기 시간은 일반적으로 불가능합니다.
덕분에 최신 findinds에이 질문을 업데이트
안녕,
은 떨어져 epoll에 할 선택에서 전환에서 나는 또 다른 10 밀리를 변경, 이전의 제한 시간이 선택으로 한 관련이 있지만, epoll에와 방식 타임 아웃 방법입니다 발견 (1 마이크로 ..)보다 작고, select 또는 epoll 결과에서 너무 적은 시간 제한을 설정하면 어쨌든 성능이 저하 될 수 있습니까?
감사
그것의 소리에서
관련 질문 http://stackoverflow.com/questions/4093185/whats-the-difference-between-epoll-poll-threadpool –
가능한 복제본 [매우 적은 수의 파일로 epoll을 사용하면 어떤 이점이 있습니까? 설명자?] (http://stackoverflow.com/questions/8597452/is-there-any-benefit-to-using-epoll-with-a-very-small-number-of-file-descriptors) – gavv