Open humonnom opened 2 years ago
* single thread
* fd_set을 사용
* fd를 하나하나 체크해야함 -> O(n)의 계산량
* 성능이 접속수에 비례함
* 커널과 유저 사이에 여러번의 데이터 복사가 일어남
* 관리 fd 수에 제한이 있음
* 타임아웃값의 세팅: timeval 구조체 사용
* select의 단점을 개선함
* 관심있는 fd만 넘길 수 있고, 이벤트도 보전됨
* 접속수가 많으면 select에 비해 성능이 떨어짐
* system call의 호출이 select보다 적음
* low level 처리
* 관리할 수 있는 fd의 개수가 무제한
* 타임아웃값의 세팅: 구조체 없이 사용함(int)
struct pollfd
{
int fd; // 관심있어하는 파일지시자
short events; // 발생된 이벤트
short revents; // 돌려받은 이벤트
};
따라서 커널과 유저스페이스간의 통신 오버헤드가 줄어듬
함수이름 | 내용 |
---|---|
epoll_create | 구조체 생성 |
epoll_ctl | fd를 등록, 수정, 삭제 |
epoll_wait | fd의 변화 탐지 |
I/O Multiplexing