Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-3322

MemoryManager creates too much GC pressure with iterative jobs

    XMLWordPrintableJSON

Details

    Description

      When taskmanager.memory.preallocate is false (the default), released memory segments are not added to a pool, but the GC is expected to take care of them. This puts too much pressure on the GC with iterative jobs, where the operators reallocate all memory at every superstep.

      See the following discussion on the mailing list:
      http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Memory-manager-behavior-in-iterative-jobs-tt10066.html

      Reproducing the issue:
      https://github.com/ggevay/flink/tree/MemoryManager-crazy-gc
      The class to start is malom.Solver. If you increase the memory given to the JVM from 1 to 50 GB, performance gradually degrades by more than 10 times. (It will generate some lookuptables to /tmp on first run for a few minutes.) (I think the slowdown might also depend somewhat on taskmanager.memory.fraction, because more unused non-managed memory results in rarer GCs.)

      Attachments

        1. FLINK-3322_reusingmemoryfordrivers.docx
          17 kB
          ramkrishna.s.vasudevan
        2. FLINK-3322.docx
          14 kB
          ramkrishna.s.vasudevan

        Activity

          People

            ram_krish ramkrishna.s.vasudevan
            ggevay Gábor Gévay
            Votes:
            1 Vote for this issue
            Watchers:
            10 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 40m
                40m