mirror of
https://github.com/postgres/postgres.git
synced 2026-04-15 22:10:45 -04:00
Align PGPROC to cache line boundary
On common architectures, the PGPROC struct happened to be a multiple of 64 bytes on PG 18, but it's changed on 'master' since. There was worry that changing the alignment might hurt performance, due to false cacheline sharing across elements in the proc array. However, there was no explicit alignment, so any alignment to cache lines was accidental. Add explicit alignment to remove worry about false sharing. Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://www.postgresql.org/message-id/3dd6f70c-b94d-4428-8e75-74a7136396be@iki.fi
This commit is contained in:
parent
2e0853176f
commit
412f78c66e
1 changed files with 9 additions and 1 deletions
|
|
@ -374,8 +374,16 @@ typedef struct PGPROC
|
|||
************************************************************************/
|
||||
|
||||
uint32 wait_event_info; /* proc's wait information */
|
||||
} PGPROC;
|
||||
}
|
||||
|
||||
/*
|
||||
* If compiler understands aligned pragma, use it to align the struct at cache
|
||||
* line boundaries. This is just for performance, to avoid false sharing.
|
||||
*/
|
||||
#if defined(pg_attribute_aligned)
|
||||
pg_attribute_aligned(PG_CACHE_LINE_SIZE)
|
||||
#endif
|
||||
PGPROC;
|
||||
|
||||
extern PGDLLIMPORT PGPROC *MyProc;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue