[ https://issues.apache.org/jira/browse/IMPALA-5444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17143839#comment-17143839 ]
Daniel Becker commented on IMPALA-5444: --------------------------------------- Single node performance benchmark comparing master (not the current one) with the patch, but with async codegen turned off: Report Generated on 2020-06-16 Run Description: "ad8f468871d3a893bf4c7b702025ec70765ce8e1 vs f9ffed62827b22a3bb1aa18c11e350dd9310ebbc" Cluster Name: UNKNOWN Lab Run Info: UNKNOWN Impala Version: impalad version 4.0.0-SNAPSHOT RELEASE () Baseline Impala Version: impalad version 4.0.0-SNAPSHOT RELEASE (2020-06-09) +----------+-----------------------+---------+------------+------------+----------------+ | Workload | File Format | Avg (s) | Delta(Avg) | GeoMean(s) | Delta(GeoMean) | +----------+-----------------------+---------+------------+------------+----------------+ | TPCDS(1) | parquet / none / none | 0.84 | -0.53% | 0.73 | -0.42% | +----------+-----------------------+---------+------------+------------+----------------+ +----------+-------------+-----------------------+--------+-------------+------------+-----------+----------------+-------+----------------+---------+-------+ | Workload | Query | File Format | Avg(s) | Base Avg(s) | Delta(Avg) | StdDev(%) | Base StdDev(%) | Iters | Median Diff(%) | MW Zval | Tval | +----------+-------------+-----------------------+--------+-------------+------------+-----------+----------------+-------+----------------+---------+-------+ | TPCDS(1) | TPCDS-Q2 | parquet / none / none | 0.59 | 0.58 | +1.85% | 7.17% | 6.27% | 30 | +0.72% | 1.07 | 1.05 | | TPCDS(1) | TPCDS-Q86A | parquet / none / none | 0.57 | 0.56 | +1.49% | 4.94% | 4.54% | 30 | +0.39% | 0.94 | 1.21 | | TPCDS(1) | TPCDS-Q39-2 | parquet / none / none | 0.56 | 0.55 | +1.60% | 4.18% | 4.60% | 30 | +0.20% | 2.00 | 1.40 | | TPCDS(1) | TPCDS-Q33 | parquet / none / none | 0.71 | 0.70 | +1.36% | 5.73% | 4.68% | 30 | +0.25% | 1.19 | 1.00 | | TPCDS(1) | TPCDS-Q98 | parquet / none / none | 0.50 | 0.50 | +1.08% | 3.96% | 4.66% | 30 | +0.12% | 0.65 | 0.96 | | TPCDS(1) | TPCDS-Q46 | parquet / none / none | 0.62 | 0.61 | +0.82% | 2.25% | 0.25% | 30 | +0.11% | 1.84 | 1.97 | | TPCDS(1) | TPCDS-Q88 | parquet / none / none | 0.93 | 0.93 | +0.64% | 4.60% | 3.84% | 30 | +0.07% | 0.05 | 0.59 | | TPCDS(1) | TPCDS-Q55 | parquet / none / none | 0.36 | 0.36 | +0.62% | 2.81% | 0.32% | 30 | +0.06% | 1.05 | 1.20 | | TPCDS(1) | TPCDS-Q53 | parquet / none / none | 0.62 | 0.61 | +0.53% | 2.24% | 1.54% | 30 | +0.11% | 2.51 | 1.05 | | TPCDS(1) | TPCDS-Q40 | parquet / none / none | 0.68 | 0.67 | +0.49% | 3.55% | 3.31% | 30 | +0.12% | 1.86 | 0.56 | | TPCDS(1) | TPCDS-Q11 | parquet / none / none | 1.36 | 1.36 | +0.49% | 3.94% | 3.86% | 30 | -0.01% | -0.02 | 0.48 | | TPCDS(1) | TPCDS-Q92 | parquet / none / none | 0.47 | 0.47 | +0.23% | 1.99% | 2.10% | 30 | +0.10% | 1.73 | 0.43 | | TPCDS(1) | TPCDS-Q84 | parquet / none / none | 0.71 | 0.71 | +0.15% | 0.27% | 0.21% | 30 | +0.12% | 2.08 | 2.44 | | TPCDS(1) | TPCDS-Q25 | parquet / none / none | 1.02 | 1.02 | +0.11% | 1.38% | 0.17% | 30 | +0.03% | 1.11 | 0.43 | | TPCDS(1) | TPCDS-Q81 | parquet / none / none | 1.13 | 1.13 | +0.14% | 2.85% | 1.94% | 30 | -0.02% | -0.55 | 0.22 | | TPCDS(1) | TPCDS-Q73 | parquet / none / none | 0.47 | 0.47 | +0.03% | 3.78% | 3.93% | 30 | +0.02% | 0.37 | 0.03 | | TPCDS(1) | TPCDS-Q79 | parquet / none / none | 0.51 | 0.51 | +0.04% | 0.53% | 0.51% | 30 | +0.01% | 0.15 | 0.27 | | TPCDS(1) | TPCDS-Q99 | parquet / none / none | 0.66 | 0.66 | +0.01% | 0.28% | 0.31% | 30 | +0.01% | 0.26 | 0.14 | | TPCDS(1) | TPCDS-Q18A | parquet / none / none | 1.47 | 1.47 | +0.03% | 2.71% | 3.13% | 30 | -0.02% | -0.12 | 0.03 | | TPCDS(1) | TPCDS-Q91 | parquet / none / none | 0.86 | 0.86 | -0.07% | 0.23% | 0.26% | 30 | -0.03% | -1.03 | -1.19 | | TPCDS(1) | TPCDS-Q76 | parquet / none / none | 0.91 | 0.92 | -0.08% | 0.23% | 0.27% | 30 | -0.03% | -1.02 | -1.27 | | TPCDS(1) | TPCDS-Q22A | parquet / none / none | 0.77 | 0.77 | -0.18% | 4.02% | 4.62% | 30 | +0.03% | 0.02 | -0.16 | | TPCDS(1) | TPCDS-Q15 | parquet / none / none | 0.51 | 0.51 | -0.10% | 0.29% | 0.30% | 30 | -0.06% | -1.44 | -1.27 | | TPCDS(1) | TPCDS-Q29 | parquet / none / none | 1.02 | 1.02 | -0.18% | 0.24% | 0.98% | 30 | -0.02% | -0.74 | -0.97 | | TPCDS(1) | TPCDS-Q97 | parquet / none / none | 0.28 | 0.28 | -0.20% | 8.68% | 8.47% | 30 | -0.01% | -0.09 | -0.09 | | TPCDS(1) | TPCDS-Q8 | parquet / none / none | 0.44 | 0.44 | -0.10% | 6.22% | 5.78% | 30 | -0.10% | -0.29 | -0.07 | | TPCDS(1) | TPCDS-Q3 | parquet / none / none | 0.36 | 0.36 | -0.16% | 0.32% | 0.35% | 30 | -0.11% | -2.17 | -1.81 | | TPCDS(1) | TPCDS-Q20 | parquet / none / none | 0.52 | 0.53 | -0.30% | 4.20% | 4.47% | 30 | -0.01% | -0.13 | -0.27 | | TPCDS(1) | TPCDS-Q54 | parquet / none / none | 0.81 | 0.81 | -0.27% | 2.77% | 2.71% | 30 | -0.08% | -0.66 | -0.39 | | TPCDS(1) | TPCDS-Q95 | parquet / none / none | 0.86 | 0.86 | -0.34% | 3.39% | 2.62% | 30 | -0.02% | -0.13 | -0.44 | | TPCDS(1) | TPCDS-Q80A | parquet / none / none | 2.15 | 2.15 | -0.33% | 2.90% | 3.07% | 30 | -0.06% | -0.29 | -0.43 | | TPCDS(1) | TPCDS-Q61 | parquet / none / none | 0.83 | 0.83 | -0.40% | 2.05% | 2.54% | 30 | -0.01% | -0.24 | -0.68 | | TPCDS(1) | TPCDS-Q13 | parquet / none / none | 2.29 | 2.30 | -0.31% | 1.67% | 1.21% | 30 | -0.12% | -0.68 | -0.81 | | TPCDS(1) | TPCDS-Q34 | parquet / none / none | 0.52 | 0.52 | -0.47% | 3.07% | 3.83% | 30 | +0.04% | 0.93 | -0.53 | | TPCDS(1) | TPCDS-Q78 | parquet / none / none | 0.63 | 0.64 | -0.39% | 5.11% | 4.86% | 30 | -0.05% | -0.52 | -0.31 | | TPCDS(1) | TPCDS-Q65 | parquet / none / none | 0.92 | 0.93 | -0.46% | 2.22% | 2.49% | 30 | +0.02% | 0.41 | -0.76 | | TPCDS(1) | TPCDS-Q42 | parquet / none / none | 0.36 | 0.36 | -0.49% | 2.73% | 3.66% | 30 | -0.01% | -0.23 | -0.58 | | TPCDS(1) | TPCDS-Q39-1 | parquet / none / none | 0.55 | 0.55 | -0.48% | 4.68% | 4.70% | 30 | -0.03% | -0.57 | -0.39 | | TPCDS(1) | TPCDS-Q50 | parquet / none / none | 0.77 | 0.77 | -0.50% | 1.64% | 2.38% | 30 | -0.02% | -0.60 | -0.96 | | TPCDS(1) | TPCDS-Q4 | parquet / none / none | 2.04 | 2.04 | -0.37% | 2.05% | 3.03% | 30 | -0.16% | -0.82 | -0.56 | | TPCDS(1) | TPCDS-Q6 | parquet / none / none | 0.89 | 0.90 | -0.55% | 2.94% | 3.09% | 30 | -0.00% | -0.09 | -0.70 | | TPCDS(1) | TPCDS-Q17 | parquet / none / none | 1.02 | 1.02 | -0.54% | 0.24% | 1.54% | 30 | -0.03% | -0.69 | -1.91 | | TPCDS(1) | TPCDS-Q32 | parquet / none / none | 0.46 | 0.47 | -0.51% | 0.55% | 2.02% | 30 | -0.07% | -1.10 | -1.33 | | TPCDS(1) | TPCDS-Q68 | parquet / none / none | 0.62 | 0.63 | -0.53% | 3.16% | 3.48% | 30 | -0.05% | -0.85 | -0.62 | | TPCDS(1) | TPCDS-Q96 | parquet / none / none | 0.41 | 0.41 | -0.33% | 0.52% | 0.61% | 30 | -0.26% | -1.95 | -2.28 | | TPCDS(1) | TPCDS-Q7 | parquet / none / none | 0.57 | 0.57 | -0.63% | 3.12% | 4.30% | 30 | -0.02% | -1.17 | -0.65 | | TPCDS(1) | TPCDS-Q62 | parquet / none / none | 0.66 | 0.67 | -0.60% | 0.30% | 1.94% | 30 | -0.06% | -1.94 | -1.68 | | TPCDS(1) | TPCDS-Q41 | parquet / none / none | 0.32 | 0.32 | -0.67% | 4.13% | 5.18% | 30 | -0.03% | -0.32 | -0.55 | | TPCDS(1) | TPCDS-Q71 | parquet / none / none | 0.47 | 0.47 | -0.68% | 3.38% | 4.07% | 30 | -0.02% | -0.40 | -0.71 | | TPCDS(1) | TPCDS-Q19 | parquet / none / none | 0.75 | 0.75 | -0.68% | 3.32% | 3.47% | 30 | -0.04% | -0.54 | -0.78 | | TPCDS(1) | TPCDS-Q64 | parquet / none / none | 2.57 | 2.58 | -0.50% | 1.38% | 1.41% | 30 | -0.24% | -1.89 | -1.39 | | TPCDS(1) | TPCDS-Q74 | parquet / none / none | 1.23 | 1.24 | -0.59% | 3.49% | 3.52% | 30 | -0.17% | -0.97 | -0.65 | | TPCDS(1) | TPCDS-Q75 | parquet / none / none | 1.45 | 1.46 | -0.65% | 2.16% | 2.13% | 30 | -0.19% | -1.64 | -1.17 | | TPCDS(1) | TPCDS-Q43 | parquet / none / none | 0.42 | 0.42 | -0.96% | 3.85% | 5.03% | 30 | +0.13% | 1.25 | -0.84 | | TPCDS(1) | TPCDS-Q16 | parquet / none / none | 0.70 | 0.71 | -0.96% | 3.42% | 3.42% | 30 | -0.07% | -0.77 | -1.09 | | TPCDS(1) | TPCDS-Q1 | parquet / none / none | 0.92 | 0.93 | -0.70% | 1.97% | 2.39% | 30 | -0.34% | -1.83 | -1.24 | | TPCDS(1) | TPCDS-Q56 | parquet / none / none | 0.79 | 0.80 | -0.91% | 3.88% | 4.31% | 30 | -0.16% | -0.99 | -0.86 | | TPCDS(1) | TPCDS-Q52 | parquet / none / none | 0.36 | 0.36 | -1.06% | 0.32% | 3.74% | 30 | -0.03% | -0.55 | -1.55 | | TPCDS(1) | TPCDS-Q82 | parquet / none / none | 0.50 | 0.50 | -0.90% | 4.18% | 3.61% | 30 | -0.21% | -2.08 | -0.90 | | TPCDS(1) | TPCDS-Q77A | parquet / none / none | 2.14 | 2.15 | -0.66% | 2.56% | 2.53% | 30 | -0.46% | -1.10 | -1.00 | | TPCDS(1) | TPCDS-Q21 | parquet / none / none | 0.54 | 0.55 | -1.05% | 4.84% | 4.58% | 30 | -0.12% | -1.03 | -0.87 | | TPCDS(1) | TPCDS-Q70A | parquet / none / none | 1.08 | 1.09 | -0.93% | 2.89% | 4.19% | 30 | -0.33% | -0.77 | -1.01 | | TPCDS(1) | TPCDS-Q37 | parquet / none / none | 0.50 | 0.51 | -1.18% | 4.48% | 3.66% | 30 | -0.22% | -1.44 | -1.13 | | TPCDS(1) | TPCDS-Q51 | parquet / none / none | 0.42 | 0.42 | -1.45% | 8.51% | 9.31% | 30 | -0.15% | -0.46 | -0.63 | | TPCDS(1) | TPCDS-Q94 | parquet / none / none | 0.70 | 0.71 | -1.52% | 3.77% | 3.15% | 30 | -0.23% | -1.52 | -1.71 | | TPCDS(1) | TPCDS-Q12 | parquet / none / none | 0.53 | 0.54 | -1.67% | 4.71% | 5.04% | 30 | -0.22% | -1.25 | -1.33 | | TPCDS(1) | TPCDS-Q10A | parquet / none / none | 0.73 | 0.74 | -1.57% | 2.73% | 3.55% | 30 | -0.39% | -1.59 | -1.93 | | TPCDS(1) | TPCDS-Q69 | parquet / none / none | 0.96 | 0.99 | -2.31% | 3.06% | 3.95% | 30 | -0.45% | -2.45 | -2.56 | | TPCDS(1) | TPCDS-Q60 | parquet / none / none | 0.76 | 0.78 | -2.38% | 4.49% | 4.42% | 30 | -0.79% | -2.17 | -2.10 | | TPCDS(1) | TPCDS-Q51A | parquet / none / none | 1.33 | 1.36 | -1.97% | 3.11% | 4.33% | 30 | -1.63% | -1.64 | -2.04 | | TPCDS(1) | TPCDS-Q72 | parquet / none / none | 1.33 | 1.35 | -2.15% | 1.34% | 1.81% | 30 | -3.79% | -3.69 | -5.27 | | TPCDS(1) | TPCDS-Q67A | parquet / none / none | 1.85 | 1.92 | -3.76% | 3.39% | 4.37% | 30 | -3.14% | -2.87 | -3.78 | +----------+-------------+-----------------------+--------+-------------+------------+-----------+----------------+-------+----------------+---------+-------+ > Asynchronous code generation > ---------------------------- > > Key: IMPALA-5444 > URL: https://issues.apache.org/jira/browse/IMPALA-5444 > Project: IMPALA > Issue Type: Improvement > Components: Backend > Reporter: Michael Ho > Assignee: Daniel Becker > Priority: Minor > Labels: codegen > > Currently, codegen happens during the preparation phase of a query fragment. > In other words, the query fragment cannot start running until the code > generation is complete. There are queries in which the code generation time > is taking a huge amount of time. While we should disable codegen in some exec > nodes if we can accurately estimate in the planner that running without > codegen will be better off (e.g. number of rows to process is relatively > small), we will still pay the price if say the stats is stale or the > estimation is off. > With async codegen, the idea is that we should run the code generation in a > separate thread so that codegen is not on the critical path of the query > execution. Once codegen completes for a fragment, we can atomically swap the > function pointers of compiled functions embedded in the exec nodes. The exec > nodes all currently support falling back to interpretation if the codegend > functions don't exist anyway (i.e. the pointer to the compiled function is > NULL). In some cases, it can occur that the query may run to completion > before codegen completes. Once IMPALA-3259 is fixed (if feasible), we should > be able to cancel the codegen execution. > Another thing to note is that we should be able to bound the codegen work to > a set of threads in thread pool so as to control the CPU and memory resources > consumed by codegen. > Another potential extension of this decoupling is IMPALA-9660. -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org For additional commands, e-mail: issues-all-h...@impala.apache.org