[
https://issues.apache.org/jira/browse/FLINK-3322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15476131#comment-15476131
]
ramkrishna.s.vasudevan commented on FLINK-3322:
-----------------------------------------------
[~ggevay]
I once again checked your comments. I initially thought we need a reset method
to ensure we again use the memory segments that were allocated instead of
closing. But from the code read I thought it is not so simple. I am not saying
it is not possible but it requires few more things. AT the beginning itself we
create the required segments and for the read and write buffers we do remove
and add to the new list(for write and large buffers). So if we do reset we just
cannot do a normal reset like to reuse the buffers but we have to put back the
buffers that we pulled for write and large buffers.
When we go on to the LArgeRecordHolder even there we do the same thing. So in
the reset method we should be ensuring that what ever was removed has to be
added back which means that some of the locally created MemorySegment list has
to be moved to class level.
Correct me if am wrong here?
> 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
> Priority: Critical
> Fix For: 1.0.0
>
> Attachments: FLINK-3322.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)