CLEANUP: epoll: epoll_events should be allocated according to global.tune.maxpollevents

Willy: commit f2e8ee2b introduced an optimization in the old speculative epoll
code, which implemented its own event cache. It was needed to store that many
events (it was bound to maxsock/4 btw). Now the event cache lives on its own
and we don't need this anymore. And since events are allocated on the kernel
side, we only need to allocate the events we want to return.

As a result, absmaxevents will be not used anymore. Just remove the definition
and the comment of it, replace it with global.tune.maxpollevents. It is also an
optimization of memory usage for large amounts of sockets.

Signed-off-by: Godbach <nylzhaowei@gmail.com>
This commit is contained in:
Godbach 2014-12-17 16:14:26 +08:00 committed by Willy Tarreau
parent bd556bf35c
commit d39ae7ddc9

View File

@ -29,7 +29,6 @@
#include <proto/task.h> #include <proto/task.h>
static int absmaxevents = 0; // absolute maximum amounts of polled events
/* private data */ /* private data */
static struct epoll_event *epoll_events; static struct epoll_event *epoll_events;
@ -195,10 +194,8 @@ REGPRM1 static int _do_init(struct poller *p)
if (epoll_fd < 0) if (epoll_fd < 0)
goto fail_fd; goto fail_fd;
/* See comments at the top of the file about this formula. */
absmaxevents = MAX(global.tune.maxpollevents, global.maxsock);
epoll_events = (struct epoll_event*) epoll_events = (struct epoll_event*)
calloc(1, sizeof(struct epoll_event) * absmaxevents); calloc(1, sizeof(struct epoll_event) * global.tune.maxpollevents);
if (epoll_events == NULL) if (epoll_events == NULL)
goto fail_ee; goto fail_ee;