+1 for making it configurable in the same Docker image.

Cheers,
Till

On Fri, Oct 16, 2020 at 12:56 PM Chesnay Schepler <ches...@apache.org>
wrote:

> If it is possible to support both allocators in a single image then we
> should definitely go with that option.
>
> On 10/16/2020 12:21 PM, Yun Tang wrote:
> > Thanks for Yang's suggestion. I think this could be a better choice.
> > We could install jemalloc and only enable it in LD_PRELOAD when user
> pass specific configuration for docker-entrypoint.sh.
> > By doing so, we could avoid to create another docker image tags and also
> offer ability to reduce memory fragmentation problem.
> >
> > Does anyone else have other ideas?
> >
> > Best
> > Yun Tang
> > ________________________________
> > From: Yang Wang <danrtsey...@gmail.com>
> > Sent: Thursday, October 15, 2020 14:59
> > To: dev <dev@flink.apache.org>
> > Subject: Re: [DISCUSS][docker] Adopt Jemalloc as default memory
> allocator for debian based Flink docker image
> >
> > Thanks Yun Tang for starting this discussion.
> >
> > I think this is very important when deploy Flink with container
> environment
> > in production. I just
> > have quick question. Could we have both memory allocator(e.g. glibc,
> > jemalloc) in the Flink
> > official image and enable a specific one by setting ENV?
> >
> > Best,
> > Yang
> >
> > Yu Li <car...@gmail.com> 于2020年10月14日周三 下午12:23写道:
> >
> >> Thanks for debugging and resolving the issue and driving the discussion
> >> Yun!
> >>
> >> For the given solutions, I prefer option 1 (supply another Dockerfile
> using
> >> jemalloc as default memory allocator) because of the below reasons:
> >>
> >> 1. It's hard to say jemalloc is always better than ptmalloc (glibc
> malloc),
> >> or else glibc should have already adopted it as the default memory
> >> allocator. And as indicated here [1], in some cases jemalloc will
> >> consume as much as twice the memory than glibc
> >>
> >> 2. All existing Flink docker images use glibc, if we change the default
> >> memory allocator to jemalloc and only supply one series of images, we
> will
> >> leave those having better performance with glibc no other choices but
> >> staying with old images. In another word, there's a risk of introducing
> new
> >> problems while fixing an existing one if choosing option-2.
> >>
> >> And there is a third option considering the efforts of maintaining more
> >> images if the memory leak issue is not widely observed, that we could
> >> document the steps of building Dockerfile with jemalloc as default
> >> allocator so users could build it when needed, which leaves the burden
> to
> >> our users so for me it's not the best option.
> >>
> >> Best Regards,
> >> Yu
> >>
> >> [1] https://stackoverflow.com/a/33993215
> >>
> >> On Tue, 13 Oct 2020 at 15:34, Yun Tang <myas...@live.com> wrote:
> >>
> >>> Hi all
> >>>
> >>> Users report they meet serious memory leak when submitting jobs
> >>> continously in session mode within k8s (please refer to FLINK-18712[1]
> ),
> >>> and I also reproduce this to find this is caused by memory
> fragmentation
> >> of
> >>> glibc [2][3] and provide solutions to fix this:
> >>>
> >>>    *   Quick but not very clean solution to limit the memory pool of
> >> glibc,
> >>> limit MALLOC_ARENA_MAX to 2
> >>>
> >>>    *   More general solution by rebuilding the image to install
> >>> libjemalloc-dev and add the libjemalloc.so it to LD_PRELOAD
> >>>
> >>> The reporter adopted the 2nd solution to fix this issue eventually.
> Thus,
> >>> I begin to think whether we should change our Dockerfile to adopt
> >> jemalloc
> >>> as default memory allocator [4].
> >>>  From my point of view, we have two choices:
> >>>
> >>>    1.  Introduce another Dockerfile using jemalloc as default memory
> >>> allocator, which means Flink needs another two new image tags to build
> >>> docker with jemalloc while default docker still use glibc.
> >>>    2.  Set the default memory allocator as jemalloc in our existing
> >>> Dockerfiles, which means Flink offer docker image with jemalloc by
> >> default.
> >>> I prefer the 2nd option as our company already use jemalloc as default
> >>> memory allocator for JDK at our production environment due to messages
> >> from
> >>> os team warning of glibc's memory fragmentation.
> >>> Moreover, I found several open source projects adopting jemalloc as
> >>> default memory allocator within their images to resolve memory
> >>> fragmentation problem, e.g fluent [5], home-assistant [6].
> >>>
> >>> What do you guys think of this issue?
> >>>
> >>> [1] https://issues.apache.org/jira/browse/FLINK-18712
> >>> [2]
> >>>
> >>
> https://www.gnu.org/software/libc/manual/html_mono/libc.html#Freeing-after-Malloc
> >>> [3] https://sourceware.org/bugzilla/show_bug.cgi?id=15321
> >>> [4] https://issues.apache.org/jira/browse/FLINK-19125
> >>> [5]
> >>>
> >>
> https://docs.fluentbit.io/manual/v/1.0/installation/docker#why-there-is-no-fluent-bit-docker-image-based-on-alpine-linux
> >>> [6] https://github.com/home-assistant/core/pull/33237
> >>>
> >>>
> >>> Best
> >>> Yun Tang
> >>>
>
>

Reply via email to