Hello, I'm new to this forum and not familiar with mail list system. If there're something I did wrong, please tell me.
In short, I have a general method (batching system call) and I try to apply into Nginx, then I found the weird behavior and can't explain it. To linux, connections and requests will be handled in `ngx_epoll_module.c`, following is snapshot about main job of the workers. Workers will using epoll_wait to get the numbers of events which are already, then handle them in the following `for` loop. In each iteration, worker will do some thing like sending file (system call: sendfile) to client. ```c ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) { ... events = epoll_wait(ep, event_list, (int) nevents, timer); ... for (i = 0; i < events; i++) { // handle events .... } ``` As I observed, the value of `events` is relative to the numbers of connections. For example, in wrk (benchmarking tool), when I set `c` option to 50, the value of events will usually be close to 50. As service time grow, the change will like: ``` 1->1->1->50->50..... (close to 50)->50.... ``` So far, it really make sense. Then, I apply my method: batching system call in each iteration. Following is snapshot: ``` ngx_epoll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags) { ... events = epoll_wait(ep, event_list, (int) nevents, timer); ... my_batching_entry(); for (i = 0; i < events; i++) { // handle events } my_batching_exit(); ``` In above model, instead of executing system call (such as sendfile64) in each iteration, all of them will be executed until `my_batching_exit()` was called. It seems that it works correct (at least in wrk). Ok, here is the part I found weird. Applying my method, I found that the value (events) return from `epoll_wait` will always be 1 or some really low value (far from 50). Are there any mechanism to cause it? (low numbers of ready events) ,Did Nginx think the requests were served too slow , so lowering my event numbers? In my method, I only add two lines into Nginx (batching_entry and batching_exit) and Makefile. I means I didn't do a lot changes with Nginx. Are there any possible to cause the number of events are far lower than connections number? Any suggestions will be appreciated! Thanks in advance! - Steven Posted at Nginx Forum: https://forum.nginx.org/read.php?2,291972,291972#msg-291972 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx