|From:||Dilip Kumar <dilipbalaut(at)gmail(dot)com>|
|To:||Haribabu Kommi <kommi(dot)haribabu(at)gmail(dot)com>|
|Cc:||Robert Haas <robertmhaas(at)gmail(dot)com>, Rafia Sabih <rafia(dot)sabih(at)enterprisedb(dot)com>, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, Amit Khandekar <amitdkhan(dot)pg(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>|
|Subject:||Re: Parallel bitmap heap scan|
|Views:||Raw Message | Whole Thread | Download mbox|
On Tue, Jan 24, 2017 at 10:18 AM, Dilip Kumar <dilipbalaut(at)gmail(dot)com> wrote:
> I have changed as per the comments. 0002 and 0003 are changed, 0001 is
> still the same.
2 days back my colleague Rafia, reported one issue (offlist) that
parallel bitmap node is not scaling as good as other nodes e.g
parallel sequence scan and parallel index scan.
After some perf analysis, I found that there was one unconditional
spin lock in parallel bitmap patch which we were taking for checking
the prefetch target. Basically, we were always taking the lock and
checking the prefetch_target is reached to prefetch_maximum. So even
after it will reach to prefetch_maximum we will acquire the lock and
check after every tuple. I have changed that logic, now I will check
the condition first if we need to increase the target then will take
the lock and recheck the condition.
There is just one line change in 0003 compared to older version, all
other patches are the same.
Some performance data to show that new parallel bitmap patch performs
way better than the previous version.
TPCH scale 20, work_mem 64MB, shared buffers 8GB (4 workers)
machine intel 8 socket machine
v13(time in ms) v14 (time in ms)
Q6 37065.841 18202.903
Q14 15229.569 11341.121
|Next Message||Mithun Cy||2017-01-27 06:34:24||Re: Proposal : For Auto-Prewarm.|
|Previous Message||Erik Rijkers||2017-01-27 06:10:05||nodes.h - comments comment|