kenj wrote:
> [...]
> A bit of history might help explain the status quo and guide
> reimplementation ...
Thanks a lot, such info is awesome.
> + the pdu buffers are page size aligned for a reason ... these are
> used for direct I/O calls, and some operating systems are able to
> expedite the handling of I/O for page aligned buffers (avoiding the
> need to copy at all in some cases) [...]
OK, I see the valloc(), but not direct I/O (in the sense of fcntl
O_DIRECT or mmap), so there's going to be some user->kernel buffer
copying regardless of alignment.
> [...]
> + page alignment means that the buffers should be sized in units of
> multiple pages also [...]
Wouldn't valloc() do that, without rounding-up on our side?
> [...]
> + because the range of PDU sizes was small and there was no
> multithreading and buffers did not remain pinned for long, the
> number of buffers in the pool was expected to be small
Yeah - I recall seeing some dozens of entries at most in older
debugging sessions on singlethreaded pcp clients.
> [...]
> Hope the history helps.
Absolutely!
> I encourage Frank to investigate here, but before committing to a
> new regime I'd hope to to see some empirical evidence of new vs old
> performance.
Right - some early results were posted on the thread a few days back,
looking promising. Can you suggest some specific benchmarking
scenarios expected to stress this area?
- FChE
|