Как уменьшить соотношение пользовательского времени к системному времени для команд Rails 3 в Linux

В настоящее время я запускаю Rails 3 в Ubuntu Linux, и я получаю то, что кажется очень долгим временем отклика для простых команд. Например, если я вызываю db:rollback для удаления крошечной таблицы из 4 столбцов и 0 строк, это занимает ~30 секунд.

paul@paul-laptop:~/rails_projects/foglift$ time rake db:rollback
(in /home/paul/rails_projects/foglift)
==  CreateResults: reverting ==================================================
-- drop_table(:results)
   -> 0.0013s
==  CreateResults: reverted (0.0014s) =========================================


real    0m27.946s
user    0m26.570s
sys     0m1.284s

Меня беспокоит высокое соотношение времени пользователя и времени системы. Есть ли возможность диагностировать или устранить это?

Любая помощь будет принята с благодарностью.

Спасибо! Павел


person Paul Pettengill    schedule 16.03.2011    source источник


Ответы (1)


Вы действительно не сможете изменить это очень сильно. Это результат использования интерпретируемого языка и мощной/гибкой среды для веб-разработки.

Когда вы запускаете команду, интерпретатор ruby ​​должен быть загружен вместе со средой rails и вашим приложением, прежде чем он сможет запустить откат. Это похоже на запуск сервера Rails и последующий откат.

Это может быть болезненно при сборке, но есть и преимущества. Ваши миграции могут содержать логику, использующую классы из вашего приложения для принятия правильных решений о том, как выполнять миграции. Долгосрочная ремонтопригодность здесь, безусловно, является большим преимуществом.

Кроме того, модели БД обычно не меняются часто, мощность важнее, чем суперскорость.

person Brandon    schedule 16.03.2011
comment
Спасибо, это имеет смысл. Я читал, что высокое время процессора по сравнению с системным временем обычно означает, что у вас что-то не так с вашей программой, спасибо, что успокоили меня. - person Paul Pettengill; 18.03.2011