From: Eric Wong Date: 2013-08-17T19:37:43+00:00 Subject: [ruby-core:56700] Re: [ruby-trunk - Feature #8788][Open] use eventfd on newer Linux instead of pipe for timer thread SASADA Koichi wrote: > (2013/08/16 10:47), normalperson (Eric Wong) wrote: > > eventfd is a cheaper alternative to pipe for self-notification (signals) on Linux > > > > I will submit patches in the next few days/weeks unless there are objections > > (or somebody else wants to do it sooner). I'd also like to cleanup some of the existing #ifdefs in that area while I'm at it. > > Can we see the performance comparison? > If we can see the clear difference, it can be acceptable. It's not for speed (signal handling performance should not be a bottleneck), but halve FD use in userspace and reduce memory use inside the kernel. AFAIK, writing to a empty pipe still allocates a 4K page, eventfd avoids that allocation/deallocation. Since Ruby is CoW/fork-friendly, this should allow running more Ruby processes on a system. I also thought my own code had an FD leak when timer_thread_pipe_low was introduced. Maybe this will reduce confusion for users who lsof Ruby processes, since there are more pipe users than eventfd users. > (If we can't see any difference, it only increase the source code > complexity). I've tried to minimize the impact of my patch and keep the eventfd/pipe difference minimal.