This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new dc5565a65 Publish built docs triggered by 
e72beb1faaba39d45e05e537d9b84151db7e73ff
dc5565a65 is described below

commit dc5565a655fcae2ff0cda2cb74c27ec9cc9a6d80
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Jan 6 23:29:04 2025 +0000

    Publish built docs triggered by e72beb1faaba39d45e05e537d9b84151db7e73ff
---
 _sources/user-guide/configs.md.txt              |   1 -
 _sources/user-guide/tuning.md.txt               |  57 ++++++++-
 _static/pygments.css                            | 148 ++++++++++++------------
 contributor-guide/adding_a_new_expression.html  |   2 +-
 contributor-guide/benchmark-results/tpc-ds.html |   2 +-
 contributor-guide/benchmark-results/tpc-h.html  |   2 +-
 contributor-guide/benchmarking.html             |   2 +-
 contributor-guide/contributing.html             |   2 +-
 contributor-guide/debugging.html                |   2 +-
 contributor-guide/development.html              |   2 +-
 contributor-guide/plugin_overview.html          |   2 +-
 contributor-guide/profiling_native_code.html    |   2 +-
 contributor-guide/spark-sql-tests.html          |   2 +-
 genindex.html                                   |   2 +-
 index.html                                      |   2 +-
 search.html                                     |   2 +-
 searchindex.js                                  |   2 +-
 user-guide/compatibility.html                   |   2 +-
 user-guide/configs.html                         |  68 +++++------
 user-guide/datasources.html                     |   2 +-
 user-guide/datatypes.html                       |   2 +-
 user-guide/expressions.html                     |   2 +-
 user-guide/installation.html                    |   2 +-
 user-guide/kubernetes.html                      |   2 +-
 user-guide/metrics.html                         |   2 +-
 user-guide/operators.html                       |   2 +-
 user-guide/overview.html                        |   2 +-
 user-guide/source.html                          |   2 +-
 user-guide/tuning.html                          |  52 ++++++++-
 29 files changed, 228 insertions(+), 146 deletions(-)

diff --git a/_sources/user-guide/configs.md.txt 
b/_sources/user-guide/configs.md.txt
index ecea70254..20923b93a 100644
--- a/_sources/user-guide/configs.md.txt
+++ b/_sources/user-guide/configs.md.txt
@@ -47,7 +47,6 @@ Comet provides the following configuration settings.
 | spark.comet.exec.globalLimit.enabled | Whether to enable globalLimit by 
default. | true |
 | spark.comet.exec.hashJoin.enabled | Whether to enable hashJoin by default. | 
true |
 | spark.comet.exec.localLimit.enabled | Whether to enable localLimit by 
default. | true |
-| spark.comet.exec.memoryFraction | The fraction of memory from Comet memory 
overhead that the native memory manager can use for execution. The purpose of 
this config is to set aside memory for untracked data structures, as well as 
imprecise size estimation during memory acquisition. | 0.7 |
 | spark.comet.exec.memoryPool | The type of memory pool to be used for Comet 
native execution. Available memory pool types are 'greedy', 'fair_spill', 
'greedy_task_shared', 'fair_spill_task_shared', 'greedy_global' and 
'fair_spill_global', By default, this config is 'greedy_task_shared'. | 
greedy_task_shared |
 | spark.comet.exec.project.enabled | Whether to enable project by default. | 
true |
 | spark.comet.exec.replaceSortMergeJoin | Experimental feature to force Spark 
to replace SortMergeJoin with ShuffledHashJoin for improved performance. This 
feature is not stable yet. For more information, refer to the Comet Tuning 
Guide (https://datafusion.apache.org/comet/user-guide/tuning.html). | false |
diff --git a/_sources/user-guide/tuning.md.txt 
b/_sources/user-guide/tuning.md.txt
index e04e750b4..30b6d0f46 100644
--- a/_sources/user-guide/tuning.md.txt
+++ b/_sources/user-guide/tuning.md.txt
@@ -23,11 +23,52 @@ Comet provides some tuning options to help you get the best 
performance from you
 
 ## Memory Tuning
 
-Comet shares an off-heap memory pool between Spark and Comet. This requires 
setting `spark.memory.offHeap.enabled=true`.
-If this setting is not enabled, Comet will not accelerate queries and will 
fall back to Spark.
+### Unified Memory Management with Off-Heap Memory
+
+The recommended way to share memory between Spark and Comet is to set 
`spark.memory.offHeap.enabled=true`. This allows
+Comet to share an off-heap memory pool with Spark. The size of the pool is 
specified by `spark.memory.offHeap.size`. For more details about Spark off-heap 
memory mode, please refer to Spark documentation: 
https://spark.apache.org/docs/latest/configuration.html.
+
+### Dedicated Comet Memory Pools
+
+Spark uses on-heap memory mode by default, i.e., the 
`spark.memory.offHeap.enabled` setting is not enabled. If Spark is under 
on-heap memory mode, Comet will use its own dedicated memory pools that
+are not shared with Spark. This requires additional configuration settings to 
be specified to set the size and type of
+memory pool to use.
+
+The size of the pool can be set explicitly with `spark.comet.memoryOverhead`. 
If this setting is not specified then
+the memory overhead will be calculated by multiplying the executor memory by 
`spark.comet.memory.overhead.factor`
+(defaults to `0.2`).
+
+The type of pool can be specified with `spark.comet.exec.memoryPool`. The 
default setting is `greedy_task_shared`.
+
+The valid pool types are:
+
+- `greedy`
+- `greedy_global`
+- `greedy_task_shared`
+- `fair_spill`
+- `fair_spill_global`
+- `fair_spill_task_shared`
+
+Pool types ending with `_global` use a single global memory pool between all 
tasks on same executor.
+
+Pool types ending with `_task_shared` share a single memory pool across all 
attempts for a single task.
+
+Other pool types create a dedicated pool per native query plan using a 
fraction of the available pool size based on number of cores 
+and cores per task.
+
+The `greedy*` pool types use DataFusion's [GreedyMemoryPool], which implements 
a greedy first-come first-serve limit. This
+pool works well for queries that do not need to spill or have a single 
spillable operator.
+
+The `fair_spill*` pool types use DataFusion's [FairSpillPool], which prevents 
spillable reservations from using more
+than an even fraction of the available memory sans any unspillable reservations
+(i.e. `(pool_size - unspillable_memory) / num_spillable_reservations)`). This 
pool works best when you know beforehand
+the query has multiple spillable operators that will likely all need to spill. 
Sometimes it will cause spills even
+when there was sufficient memory (reserved for other operators) to avoid doing 
so. Unspillable memory is allocated in
+a first-come, first-serve fashion
+
+[GreedyMemoryPool]: 
https://docs.rs/datafusion/latest/datafusion/execution/memory_pool/struct.GreedyMemoryPool.html
+[FairSpillPool]: 
https://docs.rs/datafusion/latest/datafusion/execution/memory_pool/struct.FairSpillPool.html
 
-Each executor will have a single memory pool which will be shared by all 
native plans being executed within that
-process, and by Spark itself. The size of the pool is specified by 
`spark.memory.offHeap.size`.
 
 ### Determining How Much Memory to Allocate
 
@@ -106,15 +147,19 @@ then any shuffle operations that cannot be supported in 
this mode will fall back
 ### Shuffle Compression
 
 By default, Spark compresses shuffle files using LZ4 compression. Comet 
overrides this behavior with ZSTD compression.
-Compression can be disabled by setting `spark.shuffle.compress=false`, which 
may result in faster shuffle times in 
+Compression can be disabled by setting `spark.shuffle.compress=false`, which 
may result in faster shuffle times in
 certain environments, such as single-node setups with fast NVMe drives, at the 
expense of increased disk space usage.
 
 ## Explain Plan
+
 ### Extended Explain
+
 With Spark 4.0.0 and newer, Comet can provide extended explain plan 
information in the Spark UI. Currently this lists
 reasons why Comet may not have been enabled for specific operations.
 To enable this, in the Spark configuration, set the following:
+
 ```shell
 -c spark.sql.extendedExplainProviders=org.apache.comet.ExtendedExplainInfo
 ```
-This will add a section to the detailed plan displayed in the Spark SQL UI 
page.
\ No newline at end of file
+
+This will add a section to the detailed plan displayed in the Spark SQL UI 
page.
diff --git a/_static/pygments.css b/_static/pygments.css
index 6110e9f1a..041d38c7c 100644
--- a/_static/pygments.css
+++ b/_static/pygments.css
@@ -5,80 +5,80 @@ td.linenos .special { color: #000000; background-color: 
#ffffc0; padding-left: 5
 span.linenos.special { color: #000000; background-color: #ffffc0; 
padding-left: 5px; padding-right: 5px; }
 .highlight .hll { background-color: #ffffcc }
 .highlight { background: #f8f8f8; }
-.highlight .c { color: #8f5902; font-style: italic } /* Comment */
-.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
-.highlight .g { color: #000000 } /* Generic */
-.highlight .k { color: #204a87; font-weight: bold } /* Keyword */
-.highlight .l { color: #000000 } /* Literal */
-.highlight .n { color: #000000 } /* Name */
-.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */
-.highlight .x { color: #000000 } /* Other */
-.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
-.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
-.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile 
*/
-.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #a40000 } /* Generic.Deleted */
-.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
-.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* 
Generic.EmphStrong */
-.highlight .gr { color: #ef2929 } /* Generic.Error */
+.highlight .c { color: #8F5902; font-style: italic } /* Comment */
+.highlight .err { color: #A40000; border: 1px solid #EF2929 } /* Error */
+.highlight .g { color: #000 } /* Generic */
+.highlight .k { color: #204A87; font-weight: bold } /* Keyword */
+.highlight .l { color: #000 } /* Literal */
+.highlight .n { color: #000 } /* Name */
+.highlight .o { color: #CE5C00; font-weight: bold } /* Operator */
+.highlight .x { color: #000 } /* Other */
+.highlight .p { color: #000; font-weight: bold } /* Punctuation */
+.highlight .ch { color: #8F5902; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #8F5902; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #8F5902; font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: #8F5902; font-style: italic } /* Comment.PreprocFile 
*/
+.highlight .c1 { color: #8F5902; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #8F5902; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #A40000 } /* Generic.Deleted */
+.highlight .ge { color: #000; font-style: italic } /* Generic.Emph */
+.highlight .ges { color: #000; font-weight: bold; font-style: italic } /* 
Generic.EmphStrong */
+.highlight .gr { color: #EF2929 } /* Generic.Error */
 .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
 .highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #000000; font-style: italic } /* Generic.Output */
-.highlight .gp { color: #8f5902 } /* Generic.Prompt */
-.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
+.highlight .go { color: #000; font-style: italic } /* Generic.Output */
+.highlight .gp { color: #8F5902 } /* Generic.Prompt */
+.highlight .gs { color: #000; font-weight: bold } /* Generic.Strong */
 .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
-.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */
-.highlight .ld { color: #000000 } /* Literal.Date */
-.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */
-.highlight .s { color: #4e9a06 } /* Literal.String */
-.highlight .na { color: #c4a000 } /* Name.Attribute */
-.highlight .nb { color: #204a87 } /* Name.Builtin */
-.highlight .nc { color: #000000 } /* Name.Class */
-.highlight .no { color: #000000 } /* Name.Constant */
-.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #ce5c00 } /* Name.Entity */
-.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #000000 } /* Name.Function */
-.highlight .nl { color: #f57900 } /* Name.Label */
-.highlight .nn { color: #000000 } /* Name.Namespace */
-.highlight .nx { color: #000000 } /* Name.Other */
-.highlight .py { color: #000000 } /* Name.Property */
-.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #000000 } /* Name.Variable */
-.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */
-.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */
-.highlight .w { color: #f8f8f8 } /* Text.Whitespace */
-.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */
-.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
-.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
-.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer 
*/
-.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
-.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
-.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
-.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
-.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
-.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
-.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
-.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
-.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
-.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
-.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
-.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
-.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
-.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #000000 } /* Name.Function.Magic */
-.highlight .vc { color: #000000 } /* Name.Variable.Class */
-.highlight .vg { color: #000000 } /* Name.Variable.Global */
-.highlight .vi { color: #000000 } /* Name.Variable.Instance */
-.highlight .vm { color: #000000 } /* Name.Variable.Magic */
-.highlight .il { color: #0000cf; font-weight: bold } /* 
Literal.Number.Integer.Long */
\ No newline at end of file
+.highlight .gt { color: #A40000; font-weight: bold } /* Generic.Traceback */
+.highlight .kc { color: #204A87; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #204A87; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #204A87; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #204A87; font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: #204A87; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #204A87; font-weight: bold } /* Keyword.Type */
+.highlight .ld { color: #000 } /* Literal.Date */
+.highlight .m { color: #0000CF; font-weight: bold } /* Literal.Number */
+.highlight .s { color: #4E9A06 } /* Literal.String */
+.highlight .na { color: #C4A000 } /* Name.Attribute */
+.highlight .nb { color: #204A87 } /* Name.Builtin */
+.highlight .nc { color: #000 } /* Name.Class */
+.highlight .no { color: #000 } /* Name.Constant */
+.highlight .nd { color: #5C35CC; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #CE5C00 } /* Name.Entity */
+.highlight .ne { color: #C00; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #000 } /* Name.Function */
+.highlight .nl { color: #F57900 } /* Name.Label */
+.highlight .nn { color: #000 } /* Name.Namespace */
+.highlight .nx { color: #000 } /* Name.Other */
+.highlight .py { color: #000 } /* Name.Property */
+.highlight .nt { color: #204A87; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #000 } /* Name.Variable */
+.highlight .ow { color: #204A87; font-weight: bold } /* Operator.Word */
+.highlight .pm { color: #000; font-weight: bold } /* Punctuation.Marker */
+.highlight .w { color: #F8F8F8 } /* Text.Whitespace */
+.highlight .mb { color: #0000CF; font-weight: bold } /* Literal.Number.Bin */
+.highlight .mf { color: #0000CF; font-weight: bold } /* Literal.Number.Float */
+.highlight .mh { color: #0000CF; font-weight: bold } /* Literal.Number.Hex */
+.highlight .mi { color: #0000CF; font-weight: bold } /* Literal.Number.Integer 
*/
+.highlight .mo { color: #0000CF; font-weight: bold } /* Literal.Number.Oct */
+.highlight .sa { color: #4E9A06 } /* Literal.String.Affix */
+.highlight .sb { color: #4E9A06 } /* Literal.String.Backtick */
+.highlight .sc { color: #4E9A06 } /* Literal.String.Char */
+.highlight .dl { color: #4E9A06 } /* Literal.String.Delimiter */
+.highlight .sd { color: #8F5902; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4E9A06 } /* Literal.String.Double */
+.highlight .se { color: #4E9A06 } /* Literal.String.Escape */
+.highlight .sh { color: #4E9A06 } /* Literal.String.Heredoc */
+.highlight .si { color: #4E9A06 } /* Literal.String.Interpol */
+.highlight .sx { color: #4E9A06 } /* Literal.String.Other */
+.highlight .sr { color: #4E9A06 } /* Literal.String.Regex */
+.highlight .s1 { color: #4E9A06 } /* Literal.String.Single */
+.highlight .ss { color: #4E9A06 } /* Literal.String.Symbol */
+.highlight .bp { color: #3465A4 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #000 } /* Name.Function.Magic */
+.highlight .vc { color: #000 } /* Name.Variable.Class */
+.highlight .vg { color: #000 } /* Name.Variable.Global */
+.highlight .vi { color: #000 } /* Name.Variable.Instance */
+.highlight .vm { color: #000 } /* Name.Variable.Magic */
+.highlight .il { color: #0000CF; font-weight: bold } /* 
Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/contributor-guide/adding_a_new_expression.html 
b/contributor-guide/adding_a_new_expression.html
index 9e4cdfe8d..23f88d096 100644
--- a/contributor-guide/adding_a_new_expression.html
+++ b/contributor-guide/adding_a_new_expression.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/benchmark-results/tpc-ds.html 
b/contributor-guide/benchmark-results/tpc-ds.html
index 4be70258d..2cef3ebc7 100644
--- a/contributor-guide/benchmark-results/tpc-ds.html
+++ b/contributor-guide/benchmark-results/tpc-ds.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/benchmark-results/tpc-h.html 
b/contributor-guide/benchmark-results/tpc-h.html
index 5966c09a0..fa05dc077 100644
--- a/contributor-guide/benchmark-results/tpc-h.html
+++ b/contributor-guide/benchmark-results/tpc-h.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/benchmarking.html 
b/contributor-guide/benchmarking.html
index 84104d6eb..75347efad 100644
--- a/contributor-guide/benchmarking.html
+++ b/contributor-guide/benchmarking.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/contributing.html 
b/contributor-guide/contributing.html
index c38dd007e..d4848d73e 100644
--- a/contributor-guide/contributing.html
+++ b/contributor-guide/contributing.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/debugging.html b/contributor-guide/debugging.html
index e113c3a3e..8b4185e33 100644
--- a/contributor-guide/debugging.html
+++ b/contributor-guide/debugging.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/development.html 
b/contributor-guide/development.html
index 53cc8c6b8..13eb09026 100644
--- a/contributor-guide/development.html
+++ b/contributor-guide/development.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/plugin_overview.html 
b/contributor-guide/plugin_overview.html
index b305f31d9..33ef28173 100644
--- a/contributor-guide/plugin_overview.html
+++ b/contributor-guide/plugin_overview.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/profiling_native_code.html 
b/contributor-guide/profiling_native_code.html
index d7447b4ab..014fb9c95 100644
--- a/contributor-guide/profiling_native_code.html
+++ b/contributor-guide/profiling_native_code.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/contributor-guide/spark-sql-tests.html 
b/contributor-guide/spark-sql-tests.html
index eb889e23f..b66325493 100644
--- a/contributor-guide/spark-sql-tests.html
+++ b/contributor-guide/spark-sql-tests.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/genindex.html b/genindex.html
index f82e69643..4d85af0cb 100644
--- a/genindex.html
+++ b/genindex.html
@@ -40,7 +40,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/index.html b/index.html
index a99fb3605..22616d4f8 100644
--- a/index.html
+++ b/index.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/search.html b/search.html
index bbec4adc4..fb7a5b03e 100644
--- a/search.html
+++ b/search.html
@@ -40,7 +40,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/searchindex.js b/searchindex.js
index 1bc13a52d..e2b979621 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"1. Install Comet": [[9, "install-comet"]], "2. 
Clone Spark and Apply Diff": [[9, "clone-spark-and-apply-diff"]], "3. Run Spark 
SQL Tests": [[9, "run-spark-sql-tests"]], "ANSI mode": [[11, "ansi-mode"]], 
"API Differences Between Spark Versions": [[0, 
"api-differences-between-spark-versions"]], "ASF Links": [[10, null]], "Adding 
Spark-side Tests for the New Expression": [[0, 
"adding-spark-side-tests-for-the-new-expression"]], "Adding a New Expression": 
[[0,  [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"1. Install Comet": [[9, "install-comet"]], "2. 
Clone Spark and Apply Diff": [[9, "clone-spark-and-apply-diff"]], "3. Run Spark 
SQL Tests": [[9, "run-spark-sql-tests"]], "ANSI mode": [[11, "ansi-mode"]], 
"API Differences Between Spark Versions": [[0, 
"api-differences-between-spark-versions"]], "ASF Links": [[10, null]], "Adding 
Spark-side Tests for the New Expression": [[0, 
"adding-spark-side-tests-for-the-new-expression"]], "Adding a New Expression": 
[[0,  [...]
\ No newline at end of file
diff --git a/user-guide/compatibility.html b/user-guide/compatibility.html
index d8020b57d..e21c2f487 100644
--- a/user-guide/compatibility.html
+++ b/user-guide/compatibility.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/configs.html b/user-guide/configs.html
index ff5ac6112..a34c52f6f 100644
--- a/user-guide/configs.html
+++ b/user-guide/configs.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
@@ -434,131 +434,127 @@ under the License.
 <td><p>Whether to enable localLimit by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.memoryFraction</p></td>
-<td><p>The fraction of memory from Comet memory overhead that the native 
memory manager can use for execution. The purpose of this config is to set 
aside memory for untracked data structures, as well as imprecise size 
estimation during memory acquisition.</p></td>
-<td><p>0.7</p></td>
-</tr>
-<tr class="row-odd"><td><p>spark.comet.exec.memoryPool</p></td>
+<tr class="row-even"><td><p>spark.comet.exec.memoryPool</p></td>
 <td><p>The type of memory pool to be used for Comet native execution. 
Available memory pool types are ‘greedy’, ‘fair_spill’, ‘greedy_task_shared’, 
‘fair_spill_task_shared’, ‘greedy_global’ and ‘fair_spill_global’, By default, 
this config is ‘greedy_task_shared’.</p></td>
 <td><p>greedy_task_shared</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.project.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.project.enabled</p></td>
 <td><p>Whether to enable project by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.exec.replaceSortMergeJoin</p></td>
+<tr class="row-even"><td><p>spark.comet.exec.replaceSortMergeJoin</p></td>
 <td><p>Experimental feature to force Spark to replace SortMergeJoin with 
ShuffledHashJoin for improved performance. This feature is not stable yet. For 
more information, refer to the Comet Tuning Guide 
(https://datafusion.apache.org/comet/user-guide/tuning.html).</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.shuffle.compression.codec</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.shuffle.compression.codec</p></td>
 <td><p>The codec of Comet native shuffle used to compress shuffle data. Only 
zstd is supported. Compression can be disabled by setting 
spark.shuffle.compress=false.</p></td>
 <td><p>zstd</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.exec.shuffle.compression.level</p></td>
+<tr class="row-even"><td><p>spark.comet.exec.shuffle.compression.level</p></td>
 <td><p>The compression level to use when compression shuffle files.</p></td>
 <td><p>1</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.shuffle.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.shuffle.enabled</p></td>
 <td><p>Whether to enable Comet native shuffle. Note that this requires setting 
‘spark.shuffle.manager’ to 
‘org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager’. 
‘spark.shuffle.manager’ must be set before starting the Spark application and 
cannot be changed during the application.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.exec.sort.enabled</p></td>
+<tr class="row-even"><td><p>spark.comet.exec.sort.enabled</p></td>
 <td><p>Whether to enable sort by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.sortMergeJoin.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.sortMergeJoin.enabled</p></td>
 <td><p>Whether to enable sortMergeJoin by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.exec.sortMergeJoinWithJoinFilter.enabled</p></td>
+<tr 
class="row-even"><td><p>spark.comet.exec.sortMergeJoinWithJoinFilter.enabled</p></td>
 <td><p>Experimental support for Sort Merge Join with filter</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.stddev.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.stddev.enabled</p></td>
 <td><p>Whether to enable stddev by default. stddev is slower than Spark’s 
implementation.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.exec.takeOrderedAndProject.enabled</p></td>
+<tr 
class="row-even"><td><p>spark.comet.exec.takeOrderedAndProject.enabled</p></td>
 <td><p>Whether to enable takeOrderedAndProject by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.exec.union.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.exec.union.enabled</p></td>
 <td><p>Whether to enable union by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.exec.window.enabled</p></td>
+<tr class="row-even"><td><p>spark.comet.exec.window.enabled</p></td>
 <td><p>Whether to enable window by default.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.explain.native.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.explain.native.enabled</p></td>
 <td><p>When this setting is enabled, Comet will provide a tree representation 
of the native query plan before execution and again after execution, with 
metrics.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.explain.verbose.enabled</p></td>
+<tr class="row-even"><td><p>spark.comet.explain.verbose.enabled</p></td>
 <td><p>When this setting is enabled, Comet will provide a verbose tree 
representation of the extended information.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.explainFallback.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.explainFallback.enabled</p></td>
 <td><p>When this setting is enabled, Comet will provide logging explaining the 
reason(s) why a query stage cannot be executed natively. Set this to false to 
reduce the amount of logging.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.memory.overhead.factor</p></td>
+<tr class="row-even"><td><p>spark.comet.memory.overhead.factor</p></td>
 <td><p>Fraction of executor memory to be allocated as additional non-heap 
memory per executor process for Comet.</p></td>
 <td><p>0.2</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.memory.overhead.min</p></td>
+<tr class="row-odd"><td><p>spark.comet.memory.overhead.min</p></td>
 <td><p>Minimum amount of additional memory to be allocated per executor 
process for Comet, in MiB.</p></td>
 <td><p>402653184b</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.nativeLoadRequired</p></td>
+<tr class="row-even"><td><p>spark.comet.nativeLoadRequired</p></td>
 <td><p>Whether to require Comet native library to load successfully when Comet 
is enabled. If not, Comet will silently fallback to Spark when it fails to load 
the native lib. Otherwise, an error will be thrown and the Spark job will be 
aborted.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.parquet.enable.directBuffer</p></td>
+<tr class="row-odd"><td><p>spark.comet.parquet.enable.directBuffer</p></td>
 <td><p>Whether to use Java direct byte buffer when reading Parquet.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.parquet.read.io.adjust.readRange.skew</p></td>
+<tr 
class="row-even"><td><p>spark.comet.parquet.read.io.adjust.readRange.skew</p></td>
 <td><p>In the parallel reader, if the read ranges submitted are skewed in 
sizes, this option will cause the reader to break up larger read ranges into 
smaller ranges to reduce the skew. This will result in a slightly larger number 
of connections opened to the file system but may give improved 
performance.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.parquet.read.io.mergeRanges</p></td>
+<tr class="row-odd"><td><p>spark.comet.parquet.read.io.mergeRanges</p></td>
 <td><p>When enabled the parallel reader will try to merge ranges of data that 
are separated by less than ‘comet.parquet.read.io.mergeRanges.delta’ bytes. 
Longer continuous reads are faster on cloud storage.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.parquet.read.io.mergeRanges.delta</p></td>
+<tr 
class="row-even"><td><p>spark.comet.parquet.read.io.mergeRanges.delta</p></td>
 <td><p>The delta in bytes between consecutive read ranges below which the 
parallel reader will try to merge the ranges. The default is 8MB.</p></td>
 <td><p>8388608</p></td>
 </tr>
-<tr 
class="row-even"><td><p>spark.comet.parquet.read.parallel.io.enabled</p></td>
+<tr 
class="row-odd"><td><p>spark.comet.parquet.read.parallel.io.enabled</p></td>
 <td><p>Whether to enable Comet’s parallel reader for Parquet files. The 
parallel reader reads ranges of consecutive data in a  file in parallel. It is 
faster for large files and row groups but uses more resources.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.parquet.read.parallel.io.thread-pool.size</p></td>
+<tr 
class="row-even"><td><p>spark.comet.parquet.read.parallel.io.thread-pool.size</p></td>
 <td><p>The maximum number of parallel threads the parallel reader will use in 
a single executor. For executors configured with a smaller number of cores, use 
a smaller number.</p></td>
 <td><p>16</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.regexp.allowIncompatible</p></td>
+<tr class="row-odd"><td><p>spark.comet.regexp.allowIncompatible</p></td>
 <td><p>Comet is not currently fully compatible with Spark for all regular 
expressions. Set this config to true to allow them anyway using Rust’s regular 
expression engine. See compatibility guide for more information.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.scan.enabled</p></td>
+<tr class="row-even"><td><p>spark.comet.scan.enabled</p></td>
 <td><p>Whether to enable native scans. When this is turned on, Spark will use 
Comet to read supported data sources (currently only Parquet is supported 
natively). Note that to enable native vectorized execution, both this config 
and ‘spark.comet.exec.enabled’ need to be enabled.</p></td>
 <td><p>true</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.scan.preFetch.enabled</p></td>
+<tr class="row-odd"><td><p>spark.comet.scan.preFetch.enabled</p></td>
 <td><p>Whether to enable pre-fetching feature of CometScan.</p></td>
 <td><p>false</p></td>
 </tr>
-<tr class="row-odd"><td><p>spark.comet.scan.preFetch.threadNum</p></td>
+<tr class="row-even"><td><p>spark.comet.scan.preFetch.threadNum</p></td>
 <td><p>The number of threads running pre-fetching for CometScan. Effective if 
spark.comet.scan.preFetch.enabled is enabled. Note that more pre-fetching 
threads means more memory requirement to store pre-fetched row groups.</p></td>
 <td><p>2</p></td>
 </tr>
-<tr class="row-even"><td><p>spark.comet.shuffle.preferDictionary.ratio</p></td>
+<tr class="row-odd"><td><p>spark.comet.shuffle.preferDictionary.ratio</p></td>
 <td><p>The ratio of total values to distinct values in a string column to 
decide whether to prefer dictionary encoding when shuffling the column. If the 
ratio is higher than this config, dictionary encoding will be used on shuffling 
string column. This config is effective if it is higher than 1.0. Note that 
this config is only used when <code class="docutils literal notranslate"><span 
class="pre">spark.comet.exec.shuffle.mode</span></code> is <code 
class="docutils literal notranslate"><s [...]
 <td><p>10.0</p></td>
 </tr>
-<tr 
class="row-odd"><td><p>spark.comet.sparkToColumnar.supportedOperatorList</p></td>
+<tr 
class="row-even"><td><p>spark.comet.sparkToColumnar.supportedOperatorList</p></td>
 <td><p>A comma-separated list of operators that will be converted to Arrow 
columnar format when ‘spark.comet.sparkToColumnar.enabled’ is true</p></td>
 <td><p>Range,InMemoryTableScan</p></td>
 </tr>
diff --git a/user-guide/datasources.html b/user-guide/datasources.html
index 86bf2417d..1ecb03817 100644
--- a/user-guide/datasources.html
+++ b/user-guide/datasources.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/datatypes.html b/user-guide/datatypes.html
index 00a8a5758..bb85bd115 100644
--- a/user-guide/datatypes.html
+++ b/user-guide/datatypes.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/expressions.html b/user-guide/expressions.html
index 2d8b41de8..0200cba0d 100644
--- a/user-guide/expressions.html
+++ b/user-guide/expressions.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/installation.html b/user-guide/installation.html
index cb729cae0..306ed7da2 100644
--- a/user-guide/installation.html
+++ b/user-guide/installation.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/kubernetes.html b/user-guide/kubernetes.html
index 1472d2a5c..1aa83d855 100644
--- a/user-guide/kubernetes.html
+++ b/user-guide/kubernetes.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/metrics.html b/user-guide/metrics.html
index 88c969f19..532dd3627 100644
--- a/user-guide/metrics.html
+++ b/user-guide/metrics.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/operators.html b/user-guide/operators.html
index 74782397f..7b5b60092 100644
--- a/user-guide/operators.html
+++ b/user-guide/operators.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/overview.html b/user-guide/overview.html
index 70c683095..7b273bf5f 100644
--- a/user-guide/overview.html
+++ b/user-guide/overview.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/source.html b/user-guide/source.html
index 5a121d888..c5a081c0b 100644
--- a/user-guide/source.html
+++ b/user-guide/source.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
diff --git a/user-guide/tuning.html b/user-guide/tuning.html
index b3a4ae278..b6260f5fa 100644
--- a/user-guide/tuning.html
+++ b/user-guide/tuning.html
@@ -41,7 +41,7 @@ under the License.
       
   
     
-    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=a746c00c" />
+    <link rel="stylesheet" type="text/css" 
href="../_static/pygments.css?v=8f2a1f02" />
     <link rel="stylesheet" type="text/css" 
href="../_static/styles/pydata-sphinx-theme.css?v=1140d252" />
     <link rel="stylesheet" type="text/css" 
href="../_static/theme_overrides.css?v=c6d785ac" />
     
@@ -291,6 +291,16 @@ under the License.
    Memory Tuning
   </a>
   <ul class="nav section-nav flex-column">
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" 
href="#unified-memory-management-with-off-heap-memory">
+     Unified Memory Management with Off-Heap Memory
+    </a>
+   </li>
+   <li class="toc-h3 nav-item toc-entry">
+    <a class="reference internal nav-link" 
href="#dedicated-comet-memory-pools">
+     Dedicated Comet Memory Pools
+    </a>
+   </li>
    <li class="toc-h3 nav-item toc-entry">
     <a class="reference internal nav-link" 
href="#determining-how-much-memory-to-allocate">
      Determining How Much Memory to Allocate
@@ -405,10 +415,42 @@ under the License.
 <p>Comet provides some tuning options to help you get the best performance 
from your queries.</p>
 <section id="memory-tuning">
 <h2>Memory Tuning<a class="headerlink" href="#memory-tuning" title="Link to 
this heading">¶</a></h2>
-<p>Comet shares an off-heap memory pool between Spark and Comet. This requires 
setting <code class="docutils literal notranslate"><span 
class="pre">spark.memory.offHeap.enabled=true</span></code>.
-If this setting is not enabled, Comet will not accelerate queries and will 
fall back to Spark.</p>
-<p>Each executor will have a single memory pool which will be shared by all 
native plans being executed within that
-process, and by Spark itself. The size of the pool is specified by <code 
class="docutils literal notranslate"><span 
class="pre">spark.memory.offHeap.size</span></code>.</p>
+<section id="unified-memory-management-with-off-heap-memory">
+<h3>Unified Memory Management with Off-Heap Memory<a class="headerlink" 
href="#unified-memory-management-with-off-heap-memory" title="Link to this 
heading">¶</a></h3>
+<p>The recommended way to share memory between Spark and Comet is to set <code 
class="docutils literal notranslate"><span 
class="pre">spark.memory.offHeap.enabled=true</span></code>. This allows
+Comet to share an off-heap memory pool with Spark. The size of the pool is 
specified by <code class="docutils literal notranslate"><span 
class="pre">spark.memory.offHeap.size</span></code>. For more details about 
Spark off-heap memory mode, please refer to Spark documentation: 
https://spark.apache.org/docs/latest/configuration.html.</p>
+</section>
+<section id="dedicated-comet-memory-pools">
+<h3>Dedicated Comet Memory Pools<a class="headerlink" 
href="#dedicated-comet-memory-pools" title="Link to this heading">¶</a></h3>
+<p>Spark uses on-heap memory mode by default, i.e., the <code class="docutils 
literal notranslate"><span 
class="pre">spark.memory.offHeap.enabled</span></code> setting is not enabled. 
If Spark is under on-heap memory mode, Comet will use its own dedicated memory 
pools that
+are not shared with Spark. This requires additional configuration settings to 
be specified to set the size and type of
+memory pool to use.</p>
+<p>The size of the pool can be set explicitly with <code class="docutils 
literal notranslate"><span 
class="pre">spark.comet.memoryOverhead</span></code>. If this setting is not 
specified then
+the memory overhead will be calculated by multiplying the executor memory by 
<code class="docutils literal notranslate"><span 
class="pre">spark.comet.memory.overhead.factor</span></code>
+(defaults to <code class="docutils literal notranslate"><span 
class="pre">0.2</span></code>).</p>
+<p>The type of pool can be specified with <code class="docutils literal 
notranslate"><span class="pre">spark.comet.exec.memoryPool</span></code>. The 
default setting is <code class="docutils literal notranslate"><span 
class="pre">greedy_task_shared</span></code>.</p>
+<p>The valid pool types are:</p>
+<ul class="simple">
+<li><p><code class="docutils literal notranslate"><span 
class="pre">greedy</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">greedy_global</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">greedy_task_shared</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">fair_spill</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">fair_spill_global</span></code></p></li>
+<li><p><code class="docutils literal notranslate"><span 
class="pre">fair_spill_task_shared</span></code></p></li>
+</ul>
+<p>Pool types ending with <code class="docutils literal notranslate"><span 
class="pre">_global</span></code> use a single global memory pool between all 
tasks on same executor.</p>
+<p>Pool types ending with <code class="docutils literal notranslate"><span 
class="pre">_task_shared</span></code> share a single memory pool across all 
attempts for a single task.</p>
+<p>Other pool types create a dedicated pool per native query plan using a 
fraction of the available pool size based on number of cores
+and cores per task.</p>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">greedy*</span></code> pool types use DataFusion’s <a 
class="reference external" 
href="https://docs.rs/datafusion/latest/datafusion/execution/memory_pool/struct.GreedyMemoryPool.html";>GreedyMemoryPool</a>,
 which implements a greedy first-come first-serve limit. This
+pool works well for queries that do not need to spill or have a single 
spillable operator.</p>
+<p>The <code class="docutils literal notranslate"><span 
class="pre">fair_spill*</span></code> pool types use DataFusion’s <a 
class="reference external" 
href="https://docs.rs/datafusion/latest/datafusion/execution/memory_pool/struct.FairSpillPool.html";>FairSpillPool</a>,
 which prevents spillable reservations from using more
+than an even fraction of the available memory sans any unspillable reservations
+(i.e. <code class="docutils literal notranslate"><span 
class="pre">(pool_size</span> <span class="pre">-</span> <span 
class="pre">unspillable_memory)</span> <span class="pre">/</span> <span 
class="pre">num_spillable_reservations)</span></code>). This pool works best 
when you know beforehand
+the query has multiple spillable operators that will likely all need to spill. 
Sometimes it will cause spills even
+when there was sufficient memory (reserved for other operators) to avoid doing 
so. Unspillable memory is allocated in
+a first-come, first-serve fashion</p>
+</section>
 <section id="determining-how-much-memory-to-allocate">
 <h3>Determining How Much Memory to Allocate<a class="headerlink" 
href="#determining-how-much-memory-to-allocate" title="Link to this 
heading">¶</a></h3>
 <p>Generally, increasing memory overhead will improve query performance, 
especially for queries containing joins and


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to