epoll: edge triggered and multi-threaded epoll
authorVijaikumar M <vmallika@redhat.com>
Thu, 19 Jun 2014 10:11:22 +0000 (15:41 +0530)
committerVijay Bellur <vbellur@redhat.com>
Sat, 7 Feb 2015 21:17:30 +0000 (13:17 -0800)
commitc61074400a45e69c6edbf82b8ed02568726d37ae
treec9c826414bcd3da0e1f30edbaaf79ac0c716a371
parent5e25569ed0717aa8636ad708430a823d39f9aa60
epoll: edge triggered and multi-threaded epoll

- edge triggered (oneshot) polling with epoll
- pick one event to avoid multiple events getting picked up by same
  thread
  and so get better distribution of events against multiple threads
- wire support for multiple poll threads to epoll_wait in parallel
- evdata to store absolute index and not hint for epoll
- store index and gen of slot instead of fd and index hint
- perform fd close asynchronously inside event.c for multithread safety
- poll is still single threaded

Change-Id: I536851dda0ab224c5d5a1b130a571397c9cace8f
BUG: 1104462
Signed-off-by: Anand Avati <avati@redhat.com>
Signed-off-by: Vijaikumar M <vmallika@redhat.com>
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
Signed-off-by: Shyam <srangana@redhat.com>
Reviewed-on: http://review.gluster.org/3842
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
libglusterfs/src/event-epoll.c
libglusterfs/src/event-poll.c
libglusterfs/src/event.c
libglusterfs/src/event.h
libglusterfs/src/mem-types.h
rpc/rpc-transport/socket/src/socket.c