[erlang-questions] prim_inet:ignorefd/2 affecting erts_poll_wait()
Michael Truog
mjtruog@REDACTED
Sat Aug 23 02:46:21 CEST 2014
I have been seeing the erts_poll_wait() thread consume 100% CPU when my
configuration makes prim_inet:ignorefd/2 ignore a fd (inet_descriptor
has is_ignored set to true) created external to inet (10 file
descriptors created this way). I don't have this problem when using the
inet code to create tcp sockets, when prim_inet:ignorefd/2 is not used
with the same configuration. When setting "#define INET_DRV_DEBUG 1" in
"./erts/emulator/drivers/common/inet_drv.c" and "#define
ERTS_POLL_DEBUG_PRINT" in "./erts/emulator/sys/common/erl_poll.c" all
the debugging output looks the same when exercising the file descriptors
in the same way. The only difference seems to be the "Entering
erts_poll_wait(), timeout=NUMBER" output has non-zero timeout values
more often when prim_inet:ignorefd/2 is not used when compare to the
output when it is being used. Also, the NUMBER doesn't seem to go about
1000 for me when prim_inet:ignorefd/2 is used, but it can go above 1000
when prim_inet:ignorefd/2 is not used.
Why would the erts_poll_wait() loop be refusing to timeout? Is this
expected behaviour? Is there an erts configuration flag which is meant
to address the problem?
Thanks,
Michael
More information about the erlang-questions
mailing list