Re: pgsql: Introduce pg_shmem_allocations_numa view
От | Bertrand Drouvot |
---|---|
Тема | Re: pgsql: Introduce pg_shmem_allocations_numa view |
Дата | |
Msg-id | aFuRoUieUVh+pMfZ@ip-10-97-1-34.eu-west-3.compute.internal обсуждение исходный текст |
Ответ на | Re: pgsql: Introduce pg_shmem_allocations_numa view (Tomas Vondra <tomas@vondra.me>) |
Ответы |
Re: pgsql: Introduce pg_shmem_allocations_numa view
|
Список | pgsql-hackers |
Hi, On Tue, Jun 24, 2025 at 04:41:33PM +0200, Christoph Berg wrote: > Re: Bertrand Drouvot > > Yes, I think compat_uptr_t usage is missing in do_pages_stat() (while it's used > > in do_pages_move()). > > I was also reading the kernel source around that place but you spotted > the problem before me. This patch resolves the issue here: > > diff --git a/mm/migrate.c b/mm/migrate.c > index 8cf0f9c9599..542c81ec3ed 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2444,7 +2444,13 @@ static int do_pages_stat(struct mm_struct *mm, unsigned long nr_pages, > if (copy_to_user(status, chunk_status, chunk_nr * sizeof(*status))) > break; > > - pages += chunk_nr; > + if (in_compat_syscall()) { > + compat_uptr_t __user *pages32 = (compat_uptr_t __user *)pages; > + > + pages32 += chunk_nr; > + pages = (const void __user * __user *) pages32; > + } else > + pages += chunk_nr; > status += chunk_nr; > nr_pages -= chunk_nr; > } > Thanks! Yeah, I had the same kind of patch idea in mind. > > + #define NUMA_QUERY_CHUNK_SIZE 16 /* has to be <= DO_PAGES_STAT_CHUNK_NR (do_pages_stat())*/ > > + > > + for (uint64 chunk_start = 0; chunk_start < shm_ent_page_count; chunk_start += NUMA_QUERY_CHUNK_SIZE){ > > Perhaps optimize it to this: > > #if sizeof(void *) == 4 > #define NUMA_QUERY_CHUNK_SIZE 16 /* has to be <= DO_PAGES_STAT_CHUNK_NR (do_pages_stat())*/ > #else > #define NUMA_QUERY_CHUNK_SIZE 1024 > #endif > > ... or some other bigger number. I had in mind to split the batch size on the PG side only for 32-bits, what about the attached? Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Вложения
В списке pgsql-hackers по дате отправления: