Re: Question on alignment

Поиск
Список
Период
Сортировка
От Antonin Houska
Тема Re: Question on alignment
Дата
Msg-id 8764.1554110504@localhost
обсуждение исходный текст
Ответ на Re: Question on alignment  (Heikki Linnakangas <hlinnaka@iki.fi>)
Ответы Re: Question on alignment  (Antonin Houska <ah@cybertec.at>)
Список pgsql-hackers
Heikki Linnakangas <hlinnaka@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



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Re: Question on alignment
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: Why does ExecComputeStoredGenerated() form a heap tuple