Как стать автором
Поиск
Написать публикацию
Обновить

Ускоряем запуск Ruby on Rails используя набор патчей RVM railsexpress

Время на прочтение2 мин
Количество просмотров7.4K
Эта статья для тех, кто хочет ускорить запуск рельс, а заодно ускорить работу интерпретатора ruby.
О том как установить RVM (Ruby version manager) уже написано много статей, поэтому я перейду сразу к делу.
Список патчей в RailsExpress для Ruby 1.9.3-p362
(это последняя версия руби на момент написания статьи)
Applying patch railsexpress/01-fix-make-clean.patch
Applying patch railsexpress/02-railsbench-gc.patch
Applying patch railsexpress/03-display-more-detailed-stack-trace.patch
Applying patch railsexpress/04-fork-support-for-gc-logging.patch
Applying patch railsexpress/05-track-live-dataset-size.patch
Applying patch railsexpress/06-webrick_204_304_keep_alive_fix.patch
Applying patch railsexpress/07-export-a-few-more-symbols-for-ruby-prof.patch
Applying patch railsexpress/08-thread-variables.patch
Applying patch railsexpress/09-faster-loading.patch
Applying patch railsexpress/10-falcon-st-opt.patch
Applying patch railsexpress/11-falcon-sparse-array.patch
Applying patch railsexpress/12-falcon-array-queue.patch


1. Указываем RVM с какими параметрами надо компилить Ruby

Для этого нужно создать файл .rvmrc в домашнем каталоге.
$ nano -e $HOME/.rvmrc

И явно указать RVM с какими параметрами компилировать Ruby.
CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer"
rvm_configure_env=(CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer")

Здесь параметр -march=native указывает компилятору на автоматический выбор типа процессора и поддерживаемых этим процессором возможностей. Если вы точно знаете тип своего процессора, то можно указать, например, -march=prescott

Сохранить изменения: [ctrl + X], потом [Y] — чтобы выйти и сохранить в nano.

2. Обновляем списки доступных версий Ruby в RVM

$ rvm get head


3. Устанавливаем / переустанавливаем ruby с применением патчей railsexpress

для версии Ruby 1.9.3-p362
$ rvm reinstall 1.9.3-p362 --patch railsexpress -n railsexpress -j 3
$ rvm list
$ rvm use ruby-1.9.3-p362-railsexpress --default

Если нужно всегда последнюю версию, то вместо p362 надо указать head,
но для последней версии патчи появляются с запазданием, это надо иметь ввиду.

4. Бонус

export RUBY_HEAP_MIN_SLOTS=1000000
export RUBY_HEAP_FREE_MIN=500000
export RUBY_HEAP_SLOTS_INCREMENT=1000000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=100000000


5. Меряем скорость

Скорость запуска рельс можно мерить так:
$ time bundle exec rake routes

В моем случае:
до
real 0m42.547s
user 0m36.502s
sys 0m2.248s

после
real 0m17.200s
user 0m15.089s
sys 0m1.072s


Здесь можно почитать дополнительную инфу по патчам https://github.com/skaes/rvm-patchsets
Теги:
Хабы:
Всего голосов 15: ↑15 и ↓0+15
Комментарии14

Публикации

Ближайшие события