Heikki Linnakangas <hlinn...@iki.fi> wrote: > On 01/04/2019 11:01, Antonin Houska wrote: > > In copydir.c:copy_file() I read > > > > /* Use palloc to ensure we get a maxaligned buffer */ > > buffer = palloc(COPY_BUF_SIZE); > > > > No data type wider than a single byte is used to access the data in the > > buffer, and neither read() nor write() should require any specific > > alignment. > > Can someone please explain why alignment matters here? > > An aligned buffer can allow optimizations in the kernel, when it copies the > data. So it's not strictly required, but potentially makes the read() and > write() faster.
Thanks. Your response reminds me of buffer alignment: /* * Preferred alignment for disk I/O buffers. On some CPUs, copies between * user space and kernel space are significantly faster if the user buffer * is aligned on a larger-than-MAXALIGN boundary. Ideally this should be * a platform-dependent value, but for now we just hard-wire it. */ #define ALIGNOF_BUFFER 32 Is this what you mean? Since palloc() only ensures MAXIMUM_ALIGNOF, that wouldn't help here anyway. -- Antonin Houska Web: https://www.cybertec-postgresql.com