You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gluten.apache.org by "FelixYBW (via GitHub)" <gi...@apache.org> on 2026/04/04 08:12:17 UTC

[I] [VL] table scan allocated more memory than used and caused OOM [gluten]

FelixYBW opened a new issue, #11876:
URL: https://github.com/apache/gluten/issues/11876

   ### Backend
   
   VL (Velox)
   
   ### Bug description
   
   It's a very simple query:
   ```sql
   select max(ss_wholesale_cost),max(ss_list_price)
                     from store_sales 
                     where ss_quantity between 1 and 20
   ```
   table scan reports OOM while the system memory utilization is only 64% and has 22G free memory available
   
   ```
   org.apache.gluten.exception.GlutenException: org.apache.gluten.exception.GlutenException: Error during calling Java code from native code: org.apache.gluten.exception.GlutenException: org.apache.gluten.exception.GlutenException: Exception: VeloxRuntimeError
   Error Source: RUNTIME
   Error Code: INVALID_STATE
   Reason: Operator::addInput failed for [operator: PartialAggregation, plan node ID: 2]: Error during calling Java code from native code: org.apache.gluten.memory.memtarget.ThrowOnOomMemoryTarget$OutOfMemoryException: Not enough spark off-heap execution memory. Acquired: 8.0 MiB, granted: 2.1 MiB. Try tweaking config option spark.memory.offHeap.size to get larger space to run this application (if spark.gluten.memory.dynamic.offHeap.sizing.enabled is not enabled). 
   Current config settings: 
   	spark.memory.offHeap.enabled=True
   	spark.gluten.memory.dynamic.offHeap.sizing.enabled=N/A
   	spark.gluten.memory.offHeap.size.in.bytes=17.2 GiB
   	spark.gluten.memory.task.offHeap.size.in.bytes=1098.1 MiB
   	spark.gluten.memory.conservative.task.offHeap.size.in.bytes=549.1 MiB
   Memory consumer stats: 
   	Task.96:                                              Current used bytes: 1096.0 MiB, peak bytes:        N/A
   	\- Gluten.Tree.95:                                    Current used bytes: 1096.0 MiB, peak bytes: 1098.1 MiB
   	   \- Capacity[8.0 EiB].94:                           Current used bytes: 1096.0 MiB, peak bytes: 1098.1 MiB
   	      +- NativePlanEvaluator-93.0:                    Current used bytes: 1096.0 MiB, peak bytes: 1098.1 MiB
   	      |  \- single:                                   Current used bytes: 1096.0 MiB, peak bytes: 1096.0 MiB
   	      |     +- root:                                  Current used bytes: 1088.0 MiB, peak bytes: 1089.0 MiB
   	      |     |  +- task.Gluten_Stage_3_TID_96_VTID_93: Current used bytes: 1088.0 MiB, peak bytes: 1089.0 MiB
   	      |     |  |  +- node.0:                          Current used bytes: 1087.9 MiB, peak bytes: 1088.0 MiB
   	      |     |  |  |  +- op.0.0.0.TableScan:           Current used bytes: 1087.9 MiB, peak bytes: 1088.0 MiB
   	      |     |  |  |  \- op.0.0.0.TableScan.test-hive: Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     |  |  +- node.2:                          Current used bytes:   64.4 KiB, peak bytes: 1024.0 KiB
   	      |     |  |  |  \- op.2.0.0.PartialAggregation:  Current used bytes:   64.4 KiB, peak bytes:   64.4 KiB
   	      |     |  |  \- node.1:                          Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     |  |     \- op.1.0.0.FilterProject:       Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     |  \- default_leaf:                       Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     \- gluten::MemoryAllocator:               Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |        \- default:                            Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- ShuffleWriter.93:                            Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |  \- single:                                   Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     +- gluten::MemoryAllocator:               Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     |  \- default:                            Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     \- root:                                  Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |        \- default_leaf:                       Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- VeloxBatchResizer.97.OverAcquire.0:          Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- IteratorMetrics.92:                          Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |  \- single:                                   Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     +- gluten::MemoryAllocator:               Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     |  \- default:                            Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |     \- root:                                  Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      |        \- default_leaf:                       Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- NativePlanEvaluator-93.0.OverAcquire.0:      Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- ShuffleWriter.93.OverAcquire.0:              Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      +- IteratorMetrics.92.OverAcquire.0:            Current used bytes:      0.0 B, peak bytes:      0.0 B
   	      \- VeloxBatchResizer.97:                        Current used bytes:      0.0 B, peak bytes:      0.0 B
   	         \- single:                                   Current used bytes:      0.0 B, peak bytes:      0.0 B
   	            +- root:                                  Current used bytes:      0.0 B, peak bytes:      0.0 B
   	            |  \- default_leaf:                       Current used bytes:      0.0 B, peak bytes:      0.0 B
   	            \- gluten::MemoryAllocator:               Current used bytes:      0.0 B, peak bytes:      0.0 B
   	               \- default:                            Current used bytes:      0.0 B, peak bytes:      0.0 B
   
   ```
   
   ### Gluten version
   
   _No response_
   
   ### Spark version
   
   None
   
   ### Spark configurations
   
   _No response_
   
   ### System information
   
   _No response_
   
   ### Relevant logs
   
   ```bash
   
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [I] [VL] table scan allocated more memory than used and caused OOM [gluten]

Posted by "FelixYBW (via GitHub)" <gi...@apache.org>.
FelixYBW closed issue #11876: [VL] table scan allocated more memory than used and caused OOM
URL: https://github.com/apache/gluten/issues/11876


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org


Re: [I] [VL] table scan allocated more memory than used and caused OOM [gluten]

Posted by "FelixYBW (via GitHub)" <gi...@apache.org>.
FelixYBW commented on issue #11876:
URL: https://github.com/apache/gluten/issues/11876#issuecomment-5839512322

   The root cause is that memory utilization measured from sar/telegraf is the physical memory allocated. While the used bytes tracked by the memory manager are logical memory. This happens during table scans because we started too many I/O threads, which allocated a large block of memory to be filled by remote reads, but it's not yet filled. Finally, OOM was raised.
   
   the solution is to reduce the inflight IO.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org