On Mon, Sep 4, 2017 at 1:56 PM, Fabien COELHO <coe...@cri.ensmp.fr> wrote:
> > Hello Jeff, > > I have fixed a bug introduced in the patch by changing && by || in the >>>> (min_sec > 0 && maxsock != -1) condition which was inducing errors with >>>> multi-threads & clients... >>>> >>> > Since this commit (12788ae49e1933f463bc5), if I use the --rate to throttle >> the transaction rate, it does get throttled to about the indicated speed, >> but the pg_bench consumes the entire CPU. >> >> >> At the block of code starting >> if (min_usec > 0 && maxsock != -1) >> >> If maxsock == -1, then there is no sleep happening. >> > > Argh, shame on me:-( > > I cannot find the "induced errors" I was refering to in the message... > Sleeping is definitely needed to avoid a hard loop. > > Patch attached fixes it and does not seem introduce any special issue... > > Should probably be backpatched. > > Thanks for the debug! Thanks Fabien, that works for me. But if min_sec <= 0, do we want to do whatever it is that we already know is over-do, before stopping to do the select? If it is safe to go through this code path when maxsock == -1, then should we just change it to this? if (min_usec > 0) Cheers, Jeff