Re: Fast DSM segments
От | Thomas Munro |
---|---|
Тема | Re: Fast DSM segments |
Дата | |
Msg-id | CA+hUKGJn0afcbvcL528Qn-0nV692=iLaeKBfDPb+ftQb-SsbxQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Fast DSM segments (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Fast DSM segments
|
Список | pgsql-hackers |
On Sat, Jun 20, 2020 at 7:17 AM Andres Freund <andres@anarazel.de> wrote: > On 2020-06-19 17:42:41 +1200, Thomas Munro wrote: > > On Thu, Jun 18, 2020 at 6:05 PM Thomas Munro <thomas.munro@gmail.com> wrote: > > > Here's a version that adds some documentation. > > > > I jumped on a dual socket machine with 36 cores/72 threads and 144GB > > of RAM (Azure F72s_v2) running Linux, configured with 50GB of huge > > pages available, and I ran a very simple test: select count(*) from t > > t1 join t t2 using (i), where the table was created with create table > > t as select generate_series(1, 400000000)::int i, and then prewarmed > > into 20GB of shared_buffers. > > I assume all the data fits into 20GB? Yep. > Which kernel version is this? Tested on 4.19 (Debian stable/10). > How much of the benefit comes from huge pages being used, how much from > avoiding the dsm overhead, and how much from the page table being shared > for that mapping? Do you have a rough idea? Without huge pages, the 36 process version of the test mentioned above shows around a 1.1x speedup, which is in line with the numbers from my first message (which was from a much smaller computer). The rest of the speedup (2x) is due to huge pages. Further speedups are available by increasing the hash chunk size, and probably doing NUMA-aware allocation, in later work. Here's a new version, using the name min_dynamic_shared_memory, which sounds better to me. Any objections? I also fixed the GUC's maximum setting so that it's sure to fit in size_t.
Вложения
В списке pgsql-hackers по дате отправления: