mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
Add CHECK_FOR_INTERRUPTS into pg_numa_query_pages
Querying the NUMA status can be quite time consuming, especially with large shared buffers.8cc139bec3
called numa_move_pages() once, for all buffers, and we had to wait for the syscall to complete. But with the chunking, introduced by7fe2f67c7c
to work around a kernel bug, we can do CHECK_FOR_INTERRUPTS() after each chunk, allowing users to abort the execution. Reviewed-by: Christoph Berg <myon@debian.org> Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://postgr.es/m/aEtDozLmtZddARdB@msg.df7cb.de Backpatch-through: 18
This commit is contained in:
@ -16,6 +16,7 @@
|
|||||||
#include "c.h"
|
#include "c.h"
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "miscadmin.h"
|
||||||
#include "port/pg_numa.h"
|
#include "port/pg_numa.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -76,6 +77,8 @@ pg_numa_query_pages(int pid, unsigned long count, void **pages, int *status)
|
|||||||
unsigned long count_chunk = Min(count - next,
|
unsigned long count_chunk = Min(count - next,
|
||||||
NUMA_QUERY_CHUNK_SIZE);
|
NUMA_QUERY_CHUNK_SIZE);
|
||||||
|
|
||||||
|
CHECK_FOR_INTERRUPTS();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Bail out if any of the chunks errors out (ret<0). We ignore
|
* Bail out if any of the chunks errors out (ret<0). We ignore
|
||||||
* (ret>0) which is used to return number of nonmigrated pages,
|
* (ret>0) which is used to return number of nonmigrated pages,
|
||||||
|
Reference in New Issue
Block a user