Querying the NUMA status can be quite time consuming, especially with
large shared buffers.
8cc139bec34a called numa_move_pages() once, for
all buffers, and we had to wait for the syscall to complete.
But with the chunking, introduced by
7fe2f67c7c 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
#include "c.h"
#include <unistd.h>
+#include "miscadmin.h"
#include "port/pg_numa.h"
/*
unsigned long count_chunk = Min(count - next,
NUMA_QUERY_CHUNK_SIZE);
+ CHECK_FOR_INTERRUPTS();
+
/*
* Bail out if any of the chunks errors out (ret<0). We ignore
* (ret>0) which is used to return number of nonmigrated pages,