Josh Rosen created SPARK-9419:
---------------------------------

             Summary: ShuffleMemoryManager and MemoryStore should track memory 
on a per-task, not per-thread, basis
                 Key: SPARK-9419
                 URL: https://issues.apache.org/jira/browse/SPARK-9419
             Project: Spark
          Issue Type: Bug
          Components: Block Manager, Spark Core
            Reporter: Josh Rosen
            Assignee: Josh Rosen
            Priority: Critical


Spark's ShuffleMemoryManager and MemoryStore track memory on a per-thread 
basis, which causes problems in the handful of cases where we have tasks that 
use multiple threads. In PythonRDD, RRDD, ScriptTransformation, and PipedRDD we 
consume the input iterator in a separate thread in order to write it to an 
external process.  As a result, these RDD's input iterators are consumed in a 
different thread than the thread that created them, which can cause problems in 
our memory allocation tracking. For example, if allocations are performed in 
one thread but deallocations are performed in a separate thread then memory may 
be leaked or we may get errors complaining that more memory was allocated than 
was freed.

I think that the right way to fix this is to change our accounting to be 
performed on a per-task instead of per-thread basis.  Note that the current 
per-thread tracking has caused problems in the past; SPARK-3731 (#2668) fixes a 
memory leak in PythonRDD that was caused by this issue (that fix is no longer 
necessary as of this patch).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to