[erlang-questions] kpoll still using select

Joel Reymont <>
Thu Jul 9 12:46:26 CEST 2009


It goes like this...

Breakpoint 2, erts_poll_init_kp () at sys/common/erl_poll.c:2174
2174	    max_fds = sysconf(_SC_OPEN_MAX);

reakpoint 3, erts_poll_init_kp () at sys/common/erl_poll.c:2183
2183		max_fds = FD_SETSIZE;
(gdb) p max_fds
$1 = -1

kernel poll is enabled with kqueue (as per configure), thus the _kp  
suffix.

ERTS_POLL_USE_SELECT is still defined, though, thus the clipping.

I have a strange feeling of deja vu, having had looked into this last  
year.

I remember that ERTS_POLL_USE_SELECT must be defined because kernel  
poll may fall back to select under certain exceptional circumstances.  
I don't understand why I'm forced to 1024 fds under normal kernel poll  
conditions, though.

Any explanation or workarounds?

	Thanks, Joel

---

2171	#if defined(VXWORKS)
2172	    max_fds = erts_vxworks_max_files;
2173	#elif !defined(NO_SYSCONF)
2174	    max_fds = sysconf(_SC_OPEN_MAX);
2175	#elif ERTS_POLL_USE_SELECT
2176	    max_fds = NOFILE;
2177	#else
2178	    max_fds = OPEN_MAX;
2179	#endif
2180	
2181	#if ERTS_POLL_USE_SELECT && defined(FD_SETSIZE)
2182	    if (max_fds > FD_SETSIZE)
2183		max_fds = FD_SETSIZE;
2184	#endif
2185	
2186	    if (max_fds < 0)
2187		fatal_error("erts_poll_init(): Failed to get max number of  
files: %s\n",
2188			    erl_errno_id(errno));

---
Mac hacker with a performance bent
http://www.linkedin.com/in/joelreymont



More information about the erlang-questions mailing list