Hi,
On 2021-07-20 14:57:15 -0400, Alvaro Herrera wrote:
> On 2021-Jul-20, Andres Freund wrote:
>
> > I think what's happening is that the first recvfrom() actually gets all 7
> > connection results. The server doesn't have any queries to process at that
> > point. But we ask the kernel whether there is new network input over and over
> > again, despite having results to process!
>
> Hmm, yeah, that seems a missed opportunity.
> > with-isbusy:
> > ...
> > tps = 3990.424742 (without initial connection time)
> > ...
> > 1,013.71 msec task-clock # 0.202 CPUs utilized
> > 80,203 raw_syscalls:sys_enter # 79.119 K/sec
> > 19,947 context-switches # 19.677 K/sec
> > 2,943,676,361 cycles:u # 2.904 GHz
> > 346,607,769 cycles:k # 0.342 GHz
> > 8,464,188,379 instructions:u # 2.88 insn per cycle
> > 226,665,530 instructions:k # 0.65 insn per cycle
>
> This is quite compelling.
>
> If you don't mind I can get this pushed soon in the next couple of days
> -- or do you want to do it yourself?
I was thinking of pushing the attached, to both 14 and master, thinking
that was what you meant, but then I wasn't quite sure: It's a relatively
minor performance improvement, after all? OTOH, it arguably also just is
a bit of an API misuse...
I'm inclined to push it to 14 and master, but ...
Greetings,
Andres Freund