Overall YJIT is 38.9% faster than interpreted CRuby! On Railsbench specifically, YJIT is 38.9% faster than CRuby!
brew upgrade ruby-build
rbenv install 3.2.0-rc1
rbenv global 3.2.0-rc1
然后设置 ENV 开启 YJIT,设置到 .bash_profile
或其他地方
export RUBY_YJIT_ENABLE=true
然后检查 YJIT 是否开启,启动 irb
irb> RubyVM::YJIT.enabled?
=> true
等等,似乎我搞错了,YJIT 没开对
推荐一下 fullstaq-ruby https://fullstaqruby.org/ 的镜像 https://quay.io/repository/evl.ms/fullstaq-ruby?tab=tags
https://github.com/fullstaq-ruby/server-edition
之前用官方的镜像内存一直涨,换的他们的 jemalloc 镜像内存占用就稳定了,他们的镜像有特殊的优化补丁,你也可以测试一下,他们的镜像好像也支持 yjit
export RUBY_CONFIGURE_OPTS=--enable-yjit
rvm install ruby-3.1.3
dev@ubuntu:~/Workspace/github$ ruby --yjit -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) +YJIT [x86_64-linux]
dev@ubuntu:~/Workspace/github$ irb
3.1.3 :001 > RubyVM::YJIT.enabled?
=> true
这次正确开启了,打包了好几次。目前线上已经以 Ruby 3.2.0 + YJIT 的模式运行了。
还发现 ruby:3.2-alpine 的 Docker Image 引入以后,带来了 /root
文件夹权限问题,之前服务器的 Docker 版本 18 不支持,查了好久原来是得升级到 Docker v20 以上的版本。