]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Fine-tuning epoll parameters
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 52f7b64792abe29dc7cd1e6e43a29e0bc63b0b6c..7bcfd6b69d2f5378b48461bd39bd2f61675e1291 100644 (file)
@@ -36,7 +36,7 @@ using namespace std;
 
 #ifdef USE_EPOLL
 #include <sys/epoll.h>
-#define EP_DELAY 10
+#define EP_DELAY 50
 #endif
 
 #include <time.h>
@@ -2704,7 +2704,7 @@ int InspIRCd(char** argv, int argc)
        {
                struct kevent ke;
                log(DEBUG,"kqueue: Add listening socket to events, kq=%d socket=%d",lkq,openSockfd[count]);
-               EV_SET(&ke, openSockfd[count], EVFILT_READ, EV_ADD, 0, SOMAXCONN, NULL);
+               EV_SET(&ke, openSockfd[count], EVFILT_READ, EV_ADD, 0, 32, NULL);
                int i = kevent(lkq, &ke, 1, 0, 0, NULL);
                if (i == -1)
                {
@@ -2719,7 +2719,7 @@ int InspIRCd(char** argv, int argc)
                 if (me[t])
                 {
                        log(DEBUG,"kqueue: Add listening SERVER socket to events, kq=%d socket=%d",skq,me[t]->fd);
-                       EV_SET(&ke, me[t]->fd, EVFILT_READ, EV_ADD, 0, SOMAXCONN, NULL);
+                       EV_SET(&ke, me[t]->fd, EVFILT_READ, EV_ADD, 0, 32, NULL);
                        int i = kevent(skq, &ke, 1, 0, 0, NULL);
                        if (i == -1)
                        {
@@ -2796,6 +2796,9 @@ int InspIRCd(char** argv, int argc)
 
 #ifdef USE_EPOLL
                i = epoll_wait(sep, event, 1, EP_DELAY);
+#ifdef _POSIX_PRIORITY_SCHEDULING
+                                sched_yield();
+#endif
                if (i > 0)
                {
                        log(DEBUG,"epoll: Listening server socket event, i=%d, event.data.fd=%d",i,event[0].data.fd);
@@ -3049,7 +3052,7 @@ int InspIRCd(char** argv, int argc)
         
                        v = 0;
 #ifdef USE_EPOLL
-                       int i = epoll_wait(ep, event, 1, EP_DELAY);
+                       int i = epoll_wait(ep, event, 1, 5);
                        if (i > 0)
                        {
                                log(DEBUG,"epoll_wait call: ep=%d, i=%d",ep,i);
@@ -3296,7 +3299,13 @@ int InspIRCd(char** argv, int argc)
                        {
 #endif
 #ifdef USE_EPOLL
+#ifdef _POSIX_PRIORITY_SCHEDULING
+                                sched_yield();
+#endif
        i = epoll_wait(lep, event, 32, EP_DELAY);
+#ifdef _POSIX_PRIORITY_SCHEDULING
+                                sched_yield();
+#endif
        if (i > 0) for (j = 0; j < i; j++)
        {
                log(DEBUG,"epoll: Listening socket event, i=%d,events[j].data.fd=%d",i,event[j].data.fd);