В новой версии утилит были проведены значительные оптимизации времени работы.
Никогда ранее мы не уделяли такого внимания скорости. Системные утилиты это не веб-приложение и требования к скорости работы не стоят на первом месте. Тем не менее, плотная интеграция с системой в конечном итоге повлияла на задержки во многих местах, включая время загрузки, время входа и выхода из сеанса, установку пакетов и т.д.
В версии 3.3.2 были проведены множественные оптимизации как самих утилит, так и их вызовов из скриптов. Для быстрого получения значений переменных была написана утилита /usr/libexec/calculate/cl-variable, ускорена работа с файлами настроек, добавлены проверки на необходимость обновления профиля пользователя, для исключения вызова утилит был добавлен кэш настраиваемых пакетов. Внесённые изменения никак не отразились на функционале утилит.
Некоторая статистика времени работы:
- настройка сеанса пользователя: 11 сек. -> 5.2 сек. (2.12 раз);
- обновление настроек сеанса: 2.6 сек. -> 0.72 сек. (3.6 раз);
- настройка системы при первой загрузке (/etc/init.d/calculate restart): 42 сек. -> 21.2 сек. (1.98 раз);
- настройка системы (cl-setup-system): 46 сек.-> 23 сек. (2 раз);
- перезапуск calculate-core: 5.8 сек. -> 2.1 сек. (2.76 раз);
- выполнение clt-шаблонов (cl-setup-system
T clt): 3.2 сек.> 1.2 сек. (2.28 раз); - настройка пакета (cl-core-setup -
pkg-name=…): 6.8 сек.> 2.5 сек. (2.72 раз); - вход в сеанс: 9 сек. -> 3 сек. (3 раз);
- выход из сеанса: 5 сек. -> 1.5 сек. (3.3 раз).
Цифры могут отличаться в зависимости от аппаратной конфигурации.
Помимо этого в шаблонах был изменён механизм настройки запуска служб. Теперь для исключения службы из автозагрузки вместо создания clt-шаблона, достаточно выполнить “rc-update del имя_службы”. Учёт настроенных служб теперь ведётся в файле /etc/calculate/ini.env.