Sv: Sv: Re: Query is over 2x slower with jit=on
Andreas Joseph Krogh <andreas@visena.com>
From: Andreas Joseph Krogh <andreas@visena.com>
To: pgsql-hackers@lists.postgresql.org
Date: 2018-04-26T11:06:50Z
Lists: pgsql-hackers
På onsdag 18. april 2018 kl. 18:26:03, skrev Andreas Joseph Krogh < andreas@visena.com <mailto:andreas@visena.com>>: På onsdag 18. april 2018 kl. 17:50:55, skrev Andres Freund <andres@anarazel.de <mailto:andres@anarazel.de>>: On 2018-04-18 17:35:31 +0200, Andreas Joseph Krogh wrote: > With jit=on: > https://explain.depesz.com/s/vYB > Planning Time: 0.336 ms > JIT: > Functions: 716 > Generation Time: 78.404 ms > Inlining: false > Inlining Time: 0.000 ms > Optimization: false > Optimization Time: 43.916 ms > Emission Time: 600.031 ms Any chance this is a debug LLVM build? > What's the deal with jit making it slower? JIT has cost, and sometimes it's not beneficial. Here our heuristics when to JIT appear to be a bit off. In the parallel world it's worse because the JITing is duplicated for parallel workers atm. PostgreSQL is built with "--enable-debug --with-llvm". LLVM is the one which comes with Ubuntu-17.10. Some more info; Without --enable-debug (seems this didn't impact performance mutch): First 5 executions (prepared-statement issued from psql) Planning Time: 47.634 ms JIT: Functions: 725 Generation Time: 74.748 ms Inlining: true Inlining Time: 90.763 ms Optimization: true Optimization Time: 5822.516 ms Emission Time: 3089.127 ms Execution Time: 16375.996 ms After 5 executions (prepared-statement issued from psql) Planning Time: 0.385 ms JIT: Functions: 716 Generation Time: 76.382 ms Inlining: false Inlining Time: 0.000 ms Optimization: false Optimization Time: 41.709 ms Emission Time: 613.074 ms Execution Time: 2031.830 ms jit=off: Planning Time: 0.171 ms Execution Time: 832.489 ms -- Andreas Joseph Krogh CTO / Partner - Visena AS Mobile: +47 909 56 963 andreas@visena.com <mailto:andreas@visena.com> www.visena.com <https://www.visena.com> <https://www.visena.com>
Commits
-
Fix issues around EXPLAIN with JIT.
- e97c4d967ba5 11.0 landed
- c03c1449c092 12.0 landed
-
Collect JIT instrumentation from workers.
- e63441c3f5ca 11.0 landed
- 33001fd7a707 12.0 landed
-
Make EXPLAIN output for JIT compilation more dense.
- 6859bd2632d8 11.0 landed
- 52050ad8ebec 12.0 landed
-
Save/restore SPI's global variables in SPI_connect() and SPI_finish().
- 825f10fbda7a 11.0 cited
-
Rationalize handling of single and double quotes in bootstrap data.
- 55d26ff638f0 11.0 cited