In addition, it is usually better to read more than one message when poll signals activity on a socket. This reduces the number of poll calls, and these are quite expensive.
Cheers, Jens -- Dr. Jens Auer | CGI | Software Engineer CGI Deutschland Ltd. & Co. KG Rheinstraße 95 | 64295 Darmstadt | Germany T: +49 6151 36860 154 [email protected]<mailto:[email protected]> Unsere Pflichtangaben gemäß § 35a GmbHG / §§ 161, 125a HGB finden Sie unter de.cgi.com/pflichtangaben<http://de.cgi.com/pflichtangaben>. CONFIDENTIALITY NOTICE: Proprietary/Confidential information belonging to CGI Group Inc. and its affiliates may be contained in this message. If you are not a recipient indicated or intended in this message (or responsible for delivery of this message to such person), or you think for any reason that this message may have been addressed to you in error, you may not use or copy or deliver this message to anyone else. In such case, you should destroy this message and are asked to notify the sender by reply e-mail. From: zeromq-dev [mailto:[email protected]] On Behalf Of Mazzaroth M. Sent: 20 November 2016 23:48 To: ZeroMQ development list Subject: Re: [zeromq-dev] Router/Dealer configuration monopolizes CPU while idle yes I think know what you're driving at. Didn't know None/-1 was an option for poll(). Since I know the root cause I will tinker and see if I can have it -1 wait on the poller for the router. I guess what you're saying is when the Router receives something I can drop out of the nested While and poll() on the PULL socket. On Sun, Nov 20, 2016 at 1:38 PM, Michel Pelletier <[email protected]<mailto:[email protected]>> wrote: I just did a brief scan of your code, but it looks like your controller is using poll(0) in two places in a loop. poll(0) will return immediately and your code will busy loop around the 'while True' if idle. I think a better approach would be to register the router socket with the poller and use poll(None) always processing the router socket messages first. -Michel On Sun, Nov 20, 2016 at 9:41 AM, Mazzaroth M. <[email protected]<mailto:[email protected]>> wrote: I have a Router/Dealer setup which is polling on a PULL socket to listen for jobs. It forks 10 Dealer/Worker processes. When I run it with the script below it will use about 20% cpu after about 5 min and then about a minute later use 100% cpu on a ubuntu 16.04 setup. This is all while idle. I'm not sure of the root cause. Controller https://gist.github.com/mazz/f50affc65bbf04a6140e257354b16898 Worker https://gist.github.com/mazz/34ba3d98296bf5d013037b6ad48b6cb6 import sys from pushpull.models import homedirs sys.path[0:0] = homedirs import actors.controller if __name__ == '__main__': sys.exit(actors.controller.run()) _______________________________________________ zeromq-dev mailing list [email protected]<mailto:[email protected]> http://lists.zeromq.org/mailman/listinfo/zeromq-dev _______________________________________________ zeromq-dev mailing list [email protected]<mailto:[email protected]> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
_______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
