Joe McDonnell created IMPALA-14900:
--------------------------------------

             Summary: Add support for running Impala without tcmalloc's 
aggressive decommit mode
                 Key: IMPALA-14900
                 URL: https://issues.apache.org/jira/browse/IMPALA-14900
             Project: IMPALA
          Issue Type: Task
          Components: Backend
    Affects Versions: Impala 5.0.0
            Reporter: Joe McDonnell


Impala currently sets tcmalloc's aggressive decommit mode and asserts that it 
is set. This forces tcmalloc to return all free spans to the operating system. 
Impala does this for a couple reasons:
 # Without aggressive decommit, tcmalloc doesn't release memory fast enough for 
Impala's memory access patterns. Impala would need to manually force tcmalloc 
to free memory with a background thread and integration with the process memory 
tracker's garbage collection. A long time ago, there were performance issues 
with the way this was implemented. See IMPALA-2800.
 # When Impala uses huge pages, we don't want tcmalloc to reuse the huge page 
as smaller pieces. This can potentially cause inaccuracy in our memory use 
statistics. See this comment in system-allocator.cc: 
https://github.com/apache/impala/blob/cefeb760a886d28c05f98917cdfeac864728f270/be/src/runtime/bufferpool/system-allocator.cc#L152-L157
 

However, aggressive decommit increases the memory allocation / deallocation 
rate and can lead to extra interactions with the operating system and 
contention on tcmalloc locks. We have seen issues when Parquet files have large 
data pages. We have also seen issues with queries operating on nested data.

It would be useful to have a way to run Impala with aggressive decommit 
disabled. This will require a background thread monitoring memory use and 
integration with the process mem tracker's garbage collection. One option is to 
allow aggressive decommit to be disabled when huge pages are disabled. Another 
option is to use mmap for huge pages to allow using huge pages with aggressive 
decommit disabled.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to