-
Notifications
You must be signed in to change notification settings - Fork 336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add jemalloc support #198
Add jemalloc support #198
Conversation
One option is to only use |
@@ -25,8 +25,11 @@ RUN set -ex \ | |||
libssl1.0-dev \ | |||
ruby \ | |||
' \ | |||
&& runtimeDeps=' \ | |||
libjemalloc-dev | |||
' \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had to add it as a separate set of dependencies, because buildDeps
get purged after the build is finished.
Is there a particular reason not to do this with alpine as well? |
@ianks not particularly. I'll give at shot at building alpine images. |
@ianks I just tried to compile Alpine with It seems like we are out of luck for the time being for Alpine+jemalloc. |
This is weird because as far as I know Redis uses jemalloc and there is a redis:alpine Docker image :/ |
@n-rodriguez It seems like this has to do with how Ruby and Redis handle the pointer returned by getcwd differently:
|
@marcotc thanks for the answer! |
2.2/jessie/Dockerfile
Outdated
@@ -62,6 +66,9 @@ RUN set -ex \ | |||
&& gem install bundler --version "$BUNDLER_VERSION" --force \ | |||
&& rm -r /root/.gem/ | |||
|
|||
# TODO remove me before merging | |||
RUN ruby -r rbconfig -e "RbConfig::CONFIG['LIBS'].include?('jemalloc') ? puts('Ruby is compiled with jemalloc') : warn('JEMALLOC IS MISSING FROM RUBY')" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe nice to leave this as a sanity check with RUN ruby -r rbconfig -e "abort 'jemalloc not enabled' unless RbConfig::CONFIG['LIBS'].include?('jemalloc')"
Thanks for working on this @marcotc, we're currently "patching" jemalloc support off the official Docker library using some custom scripts so this is a huge help by getting it official. |
There is no issues in https://github.com/hoteltonight/ruby so may be I can comment here As I understood this is published in Docker Hub as https://hub.docker.com/r/hoteltonight/ruby-jemalloc/ - is it possible to make relations between docker hub, github repo, etc. more transparent? |
I don't understand the issues that are going on, but it would be awesome to have jmalloc support built-in to our Ruby containers. Is this stalled? |
I think we were still uncertain whether this is the recommended or endorsed way to build ruby according to ruby upstream. We try to keep the images as close to upstream release recommendations as possible. See also #192 (comment). |
Would a PR with a new separate set of debian images using jemalloc be acceptable? |
Also, would it be possible to specify an environment variable when building? There seems to be a |
Jemalloc is not "sticking" to Ruby 2.6rc as it does with older versions. Step 11/17 : RUN ruby -r rbconfig -e "puts RbConfig::CONFIG['LIBS']"
---> Running in e0dc1e0e4115
-lm Still investigating this. |
Now we have this scenario: I'm wondering if we should just publish a separate set of images with the prefix |
I wholeheartedly agree, and recommend that such work happen in a separate repo/image until Ruby upstream decides |
Just to clarify @tianon, are you saying |
I'm saying the docker-library team would prefer to not maintain them
unless/until they're officially recommended and supported by Ruby upstream.
I do see value in them existing, and recommend that someone create and
maintain them elsewhere, which will serve to help make them easier for
folks to consume and test, which will hopefully help convince upstream that
jemalloc is something they can rely on and should officially support or
even recommend outright.
Hopefully that helps clarify our position (and our hesitance to do anything
further with this PR at this time).
|
I totally understand @tianon, thanks for clarifying. |
Is there a forked image I can use? or are we not there yet? |
Here in my company we have been using this fork from Hotel Tonight in production for a few months and it works great. We use |
@ashleyhull-versent I used hoteltonight image for some time but it is much easier to build your own based on official docker image, just take a look at 2-3 changes in Dockerfile and go ahead |
Does anybody know who's actually at fault with this? Is there a ticket upstream with Ruby or Alpine? |
Closing PR until a recommendation from Ruby upstream. Discussion can continue on #182. See also #182 (comment) |
Third time is the charm!
I had this PR open for a few weeks and realized there's work being done around
jemalloc
.Should we add jemalloc only for Debian? If so, I'll just move my logic to thetemplate
file.This PR adds
jemalloc
all Linux images:debian
andslim
.I tried to make it generic, but I'm not sure we need this level of complexity here.fixes #182, closes #190