ансибловая боль
Jun. 17th, 2023 11:02 amОтлаживаю почему ассерты медленные.
import_playbook стоит 100мс. Кадждый. То есть три плейбуки раздельно на 240мс быстрее, чем плейбука, которая в конце делает импорт двух остальных.
Сами ассерты - это какой-то ппц. Математика на группах 130мс (математика: assert that group.foo|d( [] ) intersect groups.bar |d ()). 130мс. На процессоре с частотой 4ГГц. Это 500 миллионов инструкций, чтобы обработать пересечение групп с ~50 строк в худшем случае. Ассерт на каждый хост при 50 хостах - 50*0.1 = 5с потерянного времени. Ассерт перед каждым приложением - 5*50 = 250с. Да, алгоритмически это квадрат, или даже куб, но мы говорим про 50 штук. 50**3 = 125000. Сколько нужно времени современному процессору, чтобы чихнуть 125 тысяч раз?
... Но не в ансибле. И я решаю не микрооптимизацию рендеринга кадра на 144Гц, а конкретные лишние несколько минут в пайплайне.
(и нет, митоген замедляет ассерты, это известный феномен).
import_playbook стоит 100мс. Кадждый. То есть три плейбуки раздельно на 240мс быстрее, чем плейбука, которая в конце делает импорт двух остальных.
Сами ассерты - это какой-то ппц. Математика на группах 130мс (математика: assert that group.foo|d( [] ) intersect groups.bar |d ()). 130мс. На процессоре с частотой 4ГГц. Это 500 миллионов инструкций, чтобы обработать пересечение групп с ~50 строк в худшем случае. Ассерт на каждый хост при 50 хостах - 50*0.1 = 5с потерянного времени. Ассерт перед каждым приложением - 5*50 = 250с. Да, алгоритмически это квадрат, или даже куб, но мы говорим про 50 штук. 50**3 = 125000. Сколько нужно времени современному процессору, чтобы чихнуть 125 тысяч раз?
... Но не в ансибле. И я решаю не микрооптимизацию рендеринга кадра на 144Гц, а конкретные лишние несколько минут в пайплайне.
(и нет, митоген замедляет ассерты, это известный феномен).