I see. Under the assumption of strict determinism that should work. The original proposal had this point "don't compute inside the TM, compute outside and supply a full config", because that sounded more intuitive.
On Thu, Aug 29, 2019 at 12:15 PM Till Rohrmann <trohrm...@apache.org> wrote: > My understanding was that before starting the Flink process we call a > utility which calculates these values. I assume that this utility will do > the calculation based on a set of configured values (process memory, flink > memory, network memory etc.). Assuming that these values don't differ from > the values with which the JVM is started, it should be possible to > recompute them in the Flink process in order to set the values. > > > > On Thu, Aug 29, 2019 at 11:29 AM Stephan Ewen <se...@apache.org> wrote: > > > When computing the values in the JVM process after it started, how would > > you deal with values like Max Direct Memory, Metaspace size. native > memory > > reservation (reduce heap size), etc? All the values that are parameters > to > > the JVM process and that need to be supplied at process startup? > > > > On Wed, Aug 28, 2019 at 4:46 PM Till Rohrmann <trohrm...@apache.org> > > wrote: > > > > > Thanks for the clarification. I have some more comments: > > > > > > - I would actually split the logic to compute the process memory > > > requirements and storing the values into two things. E.g. one could > name > > > the former TaskExecutorProcessUtility and the latter > > > TaskExecutorProcessMemory. But we can discuss this on the PR since it's > > > just a naming detail. > > > > > > - Generally, I'm not opposed to making configuration values overridable > > by > > > ENV variables. I think this is a very good idea and makes the > > > configurability of Flink processes easier. However, I think that adding > > > this functionality should not be part of this FLIP because it would > > simply > > > widen the scope unnecessarily. > > > > > > The reasons why I believe it is unnecessary are the following: For Yarn > > we > > > already create write a flink-conf.yaml which could be populated with > the > > > memory settings. For the other processes it should not make a > difference > > > whether the loaded Configuration is populated with the memory settings > > from > > > ENV variables or by using TaskExecutorProcessUtility to compute the > > missing > > > values from the loaded configuration. If the latter would not be > possible > > > (wrong or missing configuration values), then we should not have been > > able > > > to actually start the process in the first place. > > > > > > - Concerning the memory reservation: I agree with you that we need the > > > memory reservation functionality to make streaming jobs work with > > "managed" > > > memory. However, w/o this functionality the whole Flip would already > > bring > > > a good amount of improvements to our users when running batch jobs. > > > Moreover, by keeping the scope smaller we can complete the FLIP faster. > > > Hence, I would propose to address the memory reservation functionality > > as a > > > follow up FLIP (which Yu is working on if I'm not mistaken). > > > > > > Cheers, > > > Till > > > > > > On Wed, Aug 28, 2019 at 11:43 AM Yang Wang <danrtsey...@gmail.com> > > wrote: > > > > > > > Just add my 2 cents. > > > > > > > > Using environment variables to override the configuration for > different > > > > taskmanagers is better. > > > > We do not need to generate dedicated flink-conf.yaml for all > > > taskmanagers. > > > > A common flink-conf.yam and different environment variables are > enough. > > > > By reducing the distributed cached files, it could make launching a > > > > taskmanager faster. > > > > > > > > Stephan gives a good suggestion that we could move the logic into > > > > "GlobalConfiguration.loadConfig()" method. > > > > Maybe the client could also benefit from this. Different users do not > > > have > > > > to export FLINK_CONF_DIR to update few config options. > > > > > > > > > > > > Best, > > > > Yang > > > > > > > > Stephan Ewen <se...@apache.org> 于2019年8月28日周三 上午1:21写道: > > > > > > > > > One note on the Environment Variables and Configuration discussion. > > > > > > > > > > My understanding is that passed ENV variables are added to the > > > > > configuration in the "GlobalConfiguration.loadConfig()" method (or > > > > > similar). > > > > > For all the code inside Flink, it looks like the data was in the > > config > > > > to > > > > > start with, just that the scripts that compute the variables can > pass > > > the > > > > > values to the process without actually needing to write a file. > > > > > > > > > > For example the "GlobalConfiguration.loadConfig()" method would > take > > > any > > > > > ENV variable prefixed with "flink" and add it as a config key. > > > > > "flink_taskmanager_memory_size=2g" would become > > > "taskmanager.memory.size: > > > > > 2g". > > > > > > > > > > > > > > > On Tue, Aug 27, 2019 at 4:05 PM Xintong Song < > tonysong...@gmail.com> > > > > > wrote: > > > > > > > > > > > Thanks for the comments, Till. > > > > > > > > > > > > I've also seen your comments on the wiki page, but let's keep the > > > > > > discussion here. > > > > > > > > > > > > - Regarding 'TaskExecutorSpecifics', how do you think about > naming > > it > > > > > > 'TaskExecutorResourceSpecifics'. > > > > > > - Regarding passing memory configurations into task executors, > I'm > > in > > > > > favor > > > > > > of do it via environment variables rather than configurations, > with > > > the > > > > > > following two reasons. > > > > > > - It is easier to keep the memory options once calculate not to > > be > > > > > > changed with environment variables rather than configurations. > > > > > > - I'm not sure whether we should write the configuration in > > startup > > > > > > scripts. Writing changes into the configuration files when > running > > > the > > > > > > startup scripts does not sounds right to me. Or we could make a > > copy > > > of > > > > > > configuration files per flink cluster, and make the task executor > > to > > > > load > > > > > > from the copy, and clean up the copy after the cluster is > shutdown, > > > > which > > > > > > is complicated. (I think this is also what Stephan means in his > > > comment > > > > > on > > > > > > the wiki page?) > > > > > > - Regarding reserving memory, I think this change should be > > included > > > in > > > > > > this FLIP. I think a big part of motivations of this FLIP is to > > unify > > > > > > memory configuration for streaming / batch and make it easy for > > > > > configuring > > > > > > rocksdb memory. If we don't support memory reservation, then > > > streaming > > > > > jobs > > > > > > cannot use managed memory (neither on-heap or off-heap), which > > makes > > > > this > > > > > > FLIP incomplete. > > > > > > - Regarding network memory, I think you are right. I think we > > > probably > > > > > > don't need to change network stack from using direct memory to > > using > > > > > unsafe > > > > > > native memory. Network memory size is deterministic, cannot be > > > reserved > > > > > as > > > > > > managed memory does, and cannot be overused. I think it also > works > > if > > > > we > > > > > > simply keep using direct memory for network and include it in jvm > > max > > > > > > direct memory size. > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 27, 2019 at 8:12 PM Till Rohrmann < > > trohrm...@apache.org> > > > > > > wrote: > > > > > > > > > > > > > Hi Xintong, > > > > > > > > > > > > > > thanks for addressing the comments and adding a more detailed > > > > > > > implementation plan. I have a couple of comments concerning the > > > > > > > implementation plan: > > > > > > > > > > > > > > - The name `TaskExecutorSpecifics` is not really descriptive. > > > > Choosing > > > > > a > > > > > > > different name could help here. > > > > > > > - I'm not sure whether I would pass the memory configuration to > > the > > > > > > > TaskExecutor via environment variables. I think it would be > > better > > > to > > > > > > write > > > > > > > it into the configuration one uses to start the TM process. > > > > > > > - If possible, I would exclude the memory reservation from this > > > FLIP > > > > > and > > > > > > > add this as part of a dedicated FLIP. > > > > > > > - If possible, then I would exclude changes to the network > stack > > > from > > > > > > this > > > > > > > FLIP. Maybe we can simply say that the direct memory needed by > > the > > > > > > network > > > > > > > stack is the framework direct memory requirement. Changing how > > the > > > > > memory > > > > > > > is allocated can happen in a second step. This would keep the > > scope > > > > of > > > > > > this > > > > > > > FLIP smaller. > > > > > > > > > > > > > > Cheers, > > > > > > > Till > > > > > > > > > > > > > > On Thu, Aug 22, 2019 at 2:51 PM Xintong Song < > > > tonysong...@gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > Hi everyone, > > > > > > > > > > > > > > > > I just updated the FLIP document on wiki [1], with the > > following > > > > > > changes. > > > > > > > > > > > > > > > > - Removed open question regarding MemorySegment > allocation. > > As > > > > > > > > discussed, we exclude this topic from the scope of this > > FLIP. > > > > > > > > - Updated content about JVM direct memory parameter > > according > > > to > > > > > > > recent > > > > > > > > discussions, and moved the other options to "Rejected > > > > > Alternatives" > > > > > > > for > > > > > > > > the > > > > > > > > moment. > > > > > > > > - Added implementation steps. > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-49%3A+Unified+Memory+Configuration+for+TaskExecutors > > > > > > > > > > > > > > > > On Mon, Aug 19, 2019 at 7:16 PM Stephan Ewen < > se...@apache.org > > > > > > > > wrote: > > > > > > > > > > > > > > > > > @Xintong: Concerning "wait for memory users before task > > dispose > > > > and > > > > > > > > memory > > > > > > > > > release": I agree, that's how it should be. Let's try it > out. > > > > > > > > > > > > > > > > > > @Xintong @Jingsong: Concerning " JVM does not wait for GC > > when > > > > > > > allocating > > > > > > > > > direct memory buffer": There seems to be pretty elaborate > > logic > > > > to > > > > > > free > > > > > > > > > buffers when allocating new ones. See > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > http://hg.openjdk.java.net/jdk8u/jdk8u-dev/jdk/file/tip/src/share/classes/java/nio/Bits.java#l643 > > > > > > > > > > > > > > > > > > @Till: Maybe. If we assume that the JVM default works (like > > > going > > > > > > with > > > > > > > > > option 2 and not setting "-XX:MaxDirectMemorySize" at all), > > > then > > > > I > > > > > > > think > > > > > > > > it > > > > > > > > > should be okay to set "-XX:MaxDirectMemorySize" to > > > > > > > > > "off_heap_managed_memory + direct_memory" even if we use > > > RocksDB. > > > > > > That > > > > > > > > is a > > > > > > > > > big if, though, I honestly have no idea :D Would be good to > > > > > > understand > > > > > > > > > this, though, because this would affect option (2) and > option > > > > > (1.2). > > > > > > > > > > > > > > > > > > On Mon, Aug 19, 2019 at 4:44 PM Xintong Song < > > > > > tonysong...@gmail.com> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Thanks for the inputs, Jingsong. > > > > > > > > > > > > > > > > > > > > Let me try to summarize your points. Please correct me if > > I'm > > > > > > wrong. > > > > > > > > > > > > > > > > > > > > - Memory consumers should always avoid returning > memory > > > > > segments > > > > > > > to > > > > > > > > > > memory manager while there are still un-cleaned > > > structures / > > > > > > > threads > > > > > > > > > > that > > > > > > > > > > may use the memory. Otherwise, it would cause serious > > > > problems > > > > > > by > > > > > > > > > having > > > > > > > > > > multiple consumers trying to use the same memory > > segment. > > > > > > > > > > - JVM does not wait for GC when allocating direct > memory > > > > > buffer. > > > > > > > > > > Therefore even we set proper max direct memory size > > limit, > > > > we > > > > > > may > > > > > > > > > still > > > > > > > > > > encounter direct memory oom if the GC cleaning memory > > > slower > > > > > > than > > > > > > > > the > > > > > > > > > > direct memory allocation. > > > > > > > > > > > > > > > > > > > > Am I understanding this correctly? > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Aug 19, 2019 at 4:21 PM JingsongLee < > > > > > > lzljs3620...@aliyun.com > > > > > > > > > > .invalid> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Hi stephan: > > > > > > > > > > > > > > > > > > > > > > About option 2: > > > > > > > > > > > > > > > > > > > > > > if additional threads not cleanly shut down before we > can > > > > exit > > > > > > the > > > > > > > > > task: > > > > > > > > > > > In the current case of memory reuse, it has freed up > the > > > > memory > > > > > > it > > > > > > > > > > > uses. If this memory is used by other tasks and > > > asynchronous > > > > > > > threads > > > > > > > > > > > of exited task may still be writing, there will be > > > > concurrent > > > > > > > > security > > > > > > > > > > > problems, and even lead to errors in user computing > > > results. > > > > > > > > > > > > > > > > > > > > > > So I think this is a serious and intolerable bug, No > > matter > > > > > what > > > > > > > the > > > > > > > > > > > option is, it should be avoided. > > > > > > > > > > > > > > > > > > > > > > About direct memory cleaned by GC: > > > > > > > > > > > I don't think it is a good idea, I've encountered so > many > > > > > > > situations > > > > > > > > > > > that it's too late for GC to cause DirectMemory OOM. > > > Release > > > > > and > > > > > > > > > > > allocate DirectMemory depend on the type of user job, > > > which > > > > is > > > > > > > > > > > often beyond our control. > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > Jingsong Lee > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------ > > > > > > > > > > > From:Stephan Ewen <se...@apache.org> > > > > > > > > > > > Send Time:2019年8月19日(星期一) 15:56 > > > > > > > > > > > To:dev <dev@flink.apache.org> > > > > > > > > > > > Subject:Re: [DISCUSS] FLIP-49: Unified Memory > > Configuration > > > > for > > > > > > > > > > > TaskExecutors > > > > > > > > > > > > > > > > > > > > > > My main concern with option 2 (manually release memory) > > is > > > > that > > > > > > > > > segfaults > > > > > > > > > > > in the JVM send off all sorts of alarms on user ends. > So > > we > > > > > need > > > > > > to > > > > > > > > > > > guarantee that this never happens. > > > > > > > > > > > > > > > > > > > > > > The trickyness is in tasks that uses data structures / > > > > > algorithms > > > > > > > > with > > > > > > > > > > > additional threads, like hash table spill/read and > > sorting > > > > > > threads. > > > > > > > > We > > > > > > > > > > need > > > > > > > > > > > to ensure that these cleanly shut down before we can > exit > > > the > > > > > > task. > > > > > > > > > > > I am not sure that we have that guaranteed already, > > that's > > > > why > > > > > > > option > > > > > > > > > 1.1 > > > > > > > > > > > seemed simpler to me. > > > > > > > > > > > > > > > > > > > > > > On Mon, Aug 19, 2019 at 3:42 PM Xintong Song < > > > > > > > tonysong...@gmail.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > Thanks for the comments, Stephan. Summarized in this > > way > > > > > really > > > > > > > > makes > > > > > > > > > > > > things easier to understand. > > > > > > > > > > > > > > > > > > > > > > > > I'm in favor of option 2, at least for the moment. I > > > think > > > > it > > > > > > is > > > > > > > > not > > > > > > > > > > that > > > > > > > > > > > > difficult to keep it segfault safe for memory > manager, > > as > > > > > long > > > > > > as > > > > > > > > we > > > > > > > > > > > always > > > > > > > > > > > > de-allocate the memory segment when it is released > from > > > the > > > > > > > memory > > > > > > > > > > > > consumers. Only if the memory consumer continue using > > the > > > > > > buffer > > > > > > > of > > > > > > > > > > > memory > > > > > > > > > > > > segment after releasing it, in which case we do want > > the > > > > job > > > > > to > > > > > > > > fail > > > > > > > > > so > > > > > > > > > > > we > > > > > > > > > > > > detect the memory leak early. > > > > > > > > > > > > > > > > > > > > > > > > For option 1.2, I don't think this is a good idea. > Not > > > only > > > > > > > because > > > > > > > > > the > > > > > > > > > > > > assumption (regular GC is enough to clean direct > > buffers) > > > > may > > > > > > not > > > > > > > > > > always > > > > > > > > > > > be > > > > > > > > > > > > true, but also it makes harder for finding problems > in > > > > cases > > > > > of > > > > > > > > > memory > > > > > > > > > > > > overuse. E.g., user configured some direct memory for > > the > > > > > user > > > > > > > > > > libraries. > > > > > > > > > > > > If the library actually use more direct memory then > > > > > configured, > > > > > > > > which > > > > > > > > > > > > cannot be cleaned by GC because they are still in > use, > > > may > > > > > lead > > > > > > > to > > > > > > > > > > > overuse > > > > > > > > > > > > of the total container memory. In that case, if it > > didn't > > > > > touch > > > > > > > the > > > > > > > > > JVM > > > > > > > > > > > > default max direct memory limit, we cannot get a > direct > > > > > memory > > > > > > > OOM > > > > > > > > > and > > > > > > > > > > it > > > > > > > > > > > > will become super hard to understand which part of > the > > > > > > > > configuration > > > > > > > > > > need > > > > > > > > > > > > to be updated. > > > > > > > > > > > > > > > > > > > > > > > > For option 1.1, it has the similar problem as 1.2, if > > the > > > > > > > exceeded > > > > > > > > > > direct > > > > > > > > > > > > memory does not reach the max direct memory limit > > > specified > > > > > by > > > > > > > the > > > > > > > > > > > > dedicated parameter. I think it is slightly better > than > > > > 1.2, > > > > > > only > > > > > > > > > > because > > > > > > > > > > > > we can tune the parameter. > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Aug 19, 2019 at 2:53 PM Stephan Ewen < > > > > > se...@apache.org > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > About the "-XX:MaxDirectMemorySize" discussion, > maybe > > > let > > > > > me > > > > > > > > > > summarize > > > > > > > > > > > > it a > > > > > > > > > > > > > bit differently: > > > > > > > > > > > > > > > > > > > > > > > > > > We have the following two options: > > > > > > > > > > > > > > > > > > > > > > > > > > (1) We let MemorySegments be de-allocated by the > GC. > > > That > > > > > > makes > > > > > > > > it > > > > > > > > > > > > segfault > > > > > > > > > > > > > safe. But then we need a way to trigger GC in case > > > > > > > de-allocation > > > > > > > > > and > > > > > > > > > > > > > re-allocation of a bunch of segments happens > quickly, > > > > which > > > > > > is > > > > > > > > > often > > > > > > > > > > > the > > > > > > > > > > > > > case during batch scheduling or task restart. > > > > > > > > > > > > > - The "-XX:MaxDirectMemorySize" (option 1.1) is > one > > > way > > > > > to > > > > > > do > > > > > > > > > this > > > > > > > > > > > > > - Another way could be to have a dedicated > > > bookkeeping > > > > in > > > > > > the > > > > > > > > > > > > > MemoryManager (option 1.2), so that this is a > number > > > > > > > independent > > > > > > > > of > > > > > > > > > > the > > > > > > > > > > > > > "-XX:MaxDirectMemorySize" parameter. > > > > > > > > > > > > > > > > > > > > > > > > > > (2) We manually allocate and de-allocate the memory > > for > > > > the > > > > > > > > > > > > MemorySegments > > > > > > > > > > > > > (option 2). That way we need not worry about > > triggering > > > > GC > > > > > by > > > > > > > > some > > > > > > > > > > > > > threshold or bookkeeping, but it is harder to > prevent > > > > > > > segfaults. > > > > > > > > We > > > > > > > > > > > need > > > > > > > > > > > > to > > > > > > > > > > > > > be very careful about when we release the memory > > > segments > > > > > > (only > > > > > > > > in > > > > > > > > > > the > > > > > > > > > > > > > cleanup phase of the main thread). > > > > > > > > > > > > > > > > > > > > > > > > > > If we go with option 1.1, we probably need to set > > > > > > > > > > > > > "-XX:MaxDirectMemorySize" to > > "off_heap_managed_memory + > > > > > > > > > > direct_memory" > > > > > > > > > > > > and > > > > > > > > > > > > > have "direct_memory" as a separate reserved memory > > > pool. > > > > > > > Because > > > > > > > > if > > > > > > > > > > we > > > > > > > > > > > > just > > > > > > > > > > > > > set "-XX:MaxDirectMemorySize" to > > > > "off_heap_managed_memory + > > > > > > > > > > > > jvm_overhead", > > > > > > > > > > > > > then there will be times when that entire memory is > > > > > allocated > > > > > > > by > > > > > > > > > > direct > > > > > > > > > > > > > buffers and we have nothing left for the JVM > > overhead. > > > So > > > > > we > > > > > > > > either > > > > > > > > > > > need > > > > > > > > > > > > a > > > > > > > > > > > > > way to compensate for that (again some safety > margin > > > > cutoff > > > > > > > > value) > > > > > > > > > or > > > > > > > > > > > we > > > > > > > > > > > > > will exceed container memory. > > > > > > > > > > > > > > > > > > > > > > > > > > If we go with option 1.2, we need to be aware that > it > > > > takes > > > > > > > > > elaborate > > > > > > > > > > > > logic > > > > > > > > > > > > > to push recycling of direct buffers without always > > > > > > triggering a > > > > > > > > > full > > > > > > > > > > > GC. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > My first guess is that the options will be easiest > to > > > do > > > > in > > > > > > the > > > > > > > > > > > following > > > > > > > > > > > > > order: > > > > > > > > > > > > > > > > > > > > > > > > > > - Option 1.1 with a dedicated direct_memory > > > parameter, > > > > as > > > > > > > > > discussed > > > > > > > > > > > > > above. We would need to find a way to set the > > > > direct_memory > > > > > > > > > parameter > > > > > > > > > > > by > > > > > > > > > > > > > default. We could start with 64 MB and see how it > > goes > > > in > > > > > > > > practice. > > > > > > > > > > One > > > > > > > > > > > > > danger I see is that setting this loo low can > cause a > > > > bunch > > > > > > of > > > > > > > > > > > additional > > > > > > > > > > > > > GCs compared to before (we need to watch this > > > carefully). > > > > > > > > > > > > > > > > > > > > > > > > > > - Option 2. It is actually quite simple to > > implement, > > > > we > > > > > > > could > > > > > > > > > try > > > > > > > > > > > how > > > > > > > > > > > > > segfault safe we are at the moment. > > > > > > > > > > > > > > > > > > > > > > > > > > - Option 1.2: We would not touch the > > > > > > > "-XX:MaxDirectMemorySize" > > > > > > > > > > > > parameter > > > > > > > > > > > > > at all and assume that all the direct memory > > > allocations > > > > > that > > > > > > > the > > > > > > > > > JVM > > > > > > > > > > > and > > > > > > > > > > > > > Netty do are infrequent enough to be cleaned up > fast > > > > enough > > > > > > > > through > > > > > > > > > > > > regular > > > > > > > > > > > > > GC. I am not sure if that is a valid assumption, > > > though. > > > > > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > Stephan > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 2:16 PM Xintong Song < > > > > > > > > > tonysong...@gmail.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for sharing your opinion Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm also in favor of alternative 2. I was > wondering > > > > > whether > > > > > > > we > > > > > > > > > can > > > > > > > > > > > > avoid > > > > > > > > > > > > > > using Unsafe.allocate() for off-heap managed > memory > > > and > > > > > > > network > > > > > > > > > > > memory > > > > > > > > > > > > > with > > > > > > > > > > > > > > alternative 3. But after giving it a second > > thought, > > > I > > > > > > think > > > > > > > > even > > > > > > > > > > for > > > > > > > > > > > > > > alternative 3 using direct memory for off-heap > > > managed > > > > > > memory > > > > > > > > > could > > > > > > > > > > > > cause > > > > > > > > > > > > > > problems. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yang, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regarding your concern, I think what proposed in > > this > > > > > FLIP > > > > > > it > > > > > > > > to > > > > > > > > > > have > > > > > > > > > > > > > both > > > > > > > > > > > > > > off-heap managed memory and network memory > > allocated > > > > > > through > > > > > > > > > > > > > > Unsafe.allocate(), which means they are > practically > > > > > native > > > > > > > > memory > > > > > > > > > > and > > > > > > > > > > > > not > > > > > > > > > > > > > > limited by JVM max direct memory. The only parts > of > > > > > memory > > > > > > > > > limited > > > > > > > > > > by > > > > > > > > > > > > JVM > > > > > > > > > > > > > > max direct memory are task off-heap memory and > JVM > > > > > > overhead, > > > > > > > > > which > > > > > > > > > > > are > > > > > > > > > > > > > > exactly alternative 2 suggests to set the JVM max > > > > direct > > > > > > > memory > > > > > > > > > to. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 1:48 PM Till Rohrmann < > > > > > > > > > > trohrm...@apache.org> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the clarification Xintong. I > > understand > > > > the > > > > > > two > > > > > > > > > > > > alternatives > > > > > > > > > > > > > > > now. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I would be in favour of option 2 because it > makes > > > > > things > > > > > > > > > > explicit. > > > > > > > > > > > If > > > > > > > > > > > > > we > > > > > > > > > > > > > > > don't limit the direct memory, I fear that we > > might > > > > end > > > > > > up > > > > > > > > in a > > > > > > > > > > > > similar > > > > > > > > > > > > > > > situation as we are currently in: The user > might > > > see > > > > > that > > > > > > > her > > > > > > > > > > > process > > > > > > > > > > > > > > gets > > > > > > > > > > > > > > > killed by the OS and does not know why this is > > the > > > > > case. > > > > > > > > > > > > Consequently, > > > > > > > > > > > > > > she > > > > > > > > > > > > > > > tries to decrease the process memory size > > (similar > > > to > > > > > > > > > increasing > > > > > > > > > > > the > > > > > > > > > > > > > > cutoff > > > > > > > > > > > > > > > ratio) in order to accommodate for the extra > > direct > > > > > > memory. > > > > > > > > > Even > > > > > > > > > > > > worse, > > > > > > > > > > > > > > she > > > > > > > > > > > > > > > tries to decrease memory budgets which are not > > > fully > > > > > used > > > > > > > and > > > > > > > > > > hence > > > > > > > > > > > > > won't > > > > > > > > > > > > > > > change the overall memory consumption. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 11:01 AM Xintong Song < > > > > > > > > > > > tonysong...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Let me explain this with a concrete example > > Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Let's say we have the following scenario. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Total Process Memory: 1GB > > > > > > > > > > > > > > > > JVM Direct Memory (Task Off-Heap Memory + JVM > > > > > > Overhead): > > > > > > > > > 200MB > > > > > > > > > > > > > > > > Other Memory (JVM Heap Memory, JVM Metaspace, > > > > > Off-Heap > > > > > > > > > Managed > > > > > > > > > > > > Memory > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > Network Memory): 800MB > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > For alternative 2, we set > > -XX:MaxDirectMemorySize > > > > to > > > > > > > 200MB. > > > > > > > > > > > > > > > > For alternative 3, we set > > -XX:MaxDirectMemorySize > > > > to > > > > > a > > > > > > > very > > > > > > > > > > large > > > > > > > > > > > > > > value, > > > > > > > > > > > > > > > > let's say 1TB. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the actual direct memory usage of Task > > > Off-Heap > > > > > > Memory > > > > > > > > and > > > > > > > > > > JVM > > > > > > > > > > > > > > > Overhead > > > > > > > > > > > > > > > > do not exceed 200MB, then alternative 2 and > > > > > > alternative 3 > > > > > > > > > > should > > > > > > > > > > > > have > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > same utility. Setting larger > > > > -XX:MaxDirectMemorySize > > > > > > will > > > > > > > > not > > > > > > > > > > > > reduce > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > sizes of the other memory pools. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the actual direct memory usage of Task > > > Off-Heap > > > > > > Memory > > > > > > > > and > > > > > > > > > > JVM > > > > > > > > > > > > > > > > Overhead potentially exceed 200MB, then > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Alternative 2 suffers from frequent OOM. > > To > > > > > avoid > > > > > > > > that, > > > > > > > > > > the > > > > > > > > > > > > only > > > > > > > > > > > > > > > thing > > > > > > > > > > > > > > > > user can do is to modify the configuration > > and > > > > > > > increase > > > > > > > > > JVM > > > > > > > > > > > > Direct > > > > > > > > > > > > > > > > Memory > > > > > > > > > > > > > > > > (Task Off-Heap Memory + JVM Overhead). > Let's > > > say > > > > > > that > > > > > > > > user > > > > > > > > > > > > > increases > > > > > > > > > > > > > > > JVM > > > > > > > > > > > > > > > > Direct Memory to 250MB, this will reduce > the > > > > total > > > > > > > size > > > > > > > > of > > > > > > > > > > > other > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > pools to 750MB, given the total process > > memory > > > > > > remains > > > > > > > > > 1GB. > > > > > > > > > > > > > > > > - For alternative 3, there is no chance of > > > > direct > > > > > > OOM. > > > > > > > > > There > > > > > > > > > > > are > > > > > > > > > > > > > > > chances > > > > > > > > > > > > > > > > of exceeding the total process memory > limit, > > > but > > > > > > given > > > > > > > > > that > > > > > > > > > > > the > > > > > > > > > > > > > > > process > > > > > > > > > > > > > > > > may > > > > > > > > > > > > > > > > not use up all the reserved native memory > > > > > (Off-Heap > > > > > > > > > Managed > > > > > > > > > > > > > Memory, > > > > > > > > > > > > > > > > Network > > > > > > > > > > > > > > > > Memory, JVM Metaspace), if the actual > direct > > > > > memory > > > > > > > > usage > > > > > > > > > is > > > > > > > > > > > > > > slightly > > > > > > > > > > > > > > > > above > > > > > > > > > > > > > > > > yet very close to 200MB, user probably do > > not > > > > need > > > > > > to > > > > > > > > > change > > > > > > > > > > > the > > > > > > > > > > > > > > > > configurations. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Therefore, I think from the user's > > perspective, a > > > > > > > feasible > > > > > > > > > > > > > > configuration > > > > > > > > > > > > > > > > for alternative 2 may lead to lower resource > > > > > > utilization > > > > > > > > > > compared > > > > > > > > > > > > to > > > > > > > > > > > > > > > > alternative 3. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 10:28 AM Till > Rohrmann > > < > > > > > > > > > > > > trohrm...@apache.org > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I guess you have to help me understand the > > > > > difference > > > > > > > > > between > > > > > > > > > > > > > > > > alternative 2 > > > > > > > > > > > > > > > > > and 3 wrt to memory under utilization > > Xintong. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Alternative 2: set XX:MaxDirectMemorySize > > to > > > > Task > > > > > > > > > Off-Heap > > > > > > > > > > > > Memory > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > JVM > > > > > > > > > > > > > > > > > Overhead. Then there is the risk that this > > size > > > > is > > > > > > too > > > > > > > > low > > > > > > > > > > > > > resulting > > > > > > > > > > > > > > > in a > > > > > > > > > > > > > > > > > lot of garbage collection and potentially > an > > > OOM. > > > > > > > > > > > > > > > > > - Alternative 3: set XX:MaxDirectMemorySize > > to > > > > > > > something > > > > > > > > > > larger > > > > > > > > > > > > > than > > > > > > > > > > > > > > > > > alternative 2. This would of course reduce > > the > > > > > sizes > > > > > > of > > > > > > > > the > > > > > > > > > > > other > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > types. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > How would alternative 2 now result in an > > under > > > > > > > > utilization > > > > > > > > > of > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > compared to alternative 3? If alternative 3 > > > > > strictly > > > > > > > > sets a > > > > > > > > > > > > higher > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > direct memory size and we use only little, > > > then I > > > > > > would > > > > > > > > > > expect > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > alternative 3 results in memory under > > > > utilization. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 13, 2019 at 4:19 PM Yang Wang < > > > > > > > > > > > danrtsey...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi xintong,till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Native and Direct Memory > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > My point is setting a very large max > direct > > > > > memory > > > > > > > size > > > > > > > > > > when > > > > > > > > > > > we > > > > > > > > > > > > > do > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > differentiate direct and native memory. > If > > > the > > > > > > direct > > > > > > > > > > > > > > > memory,including > > > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > direct memory and framework direct > > > memory,could > > > > > be > > > > > > > > > > calculated > > > > > > > > > > > > > > > > > > correctly,then > > > > > > > > > > > > > > > > > > i am in favor of setting direct memory > with > > > > fixed > > > > > > > > value. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Memory Calculation > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I agree with xintong. For Yarn and k8s,we > > > need > > > > to > > > > > > > check > > > > > > > > > the > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > configurations in client to avoid > > submitting > > > > > > > > successfully > > > > > > > > > > and > > > > > > > > > > > > > > failing > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > the flink master. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yang > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song <tonysong...@gmail.com > > > > >于2019年8月13日 > > > > > > > > > 周二22:07写道: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for replying, Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > About MemorySegment, I think you are > > right > > > > that > > > > > > we > > > > > > > > > should > > > > > > > > > > > not > > > > > > > > > > > > > > > include > > > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > issue in the scope of this FLIP. This > > FLIP > > > > > should > > > > > > > > > > > concentrate > > > > > > > > > > > > > on > > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > configure memory pools for > TaskExecutors, > > > > with > > > > > > > > minimum > > > > > > > > > > > > > > involvement > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > > > > > memory consumers use it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > About direct memory, I think > alternative > > 3 > > > > may > > > > > > not > > > > > > > > > having > > > > > > > > > > > the > > > > > > > > > > > > > > same > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > reservation issue that alternative 2 > > does, > > > > but > > > > > at > > > > > > > the > > > > > > > > > > cost > > > > > > > > > > > of > > > > > > > > > > > > > > risk > > > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > using memory at the container level, > > which > > > is > > > > > not > > > > > > > > good. > > > > > > > > > > My > > > > > > > > > > > > > point > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > > > both "Task Off-Heap Memory" and "JVM > > > > Overhead" > > > > > > are > > > > > > > > not > > > > > > > > > > easy > > > > > > > > > > > > to > > > > > > > > > > > > > > > > config. > > > > > > > > > > > > > > > > > > For > > > > > > > > > > > > > > > > > > > alternative 2, users might configure > them > > > > > higher > > > > > > > than > > > > > > > > > > what > > > > > > > > > > > > > > actually > > > > > > > > > > > > > > > > > > needed, > > > > > > > > > > > > > > > > > > > just to avoid getting a direct OOM. For > > > > > > alternative > > > > > > > > 3, > > > > > > > > > > > users > > > > > > > > > > > > do > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > get > > > > > > > > > > > > > > > > > > > direct OOM, so they may not config the > > two > > > > > > options > > > > > > > > > > > > aggressively > > > > > > > > > > > > > > > high. > > > > > > > > > > > > > > > > > But > > > > > > > > > > > > > > > > > > > the consequences are risks of overall > > > > container > > > > > > > > memory > > > > > > > > > > > usage > > > > > > > > > > > > > > > exceeds > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > budget. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 13, 2019 at 9:39 AM Till > > > > Rohrmann < > > > > > > > > > > > > > > > trohrm...@apache.org> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for proposing this FLIP > Xintong. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > All in all I think it already looks > > quite > > > > > good. > > > > > > > > > > > Concerning > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > first > > > > > > > > > > > > > > > > > > open > > > > > > > > > > > > > > > > > > > > question about allocating memory > > > segments, > > > > I > > > > > > was > > > > > > > > > > > wondering > > > > > > > > > > > > > > > whether > > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > strictly necessary to do in the > context > > > of > > > > > this > > > > > > > > FLIP > > > > > > > > > or > > > > > > > > > > > > > whether > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > could > > > > > > > > > > > > > > > > > > > > be done as a follow up? Without > knowing > > > all > > > > > > > > details, > > > > > > > > > I > > > > > > > > > > > > would > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > > concerned > > > > > > > > > > > > > > > > > > > > that we would widen the scope of this > > > FLIP > > > > > too > > > > > > > much > > > > > > > > > > > because > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > would > > > > > > > > > > > > > > > > > > have > > > > > > > > > > > > > > > > > > > > to touch all the existing call sites > of > > > the > > > > > > > > > > MemoryManager > > > > > > > > > > > > > where > > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > > > allocate > > > > > > > > > > > > > > > > > > > > memory segments (this should mainly > be > > > > batch > > > > > > > > > > operators). > > > > > > > > > > > > The > > > > > > > > > > > > > > > > addition > > > > > > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > > > > the memory reservation call to the > > > > > > MemoryManager > > > > > > > > > should > > > > > > > > > > > not > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > affected > > > > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > > this and I would hope that this is > the > > > only > > > > > > point > > > > > > > > of > > > > > > > > > > > > > > interaction > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > streaming job would have with the > > > > > > MemoryManager. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Concerning the second open question > > about > > > > > > setting > > > > > > > > or > > > > > > > > > > not > > > > > > > > > > > > > > setting > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > > > > direct memory limit, I would also be > > > > > interested > > > > > > > why > > > > > > > > > > Yang > > > > > > > > > > > > Wang > > > > > > > > > > > > > > > > thinks > > > > > > > > > > > > > > > > > > > > leaving it open would be best. My > > concern > > > > > about > > > > > > > > this > > > > > > > > > > > would > > > > > > > > > > > > be > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > > > would > > > > > > > > > > > > > > > > > > > > be in a similar situation as we are > now > > > > with > > > > > > the > > > > > > > > > > > > > > > > RocksDBStateBackend. > > > > > > > > > > > > > > > > > > If > > > > > > > > > > > > > > > > > > > > the different memory pools are not > > > clearly > > > > > > > > separated > > > > > > > > > > and > > > > > > > > > > > > can > > > > > > > > > > > > > > > spill > > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > a different pool, then it is quite > hard > > > to > > > > > > > > understand > > > > > > > > > > > what > > > > > > > > > > > > > > > exactly > > > > > > > > > > > > > > > > > > > causes a > > > > > > > > > > > > > > > > > > > > process to get killed for using too > > much > > > > > > memory. > > > > > > > > This > > > > > > > > > > > could > > > > > > > > > > > > > > then > > > > > > > > > > > > > > > > > easily > > > > > > > > > > > > > > > > > > > > lead to a similar situation what we > > have > > > > with > > > > > > the > > > > > > > > > > > > > cutoff-ratio. > > > > > > > > > > > > > > > So > > > > > > > > > > > > > > > > > why > > > > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > > setting a sane default value for max > > > direct > > > > > > > memory > > > > > > > > > and > > > > > > > > > > > > giving > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > an > > > > > > > > > > > > > > > > > > > > option to increase it if he runs into > > an > > > > OOM. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > @Xintong, how would alternative 2 > lead > > to > > > > > lower > > > > > > > > > memory > > > > > > > > > > > > > > > utilization > > > > > > > > > > > > > > > > > than > > > > > > > > > > > > > > > > > > > > alternative 3 where we set the direct > > > > memory > > > > > > to a > > > > > > > > > > higher > > > > > > > > > > > > > value? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 9, 2019 at 9:12 AM > Xintong > > > > Song < > > > > > > > > > > > > > > > tonysong...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the feedback, Yang. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regarding your comments: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Native and Direct Memory* > > > > > > > > > > > > > > > > > > > > > I think setting a very large max > > direct > > > > > > memory > > > > > > > > size > > > > > > > > > > > > > > definitely > > > > > > > > > > > > > > > > has > > > > > > > > > > > > > > > > > > some > > > > > > > > > > > > > > > > > > > > > good sides. E.g., we do not worry > > about > > > > > > direct > > > > > > > > OOM, > > > > > > > > > > and > > > > > > > > > > > > we > > > > > > > > > > > > > > > don't > > > > > > > > > > > > > > > > > even > > > > > > > > > > > > > > > > > > > > need > > > > > > > > > > > > > > > > > > > > > to allocate managed / network > memory > > > with > > > > > > > > > > > > > Unsafe.allocate() . > > > > > > > > > > > > > > > > > > > > > However, there are also some down > > sides > > > > of > > > > > > > doing > > > > > > > > > > this. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - One thing I can think of is > that > > > if > > > > a > > > > > > task > > > > > > > > > > > executor > > > > > > > > > > > > > > > > container > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > > killed due to overusing memory, > it > > > > could > > > > > > be > > > > > > > > hard > > > > > > > > > > for > > > > > > > > > > > > use > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > know > > > > > > > > > > > > > > > > > > > which > > > > > > > > > > > > > > > > > > > > > part > > > > > > > > > > > > > > > > > > > > > of the memory is overused. > > > > > > > > > > > > > > > > > > > > > - Another down side is that the > > JVM > > > > > never > > > > > > > > > trigger > > > > > > > > > > GC > > > > > > > > > > > > due > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > reaching > > > > > > > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > > > > > direct memory limit, because the > > > limit > > > > > is > > > > > > > too > > > > > > > > > high > > > > > > > > > > > to > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > reached. > > > > > > > > > > > > > > > > > > > That > > > > > > > > > > > > > > > > > > > > > means we kind of relay on heap > > > memory > > > > to > > > > > > > > trigger > > > > > > > > > > GC > > > > > > > > > > > > and > > > > > > > > > > > > > > > > release > > > > > > > > > > > > > > > > > > > direct > > > > > > > > > > > > > > > > > > > > > memory. That could be a problem > in > > > > cases > > > > > > > where > > > > > > > > > we > > > > > > > > > > > have > > > > > > > > > > > > > > more > > > > > > > > > > > > > > > > > direct > > > > > > > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > > > > usage but not enough heap > activity > > > to > > > > > > > trigger > > > > > > > > > the > > > > > > > > > > > GC. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Maybe you can share your reasons > for > > > > > > preferring > > > > > > > > > > > setting a > > > > > > > > > > > > > > very > > > > > > > > > > > > > > > > > large > > > > > > > > > > > > > > > > > > > > value, > > > > > > > > > > > > > > > > > > > > > if there are anything else I > > > overlooked. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Memory Calculation* > > > > > > > > > > > > > > > > > > > > > If there is any conflict between > > > multiple > > > > > > > > > > configuration > > > > > > > > > > > > > that > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > > > > explicitly specified, I think we > > should > > > > > throw > > > > > > > an > > > > > > > > > > error. > > > > > > > > > > > > > > > > > > > > > I think doing checking on the > client > > > side > > > > > is > > > > > > a > > > > > > > > good > > > > > > > > > > > idea, > > > > > > > > > > > > > so > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > > > Yarn / > > > > > > > > > > > > > > > > > > > > > K8s we can discover the problem > > before > > > > > > > submitting > > > > > > > > > the > > > > > > > > > > > > Flink > > > > > > > > > > > > > > > > > cluster, > > > > > > > > > > > > > > > > > > > > which > > > > > > > > > > > > > > > > > > > > > is always a good thing. > > > > > > > > > > > > > > > > > > > > > But we can not only rely on the > > client > > > > side > > > > > > > > > checking, > > > > > > > > > > > > > because > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > > > > > standalone cluster TaskManagers on > > > > > different > > > > > > > > > machines > > > > > > > > > > > may > > > > > > > > > > > > > > have > > > > > > > > > > > > > > > > > > > different > > > > > > > > > > > > > > > > > > > > > configurations and the client does > > see > > > > > that. > > > > > > > > > > > > > > > > > > > > > What do you think? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Aug 8, 2019 at 5:09 PM Yang > > > Wang > > > > < > > > > > > > > > > > > > > > danrtsey...@gmail.com> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi xintong, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for your detailed > proposal. > > > > After > > > > > > all > > > > > > > > the > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > configuration > > > > > > > > > > > > > > > > > > > > are > > > > > > > > > > > > > > > > > > > > > > introduced, it will be more > > powerful > > > to > > > > > > > control > > > > > > > > > the > > > > > > > > > > > > flink > > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > > > usage. I > > > > > > > > > > > > > > > > > > > > > > just have few questions about it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Native and Direct Memory > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > We do not differentiate user > direct > > > > > memory > > > > > > > and > > > > > > > > > > native > > > > > > > > > > > > > > memory. > > > > > > > > > > > > > > > > > They > > > > > > > > > > > > > > > > > > > are > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > included in task off-heap memory. > > > > Right? > > > > > > So i > > > > > > > > > don’t > > > > > > > > > > > > think > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > could > > > > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > > > set > > > > > > > > > > > > > > > > > > > > > > the -XX:MaxDirectMemorySize > > > properly. I > > > > > > > prefer > > > > > > > > > > > leaving > > > > > > > > > > > > > it a > > > > > > > > > > > > > > > > very > > > > > > > > > > > > > > > > > > > large > > > > > > > > > > > > > > > > > > > > > > value. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Memory Calculation > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the sum of and fine-grained > > > > > > memory(network > > > > > > > > > > memory, > > > > > > > > > > > > > > managed > > > > > > > > > > > > > > > > > > memory, > > > > > > > > > > > > > > > > > > > > > etc.) > > > > > > > > > > > > > > > > > > > > > > is larger than total process > > memory, > > > > how > > > > > do > > > > > > > we > > > > > > > > > deal > > > > > > > > > > > > with > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > > situation? > > > > > > > > > > > > > > > > > > > > > Do > > > > > > > > > > > > > > > > > > > > > > we need to check the memory > > > > configuration > > > > > > in > > > > > > > > > > client? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song < > > tonysong...@gmail.com> > > > > > > > > > 于2019年8月7日周三 > > > > > > > > > > > > > > 下午10:14写道: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi everyone, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > We would like to start a > > discussion > > > > > > thread > > > > > > > on > > > > > > > > > > > > "FLIP-49: > > > > > > > > > > > > > > > > Unified > > > > > > > > > > > > > > > > > > > > Memory > > > > > > > > > > > > > > > > > > > > > > > Configuration for > > > TaskExecutors"[1], > > > > > > where > > > > > > > we > > > > > > > > > > > > describe > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > improve > > > > > > > > > > > > > > > > > > > > > > > TaskExecutor memory > > configurations. > > > > The > > > > > > > FLIP > > > > > > > > > > > document > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > mostly > > > > > > > > > > > > > > > > > > > based > > > > > > > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > > > > > an > > > > > > > > > > > > > > > > > > > > > > > early design "Memory Management > > and > > > > > > > > > Configuration > > > > > > > > > > > > > > > > Reloaded"[2] > > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > > > > Stephan, > > > > > > > > > > > > > > > > > > > > > > > with updates from follow-up > > > > discussions > > > > > > > both > > > > > > > > > > online > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > offline. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This FLIP addresses several > > > > > shortcomings > > > > > > of > > > > > > > > > > current > > > > > > > > > > > > > > (Flink > > > > > > > > > > > > > > > > 1.9) > > > > > > > > > > > > > > > > > > > > > > > TaskExecutor memory > > configuration. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Different configuration > for > > > > > > Streaming > > > > > > > > and > > > > > > > > > > > Batch. > > > > > > > > > > > > > > > > > > > > > > > - Complex and difficult > > > > > configuration > > > > > > of > > > > > > > > > > RocksDB > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > Streaming. > > > > > > > > > > > > > > > > > > > > > > > - Complicated, uncertain and > > > hard > > > > to > > > > > > > > > > understand. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Key changes to solve the > problems > > > can > > > > > be > > > > > > > > > > summarized > > > > > > > > > > > > as > > > > > > > > > > > > > > > > follows. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Extend memory manager to > > also > > > > > > account > > > > > > > > for > > > > > > > > > > > memory > > > > > > > > > > > > > > usage > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > state > > > > > > > > > > > > > > > > > > > > > > > backends. > > > > > > > > > > > > > > > > > > > > > > > - Modify how TaskExecutor > > memory > > > > is > > > > > > > > > > partitioned > > > > > > > > > > > > > > > accounted > > > > > > > > > > > > > > > > > > > > individual > > > > > > > > > > > > > > > > > > > > > > > memory reservations and > pools. > > > > > > > > > > > > > > > > > > > > > > > - Simplify memory > > configuration > > > > > > options > > > > > > > > and > > > > > > > > > > > > > > calculations > > > > > > > > > > > > > > > > > > logics. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please find more details in the > > > FLIP > > > > > wiki > > > > > > > > > > document > > > > > > > > > > > > [1]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > (Please note that the early > > design > > > > doc > > > > > > [2] > > > > > > > is > > > > > > > > > out > > > > > > > > > > > of > > > > > > > > > > > > > > sync, > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > it > > > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > > > > appreciated to have the > > discussion > > > in > > > > > > this > > > > > > > > > > mailing > > > > > > > > > > > > list > > > > > > > > > > > > > > > > > thread.) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Looking forward to your > > feedbacks. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-49%3A+Unified+Memory+Configuration+for+TaskExecutors > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [2] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://docs.google.com/document/d/1o4KvyyXsQMGUastfPin3ZWeUXWsJgoL7piqp1fFYJvA/edit?usp=sharing > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 2:16 PM Xintong Song < > > > > > > > > > tonysong...@gmail.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for sharing your opinion Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > I'm also in favor of alternative 2. I was > wondering > > > > > whether > > > > > > > we > > > > > > > > > can > > > > > > > > > > > > avoid > > > > > > > > > > > > > > using Unsafe.allocate() for off-heap managed > memory > > > and > > > > > > > network > > > > > > > > > > > memory > > > > > > > > > > > > > with > > > > > > > > > > > > > > alternative 3. But after giving it a second > > thought, > > > I > > > > > > think > > > > > > > > even > > > > > > > > > > for > > > > > > > > > > > > > > alternative 3 using direct memory for off-heap > > > managed > > > > > > memory > > > > > > > > > could > > > > > > > > > > > > cause > > > > > > > > > > > > > > problems. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Yang, > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regarding your concern, I think what proposed in > > this > > > > > FLIP > > > > > > it > > > > > > > > to > > > > > > > > > > have > > > > > > > > > > > > > both > > > > > > > > > > > > > > off-heap managed memory and network memory > > allocated > > > > > > through > > > > > > > > > > > > > > Unsafe.allocate(), which means they are > practically > > > > > native > > > > > > > > memory > > > > > > > > > > and > > > > > > > > > > > > not > > > > > > > > > > > > > > limited by JVM max direct memory. The only parts > of > > > > > memory > > > > > > > > > limited > > > > > > > > > > by > > > > > > > > > > > > JVM > > > > > > > > > > > > > > max direct memory are task off-heap memory and > JVM > > > > > > overhead, > > > > > > > > > which > > > > > > > > > > > are > > > > > > > > > > > > > > exactly alternative 2 suggests to set the JVM max > > > > direct > > > > > > > memory > > > > > > > > > to. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 1:48 PM Till Rohrmann < > > > > > > > > > > trohrm...@apache.org> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the clarification Xintong. I > > understand > > > > the > > > > > > two > > > > > > > > > > > > alternatives > > > > > > > > > > > > > > > now. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I would be in favour of option 2 because it > makes > > > > > things > > > > > > > > > > explicit. > > > > > > > > > > > If > > > > > > > > > > > > > we > > > > > > > > > > > > > > > don't limit the direct memory, I fear that we > > might > > > > end > > > > > > up > > > > > > > > in a > > > > > > > > > > > > similar > > > > > > > > > > > > > > > situation as we are currently in: The user > might > > > see > > > > > that > > > > > > > her > > > > > > > > > > > process > > > > > > > > > > > > > > gets > > > > > > > > > > > > > > > killed by the OS and does not know why this is > > the > > > > > case. > > > > > > > > > > > > Consequently, > > > > > > > > > > > > > > she > > > > > > > > > > > > > > > tries to decrease the process memory size > > (similar > > > to > > > > > > > > > increasing > > > > > > > > > > > the > > > > > > > > > > > > > > cutoff > > > > > > > > > > > > > > > ratio) in order to accommodate for the extra > > direct > > > > > > memory. > > > > > > > > > Even > > > > > > > > > > > > worse, > > > > > > > > > > > > > > she > > > > > > > > > > > > > > > tries to decrease memory budgets which are not > > > fully > > > > > used > > > > > > > and > > > > > > > > > > hence > > > > > > > > > > > > > won't > > > > > > > > > > > > > > > change the overall memory consumption. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 11:01 AM Xintong Song < > > > > > > > > > > > tonysong...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Let me explain this with a concrete example > > Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Let's say we have the following scenario. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Total Process Memory: 1GB > > > > > > > > > > > > > > > > JVM Direct Memory (Task Off-Heap Memory + JVM > > > > > > Overhead): > > > > > > > > > 200MB > > > > > > > > > > > > > > > > Other Memory (JVM Heap Memory, JVM Metaspace, > > > > > Off-Heap > > > > > > > > > Managed > > > > > > > > > > > > Memory > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > Network Memory): 800MB > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > For alternative 2, we set > > -XX:MaxDirectMemorySize > > > > to > > > > > > > 200MB. > > > > > > > > > > > > > > > > For alternative 3, we set > > -XX:MaxDirectMemorySize > > > > to > > > > > a > > > > > > > very > > > > > > > > > > large > > > > > > > > > > > > > > value, > > > > > > > > > > > > > > > > let's say 1TB. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the actual direct memory usage of Task > > > Off-Heap > > > > > > Memory > > > > > > > > and > > > > > > > > > > JVM > > > > > > > > > > > > > > > Overhead > > > > > > > > > > > > > > > > do not exceed 200MB, then alternative 2 and > > > > > > alternative 3 > > > > > > > > > > should > > > > > > > > > > > > have > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > same utility. Setting larger > > > > -XX:MaxDirectMemorySize > > > > > > will > > > > > > > > not > > > > > > > > > > > > reduce > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > sizes of the other memory pools. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the actual direct memory usage of Task > > > Off-Heap > > > > > > Memory > > > > > > > > and > > > > > > > > > > JVM > > > > > > > > > > > > > > > > Overhead potentially exceed 200MB, then > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Alternative 2 suffers from frequent OOM. > > To > > > > > avoid > > > > > > > > that, > > > > > > > > > > the > > > > > > > > > > > > only > > > > > > > > > > > > > > > thing > > > > > > > > > > > > > > > > user can do is to modify the configuration > > and > > > > > > > increase > > > > > > > > > JVM > > > > > > > > > > > > Direct > > > > > > > > > > > > > > > > Memory > > > > > > > > > > > > > > > > (Task Off-Heap Memory + JVM Overhead). > Let's > > > say > > > > > > that > > > > > > > > user > > > > > > > > > > > > > increases > > > > > > > > > > > > > > > JVM > > > > > > > > > > > > > > > > Direct Memory to 250MB, this will reduce > the > > > > total > > > > > > > size > > > > > > > > of > > > > > > > > > > > other > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > pools to 750MB, given the total process > > memory > > > > > > remains > > > > > > > > > 1GB. > > > > > > > > > > > > > > > > - For alternative 3, there is no chance of > > > > direct > > > > > > OOM. > > > > > > > > > There > > > > > > > > > > > are > > > > > > > > > > > > > > > chances > > > > > > > > > > > > > > > > of exceeding the total process memory > limit, > > > but > > > > > > given > > > > > > > > > that > > > > > > > > > > > the > > > > > > > > > > > > > > > process > > > > > > > > > > > > > > > > may > > > > > > > > > > > > > > > > not use up all the reserved native memory > > > > > (Off-Heap > > > > > > > > > Managed > > > > > > > > > > > > > Memory, > > > > > > > > > > > > > > > > Network > > > > > > > > > > > > > > > > Memory, JVM Metaspace), if the actual > direct > > > > > memory > > > > > > > > usage > > > > > > > > > is > > > > > > > > > > > > > > slightly > > > > > > > > > > > > > > > > above > > > > > > > > > > > > > > > > yet very close to 200MB, user probably do > > not > > > > need > > > > > > to > > > > > > > > > change > > > > > > > > > > > the > > > > > > > > > > > > > > > > configurations. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Therefore, I think from the user's > > perspective, a > > > > > > > feasible > > > > > > > > > > > > > > configuration > > > > > > > > > > > > > > > > for alternative 2 may lead to lower resource > > > > > > utilization > > > > > > > > > > compared > > > > > > > > > > > > to > > > > > > > > > > > > > > > > alternative 3. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 16, 2019 at 10:28 AM Till > Rohrmann > > < > > > > > > > > > > > > trohrm...@apache.org > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I guess you have to help me understand the > > > > > difference > > > > > > > > > between > > > > > > > > > > > > > > > > alternative 2 > > > > > > > > > > > > > > > > > and 3 wrt to memory under utilization > > Xintong. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Alternative 2: set XX:MaxDirectMemorySize > > to > > > > Task > > > > > > > > > Off-Heap > > > > > > > > > > > > Memory > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > JVM > > > > > > > > > > > > > > > > > Overhead. Then there is the risk that this > > size > > > > is > > > > > > too > > > > > > > > low > > > > > > > > > > > > > resulting > > > > > > > > > > > > > > > in a > > > > > > > > > > > > > > > > > lot of garbage collection and potentially > an > > > OOM. > > > > > > > > > > > > > > > > > - Alternative 3: set XX:MaxDirectMemorySize > > to > > > > > > > something > > > > > > > > > > larger > > > > > > > > > > > > > than > > > > > > > > > > > > > > > > > alternative 2. This would of course reduce > > the > > > > > sizes > > > > > > of > > > > > > > > the > > > > > > > > > > > other > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > types. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > How would alternative 2 now result in an > > under > > > > > > > > utilization > > > > > > > > > of > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > compared to alternative 3? If alternative 3 > > > > > strictly > > > > > > > > sets a > > > > > > > > > > > > higher > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > direct memory size and we use only little, > > > then I > > > > > > would > > > > > > > > > > expect > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > alternative 3 results in memory under > > > > utilization. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 13, 2019 at 4:19 PM Yang Wang < > > > > > > > > > > > danrtsey...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi xintong,till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Native and Direct Memory > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > My point is setting a very large max > direct > > > > > memory > > > > > > > size > > > > > > > > > > when > > > > > > > > > > > we > > > > > > > > > > > > > do > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > differentiate direct and native memory. > If > > > the > > > > > > direct > > > > > > > > > > > > > > > memory,including > > > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > direct memory and framework direct > > > memory,could > > > > > be > > > > > > > > > > calculated > > > > > > > > > > > > > > > > > > correctly,then > > > > > > > > > > > > > > > > > > i am in favor of setting direct memory > with > > > > fixed > > > > > > > > value. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Memory Calculation > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I agree with xintong. For Yarn and k8s,we > > > need > > > > to > > > > > > > check > > > > > > > > > the > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > configurations in client to avoid > > submitting > > > > > > > > successfully > > > > > > > > > > and > > > > > > > > > > > > > > failing > > > > > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > > the flink master. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Best, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Yang > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song <tonysong...@gmail.com > > > > >于2019年8月13日 > > > > > > > > > 周二22:07写道: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for replying, Till. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > About MemorySegment, I think you are > > right > > > > that > > > > > > we > > > > > > > > > should > > > > > > > > > > > not > > > > > > > > > > > > > > > include > > > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > issue in the scope of this FLIP. This > > FLIP > > > > > should > > > > > > > > > > > concentrate > > > > > > > > > > > > > on > > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > configure memory pools for > TaskExecutors, > > > > with > > > > > > > > minimum > > > > > > > > > > > > > > involvement > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > > > > > memory consumers use it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > About direct memory, I think > alternative > > 3 > > > > may > > > > > > not > > > > > > > > > having > > > > > > > > > > > the > > > > > > > > > > > > > > same > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > reservation issue that alternative 2 > > does, > > > > but > > > > > at > > > > > > > the > > > > > > > > > > cost > > > > > > > > > > > of > > > > > > > > > > > > > > risk > > > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > using memory at the container level, > > which > > > is > > > > > not > > > > > > > > good. > > > > > > > > > > My > > > > > > > > > > > > > point > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > > > both "Task Off-Heap Memory" and "JVM > > > > Overhead" > > > > > > are > > > > > > > > not > > > > > > > > > > easy > > > > > > > > > > > > to > > > > > > > > > > > > > > > > config. > > > > > > > > > > > > > > > > > > For > > > > > > > > > > > > > > > > > > > alternative 2, users might configure > them > > > > > higher > > > > > > > than > > > > > > > > > > what > > > > > > > > > > > > > > actually > > > > > > > > > > > > > > > > > > needed, > > > > > > > > > > > > > > > > > > > just to avoid getting a direct OOM. For > > > > > > alternative > > > > > > > > 3, > > > > > > > > > > > users > > > > > > > > > > > > do > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > get > > > > > > > > > > > > > > > > > > > direct OOM, so they may not config the > > two > > > > > > options > > > > > > > > > > > > aggressively > > > > > > > > > > > > > > > high. > > > > > > > > > > > > > > > > > But > > > > > > > > > > > > > > > > > > > the consequences are risks of overall > > > > container > > > > > > > > memory > > > > > > > > > > > usage > > > > > > > > > > > > > > > exceeds > > > > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > > > budget. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 13, 2019 at 9:39 AM Till > > > > Rohrmann < > > > > > > > > > > > > > > > trohrm...@apache.org> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for proposing this FLIP > Xintong. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > All in all I think it already looks > > quite > > > > > good. > > > > > > > > > > > Concerning > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > first > > > > > > > > > > > > > > > > > > open > > > > > > > > > > > > > > > > > > > > question about allocating memory > > > segments, > > > > I > > > > > > was > > > > > > > > > > > wondering > > > > > > > > > > > > > > > whether > > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > strictly necessary to do in the > context > > > of > > > > > this > > > > > > > > FLIP > > > > > > > > > or > > > > > > > > > > > > > whether > > > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > could > > > > > > > > > > > > > > > > > > > > be done as a follow up? Without > knowing > > > all > > > > > > > > details, > > > > > > > > > I > > > > > > > > > > > > would > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > > concerned > > > > > > > > > > > > > > > > > > > > that we would widen the scope of this > > > FLIP > > > > > too > > > > > > > much > > > > > > > > > > > because > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > would > > > > > > > > > > > > > > > > > > have > > > > > > > > > > > > > > > > > > > > to touch all the existing call sites > of > > > the > > > > > > > > > > MemoryManager > > > > > > > > > > > > > where > > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > > > allocate > > > > > > > > > > > > > > > > > > > > memory segments (this should mainly > be > > > > batch > > > > > > > > > > operators). > > > > > > > > > > > > The > > > > > > > > > > > > > > > > addition > > > > > > > > > > > > > > > > > > of > > > > > > > > > > > > > > > > > > > > the memory reservation call to the > > > > > > MemoryManager > > > > > > > > > should > > > > > > > > > > > not > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > affected > > > > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > > this and I would hope that this is > the > > > only > > > > > > point > > > > > > > > of > > > > > > > > > > > > > > interaction > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > > > > streaming job would have with the > > > > > > MemoryManager. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Concerning the second open question > > about > > > > > > setting > > > > > > > > or > > > > > > > > > > not > > > > > > > > > > > > > > setting > > > > > > > > > > > > > > > a > > > > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > > > > direct memory limit, I would also be > > > > > interested > > > > > > > why > > > > > > > > > > Yang > > > > > > > > > > > > Wang > > > > > > > > > > > > > > > > thinks > > > > > > > > > > > > > > > > > > > > leaving it open would be best. My > > concern > > > > > about > > > > > > > > this > > > > > > > > > > > would > > > > > > > > > > > > be > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > > > would > > > > > > > > > > > > > > > > > > > > be in a similar situation as we are > now > > > > with > > > > > > the > > > > > > > > > > > > > > > > RocksDBStateBackend. > > > > > > > > > > > > > > > > > > If > > > > > > > > > > > > > > > > > > > > the different memory pools are not > > > clearly > > > > > > > > separated > > > > > > > > > > and > > > > > > > > > > > > can > > > > > > > > > > > > > > > spill > > > > > > > > > > > > > > > > > over > > > > > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > > a different pool, then it is quite > hard > > > to > > > > > > > > understand > > > > > > > > > > > what > > > > > > > > > > > > > > > exactly > > > > > > > > > > > > > > > > > > > causes a > > > > > > > > > > > > > > > > > > > > process to get killed for using too > > much > > > > > > memory. > > > > > > > > This > > > > > > > > > > > could > > > > > > > > > > > > > > then > > > > > > > > > > > > > > > > > easily > > > > > > > > > > > > > > > > > > > > lead to a similar situation what we > > have > > > > with > > > > > > the > > > > > > > > > > > > > cutoff-ratio. > > > > > > > > > > > > > > > So > > > > > > > > > > > > > > > > > why > > > > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > > setting a sane default value for max > > > direct > > > > > > > memory > > > > > > > > > and > > > > > > > > > > > > giving > > > > > > > > > > > > > > the > > > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > an > > > > > > > > > > > > > > > > > > > > option to increase it if he runs into > > an > > > > OOM. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > @Xintong, how would alternative 2 > lead > > to > > > > > lower > > > > > > > > > memory > > > > > > > > > > > > > > > utilization > > > > > > > > > > > > > > > > > than > > > > > > > > > > > > > > > > > > > > alternative 3 where we set the direct > > > > memory > > > > > > to a > > > > > > > > > > higher > > > > > > > > > > > > > value? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > > > > > > > > > > > Till > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 9, 2019 at 9:12 AM > Xintong > > > > Song < > > > > > > > > > > > > > > > tonysong...@gmail.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for the feedback, Yang. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Regarding your comments: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Native and Direct Memory* > > > > > > > > > > > > > > > > > > > > > I think setting a very large max > > direct > > > > > > memory > > > > > > > > size > > > > > > > > > > > > > > definitely > > > > > > > > > > > > > > > > has > > > > > > > > > > > > > > > > > > some > > > > > > > > > > > > > > > > > > > > > good sides. E.g., we do not worry > > about > > > > > > direct > > > > > > > > OOM, > > > > > > > > > > and > > > > > > > > > > > > we > > > > > > > > > > > > > > > don't > > > > > > > > > > > > > > > > > even > > > > > > > > > > > > > > > > > > > > need > > > > > > > > > > > > > > > > > > > > > to allocate managed / network > memory > > > with > > > > > > > > > > > > > Unsafe.allocate() . > > > > > > > > > > > > > > > > > > > > > However, there are also some down > > sides > > > > of > > > > > > > doing > > > > > > > > > > this. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - One thing I can think of is > that > > > if > > > > a > > > > > > task > > > > > > > > > > > executor > > > > > > > > > > > > > > > > container > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > > killed due to overusing memory, > it > > > > could > > > > > > be > > > > > > > > hard > > > > > > > > > > for > > > > > > > > > > > > use > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > know > > > > > > > > > > > > > > > > > > > which > > > > > > > > > > > > > > > > > > > > > part > > > > > > > > > > > > > > > > > > > > > of the memory is overused. > > > > > > > > > > > > > > > > > > > > > - Another down side is that the > > JVM > > > > > never > > > > > > > > > trigger > > > > > > > > > > GC > > > > > > > > > > > > due > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > reaching > > > > > > > > > > > > > > > > > > > > max > > > > > > > > > > > > > > > > > > > > > direct memory limit, because the > > > limit > > > > > is > > > > > > > too > > > > > > > > > high > > > > > > > > > > > to > > > > > > > > > > > > be > > > > > > > > > > > > > > > > > reached. > > > > > > > > > > > > > > > > > > > That > > > > > > > > > > > > > > > > > > > > > means we kind of relay on heap > > > memory > > > > to > > > > > > > > trigger > > > > > > > > > > GC > > > > > > > > > > > > and > > > > > > > > > > > > > > > > release > > > > > > > > > > > > > > > > > > > direct > > > > > > > > > > > > > > > > > > > > > memory. That could be a problem > in > > > > cases > > > > > > > where > > > > > > > > > we > > > > > > > > > > > have > > > > > > > > > > > > > > more > > > > > > > > > > > > > > > > > direct > > > > > > > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > > > > usage but not enough heap > activity > > > to > > > > > > > trigger > > > > > > > > > the > > > > > > > > > > > GC. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Maybe you can share your reasons > for > > > > > > preferring > > > > > > > > > > > setting a > > > > > > > > > > > > > > very > > > > > > > > > > > > > > > > > large > > > > > > > > > > > > > > > > > > > > value, > > > > > > > > > > > > > > > > > > > > > if there are anything else I > > > overlooked. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Memory Calculation* > > > > > > > > > > > > > > > > > > > > > If there is any conflict between > > > multiple > > > > > > > > > > configuration > > > > > > > > > > > > > that > > > > > > > > > > > > > > > user > > > > > > > > > > > > > > > > > > > > > explicitly specified, I think we > > should > > > > > throw > > > > > > > an > > > > > > > > > > error. > > > > > > > > > > > > > > > > > > > > > I think doing checking on the > client > > > side > > > > > is > > > > > > a > > > > > > > > good > > > > > > > > > > > idea, > > > > > > > > > > > > > so > > > > > > > > > > > > > > > that > > > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > > > Yarn / > > > > > > > > > > > > > > > > > > > > > K8s we can discover the problem > > before > > > > > > > submitting > > > > > > > > > the > > > > > > > > > > > > Flink > > > > > > > > > > > > > > > > > cluster, > > > > > > > > > > > > > > > > > > > > which > > > > > > > > > > > > > > > > > > > > > is always a good thing. > > > > > > > > > > > > > > > > > > > > > But we can not only rely on the > > client > > > > side > > > > > > > > > checking, > > > > > > > > > > > > > because > > > > > > > > > > > > > > > for > > > > > > > > > > > > > > > > > > > > > standalone cluster TaskManagers on > > > > > different > > > > > > > > > machines > > > > > > > > > > > may > > > > > > > > > > > > > > have > > > > > > > > > > > > > > > > > > > different > > > > > > > > > > > > > > > > > > > > > configurations and the client does > > see > > > > > that. > > > > > > > > > > > > > > > > > > > > > What do you think? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Aug 8, 2019 at 5:09 PM Yang > > > Wang > > > > < > > > > > > > > > > > > > > > danrtsey...@gmail.com> > > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi xintong, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for your detailed > proposal. > > > > After > > > > > > all > > > > > > > > the > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > configuration > > > > > > > > > > > > > > > > > > > > are > > > > > > > > > > > > > > > > > > > > > > introduced, it will be more > > powerful > > > to > > > > > > > control > > > > > > > > > the > > > > > > > > > > > > flink > > > > > > > > > > > > > > > > memory > > > > > > > > > > > > > > > > > > > > usage. I > > > > > > > > > > > > > > > > > > > > > > just have few questions about it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Native and Direct Memory > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > We do not differentiate user > direct > > > > > memory > > > > > > > and > > > > > > > > > > native > > > > > > > > > > > > > > memory. > > > > > > > > > > > > > > > > > They > > > > > > > > > > > > > > > > > > > are > > > > > > > > > > > > > > > > > > > > > all > > > > > > > > > > > > > > > > > > > > > > included in task off-heap memory. > > > > Right? > > > > > > So i > > > > > > > > > don’t > > > > > > > > > > > > think > > > > > > > > > > > > > > we > > > > > > > > > > > > > > > > > could > > > > > > > > > > > > > > > > > > > not > > > > > > > > > > > > > > > > > > > > > set > > > > > > > > > > > > > > > > > > > > > > the -XX:MaxDirectMemorySize > > > properly. I > > > > > > > prefer > > > > > > > > > > > leaving > > > > > > > > > > > > > it a > > > > > > > > > > > > > > > > very > > > > > > > > > > > > > > > > > > > large > > > > > > > > > > > > > > > > > > > > > > value. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Memory Calculation > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If the sum of and fine-grained > > > > > > memory(network > > > > > > > > > > memory, > > > > > > > > > > > > > > managed > > > > > > > > > > > > > > > > > > memory, > > > > > > > > > > > > > > > > > > > > > etc.) > > > > > > > > > > > > > > > > > > > > > > is larger than total process > > memory, > > > > how > > > > > do > > > > > > > we > > > > > > > > > deal > > > > > > > > > > > > with > > > > > > > > > > > > > > this > > > > > > > > > > > > > > > > > > > > situation? > > > > > > > > > > > > > > > > > > > > > Do > > > > > > > > > > > > > > > > > > > > > > we need to check the memory > > > > configuration > > > > > > in > > > > > > > > > > client? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song < > > tonysong...@gmail.com> > > > > > > > > > 于2019年8月7日周三 > > > > > > > > > > > > > > 下午10:14写道: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi everyone, > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > We would like to start a > > discussion > > > > > > thread > > > > > > > on > > > > > > > > > > > > "FLIP-49: > > > > > > > > > > > > > > > > Unified > > > > > > > > > > > > > > > > > > > > Memory > > > > > > > > > > > > > > > > > > > > > > > Configuration for > > > TaskExecutors"[1], > > > > > > where > > > > > > > we > > > > > > > > > > > > describe > > > > > > > > > > > > > > how > > > > > > > > > > > > > > > to > > > > > > > > > > > > > > > > > > > improve > > > > > > > > > > > > > > > > > > > > > > > TaskExecutor memory > > configurations. > > > > The > > > > > > > FLIP > > > > > > > > > > > document > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > mostly > > > > > > > > > > > > > > > > > > > based > > > > > > > > > > > > > > > > > > > > > on > > > > > > > > > > > > > > > > > > > > > > an > > > > > > > > > > > > > > > > > > > > > > > early design "Memory Management > > and > > > > > > > > > Configuration > > > > > > > > > > > > > > > > Reloaded"[2] > > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > > > > Stephan, > > > > > > > > > > > > > > > > > > > > > > > with updates from follow-up > > > > discussions > > > > > > > both > > > > > > > > > > online > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > offline. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This FLIP addresses several > > > > > shortcomings > > > > > > of > > > > > > > > > > current > > > > > > > > > > > > > > (Flink > > > > > > > > > > > > > > > > 1.9) > > > > > > > > > > > > > > > > > > > > > > > TaskExecutor memory > > configuration. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Different configuration > for > > > > > > Streaming > > > > > > > > and > > > > > > > > > > > Batch. > > > > > > > > > > > > > > > > > > > > > > > - Complex and difficult > > > > > configuration > > > > > > of > > > > > > > > > > RocksDB > > > > > > > > > > > > in > > > > > > > > > > > > > > > > > Streaming. > > > > > > > > > > > > > > > > > > > > > > > - Complicated, uncertain and > > > hard > > > > to > > > > > > > > > > understand. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Key changes to solve the > problems > > > can > > > > > be > > > > > > > > > > summarized > > > > > > > > > > > > as > > > > > > > > > > > > > > > > follows. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > - Extend memory manager to > > also > > > > > > account > > > > > > > > for > > > > > > > > > > > memory > > > > > > > > > > > > > > usage > > > > > > > > > > > > > > > > by > > > > > > > > > > > > > > > > > > > state > > > > > > > > > > > > > > > > > > > > > > > backends. > > > > > > > > > > > > > > > > > > > > > > > - Modify how TaskExecutor > > memory > > > > is > > > > > > > > > > partitioned > > > > > > > > > > > > > > > accounted > > > > > > > > > > > > > > > > > > > > individual > > > > > > > > > > > > > > > > > > > > > > > memory reservations and > pools. > > > > > > > > > > > > > > > > > > > > > > > - Simplify memory > > configuration > > > > > > options > > > > > > > > and > > > > > > > > > > > > > > calculations > > > > > > > > > > > > > > > > > > logics. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Please find more details in the > > > FLIP > > > > > wiki > > > > > > > > > > document > > > > > > > > > > > > [1]. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > (Please note that the early > > design > > > > doc > > > > > > [2] > > > > > > > is > > > > > > > > > out > > > > > > > > > > > of > > > > > > > > > > > > > > sync, > > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > > it > > > > > > > > > > > > > > > > > > > is > > > > > > > > > > > > > > > > > > > > > > > appreciated to have the > > discussion > > > in > > > > > > this > > > > > > > > > > mailing > > > > > > > > > > > > list > > > > > > > > > > > > > > > > > thread.) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Looking forward to your > > feedbacks. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thank you~ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Xintong Song > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [1] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-49%3A+Unified+Memory+Configuration+for+TaskExecutors > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [2] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > https://docs.google.com/document/d/1o4KvyyXsQMGUastfPin3ZWeUXWsJgoL7piqp1fFYJvA/edit?usp=sharing > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >