AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.10.2025, 01:56   #1  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
340 / 930 (32) +++++++
Регистрация: 23.10.2012
Lightbulb AX2009 компиляция на основе заданий
Вводная часть:
В текущем проекте используем различного рода автоматизации процессов, например, таких как CI/CD.
Данные процессы должны отвечать критериям отказоустойчивости и быстродействия.
Вопрос с быстродействием проведения глобальной компиляции приложения длительное время не давал покоя. Изначально он занимал в районе 1.5 часа.
Путём оптимизации конфигураций приложения данное значение удалось сократить на 40%. Например, выявили корреляцию в 1% между временем компиляции и увеличением тактовой частоты ЦПУ на 3%. Только занимаемое процессом время всё равно оставалось приближено к одному часу и быстрее разогнать не получалось - упёрлись в возможности вертикального масштабирования.
В рамках факультатива взял в проработку оптимизационный вопрос по многопоточной компиляции в Аксапте 2009. В отличии от 2012 версии, где данным процессом заведует сам АОС запущенный со специальными параметрами, в 2009 не было выявлено ни единого намёка на возможность осуществления данного действия без использования клиентского приложения (цели написать своё приложение, осуществляющее компиляцию, не стояло). Данное ограничение и послужило основой решения, о котором далее пойдет речь, позволившего сократить время компиляции ещё на 30% от номинального (далее система упирается в блокировки aod/aoi файлов).

Основная часть:
Необходимо отметить, что данное решение находится на стадии тестирования (ссылка на репозиторий) и представляет собой: 3 таблицы, 2 класса.
Класс TaskBasedCompileProcessCreator - подготавливает приложение, формируя задания. Необходимо учитывать, что перечень компилируемых веток дерева приложения ограничен программно и может потребовать внесения корректировок при использовании в ваших проектах.
Класс TaskBasedCompileWorker - запускает обработчик, цель которого выполнить все сгенерированные задания. Результат компиляции сохраняется в таблицу TaskBasedCompileResult (см. SysCompilerOutput::exportLog).
Для отслеживания статуса выполнения можно использовать таблицу TaskBasedCompileProcess с запросом вида:
X++:
SELECT count(RecId), minOf(StartDT), maxOf(EndDT) FROM TaskBasedCompileProcess
group by Status
При анализе быстродействия было выявлено, что 6 обработчиков является оптимальным количеством, при превышении которого быстродействие идёт на спад по причине блокировок aoi/aod файлов.
За это сообщение автора поблагодарили: Logger (15).
Теги
ax2009, axbuild.exe

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax2009: сервер постоянно что-то делает. почему? mazzy DAX: Администрирование 30 28.10.2025 13:55
глобальная компиляция в AX2009 в пакете oleggy DAX: Программирование 3 17.11.2023 15:13
axinthefield: Choosing a Single Deployment or Multiple Deployments of AX2009 Blog bot DAX Blogs 0 15.06.2011 03:25
Khue Trinh: Fill Utility in AX2009 Blog bot DAX Blogs 0 28.09.2010 10:05
Shekhar: Dynamics AX2009 : Standalone Installation on Vista with Role centres and workflow. Blog bot DAX Blogs 0 30.03.2010 15:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:31.