[ https://issues.apache.org/jira/browse/FLINK-3322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15503404#comment-15503404 ]
ASF GitHub Bot commented on FLINK-3322: --------------------------------------- Github user ramkrish86 commented on a diff in the pull request: https://github.com/apache/flink/pull/2510#discussion_r79382611 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/iterative/task/AbstractIterativeTask.java --- @@ -125,6 +125,16 @@ protected void initialize() throws Exception { } @Override + protected void postRun() throws Exception { --- End diff -- The instanceof for ResettableDriver like `if (this.driver instanceof ResettableDriver) {` was being done in AbstractITerativetask. So I thought if we could clearly seperate out what the finalize clause after every run() can do should be differentiated based on the current instance executing it. Let BatchTask do only driver.cleanup and let the AbstractIterativeTask do based on the type of the driver. I can remove it if not needed. That was just for code clarity. > MemoryManager creates too much GC pressure with iterative jobs > -------------------------------------------------------------- > > Key: FLINK-3322 > URL: https://issues.apache.org/jira/browse/FLINK-3322 > Project: Flink > Issue Type: Bug > Components: Local Runtime > Affects Versions: 1.0.0 > Reporter: Gabor Gevay > Assignee: ramkrishna.s.vasudevan > Priority: Critical > Fix For: 1.0.0 > > Attachments: FLINK-3322.docx, FLINK-3322_reusingmemoryfordrivers.docx > > > 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.) -- This message was sent by Atlassian JIRA (v6.3.4#6332)