The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Разработчики Ubuntu проанализировали эффективность включения оптимизации PGO

20.11.2024 08:38

Компания Canonical опубликовала результат оценки изменения производительности при пересборке пакетов с включением оптимизации на основе результатов профилирования кода (PGO - Profile-guided optimization), позволяющей генерировать более оптимальный код на основе анализа особенностей выполнения программы. В ходе проделанной работы был сделан вывод, что включение PGO позволило на 5-7% снизить нагрузку на CPU и ускорить время сборки.

В ходе проведённого эксперимента была измерена производительность сборки пакетов OpenSSL, GDB, Emacs и Python3.12 в виртуальном окружении QEMU, эмулирующем систему RISC-V на компьютере с архитектурой x86_64. Разница производительности оценивалась для QEMU, собранного с опциями по умолчанию и с включением PGO. Тестируемые пакеты для сборки были выбраны с расчётом, что в них используются разные языки программирования, а объём кода соответствует 1-6 часам сборки в эмуляторе.

С практической стороны, эксперимент позволил добиться повышения производительности сборочных окружений для платформы RISC-V, запускаемых при помощи эмулятора. Сборочные работы, ранее выполняемые за сутки, при задействовании PGO стали выполняться почти на два часа быстрее, что дало возможность ежедневно производить на том же сервере две дополнительные полные сборки.









  1. Главная ссылка к новости (https://canonical.com/blog/pro...)
  2. OpenNews: Выпуск дистрибутива CachyOS 241110 с поддержкой THP Shrinker и AMD Cache Optimizer
  3. OpenNews: Доступен GameMode 1.7, оптимизатор производительности игр в Linux
  4. OpenNews: Oracle опубликовал систему автоматической оптимизации параметров ядра Linux
  5. OpenNews: Проект Minotaur развивает оптимизатор векторных инструкций для LLVM
  6. OpenNews: Доступна Real-time редакция Ubuntu, оптимизированная для процессоров Intel Core
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62262-pgo
Ключевые слова: pgo, ubuntu, optimization
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (58) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 09:49, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Питон раза в 2 ускоряется в пго билде с парой дополнительных флагов.
     
     
  • 2.4, Аноним (4), 10:03, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +25 +/
    Самый лучший способ ускорить питоновские приложения -- это переписать их на другой язык.
     
     
  • 3.5, Аноним (1), 10:06, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это надо переписывать. Поверь, бесплатное ускорение это очень выгодно. А если пользователь ждёт завершения, ещё и приятно.
     
     
  • 4.43, Бывалый Смузихлёб (ok), 13:45, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    только оно не бесплатное
     
     
  • 5.44, Аноним (1), 13:58, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > только оно не бесплатное

    Ничего не надо делать, пару команд в сборочный скрипт добавить. Прочее ускорение потребует рефакторинга кода, изменения структур данных, замены компонентов и так далее. Добавить пару команд и задействовать компилятор более полноценно, это, фактически, бесплатно. И максимально универсально.

     
  • 4.59, Аноним (59), 23:30, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Переписывать дорого. А надеяться на всякие хаки которые позволяют выжать из питона ещё десяток процентов, при том что он отстаёт от компилируемых языков в десятки раз и не умеет в многопоточность - глупо. Единственная правильная стратегия - на питоне ничего не писать с самого начала.
     
  • 3.9, Аноним (9), 10:17, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Время первого запуска возрастает до бесконечности. Не самый лучший способ.
     
  • 3.15, Аноним (15), 10:36, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага, на ассемблер, но есть нюанс...
     
     
  • 4.19, Аноним (19), 10:42, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Ассемблер может что ускорить только путем срезания острых углов дополнительных проверок. По факту путем снижения безопасТности.
     
     
  • 5.32, Аноним (32), 11:34, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Ассемблер может что ускорить только путем срезания острых углов
    > дополнительных проверок. По факту путем снижения безопасТности.

    Как показала соседняя новость с питонокодом в needrestart'е убунт - там тоже с безопасностью не очень оказалось. Оказывается ненужные проверки можно срезать и на питоне. Ну и что что всякая лабуда атакующего под рутом в результате выполняется?! Зато прогер времени себе сэкономил на кодинге проверок!

     
  • 5.56, Аноним (-), 22:20, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Не только, он ещё может и манипулировать памятью так как ни в одном языке вы это не сделаете. Только  человек не компилятор. Если человек где-то маленький участок кода и может оптимизировать, а вот огромный кусок кода переработать человеку уже не так просто. Именно поэтому и нужны языки программирования.
     
  • 3.31, Аноним (-), 11:33, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Самый лучший способ ускорить питоновские приложения -- это переписать их на другой язык.

    Редхат что-то такое и начал наконец для своего пакетника. Правда, на цать лет позже всех остальных. Энтерпрайзный софт как он есть - кормить клиентуру заплатившую миллионы максимально глюкавым, тормозным и непотребным гуано, "с лопаты". Энтерпрайз в интерьере.

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

     
  • 3.41, Соль земли (?), 12:58, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лучший способ написать хорошее приложение - это сначала написать плохое. Прогресс невозможен без ошибок.
     
     
  • 4.58, YetAnotherOnanym (ok), 23:19, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет. Написав плохое приложение, вы не напишете хорошее, если не будете к этому страмиться. Поэтому лучший способ написать хорошее приложение - стремиться написать хорошее приложение.
     
  • 3.63, ffsdmad (ok), 09:00, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ага, стоит перепЕсать на Руст и выкинуть
     
  • 2.8, Аноним (-), 10:16, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Питон раза в 2 ускоряется в пго билде с парой дополнительных флагов.

    Это вы по тем графикам вывод сделали? Обожаю графики где ось начинается не с ноля, сразу иследователи такие важные и нужные. А реально эти 5% разглядеть на фоне нормального графика...

     
     
  • 3.17, Аноним (1), 10:39, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет конечно, эти лалки открыли для себя пго 10 лет спустя после всех остальных. Именно поэтому какой-то смысл нести деньги есть только тем, у кого имеются разрабы. Ну, хотя бы, и шляпе. А эти имитируют бурную деятельность на самом деле.
     
     
  • 4.28, Аноним (-), 11:24, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет конечно, эти лалки открыли для себя пго 10 лет спустя после всех остальных.
    > Именно поэтому какой-то смысл нести деньги есть только тем, у кого имеются разрабы.
    > Ну, хотя бы, и шляпе. А эти имитируют бурную деятельность на самом деле.

    Шляпа как видим тоже - та еще шляпа. Ибо теперь это IBM и ваш чемодан денег им уже не очень интересен, сдалась им мелочевка всякая. Вот если вы товарный состав подгоните - так и быть, вы их клиент.

    А без этого можете бесплатно покамикадзить тестовым манекеном в федоре. Ух какая благодать! А, вот, еще центос стрем - для манекенов переживших первый раунд краштестов.

     
  • 2.21, Archer73 (ok), 10:57, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скачал Python 3.10, и он ПО УМОЛЧАНИЮ собирался с PGO (Скомпилился, долго выполнял тестовые расчеты, перекомпилился используя результаты профилирования)
     
     
  • 3.22, Аноним (1), 11:05, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Да, но периодически проблемы с компиляторами всплывают до сих пор. Корпы хотят, чтобы собиралось шлангом, и ломают сборку гцц. А бинарные билды часто не оптимизированы, в той же федоре стали нормально собирать только несколько лет назад.
     
     
  • 4.26, Аноним (19), 11:17, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так Федора сама по себе тестовая сборка, зачем там была нужна оптимальность непонятно.
     
     
  • 5.27, Аноним (1), 11:23, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У них почти все скрипты на питоне были. Включая пакетный менеджер. Пго это бесплатное ускорение по сути, никаких недостатков (ну, кроме времени компиляции и необходимости гонять профилирование).
     
     
  • 6.29, Аноним (-), 11:28, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > У них почти все скрипты на питоне были. Включая пакетный менеджер. Пго это
    > бесплатное ускорение по сути, никаких недостатков (ну, кроме времени
    > компиляции и необходимости гонять профилирование).

    Я наелся такого ускорения от редхата и свалил на дебианы и убунты. Потому что делать микро-VM по приципу 1 VM на сервис когда пакетник жрет больше RAM чем сервис - ну вот ой, нерационально.

    Как мне кажется, за цать лет транснациональная корпа могла бы разок сделать пакетник нормально а не маяться такой отборной дурью вместо этого.

     
     
  • 7.48, _ (??), 19:02, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как только ты свалил, они с yum перешли на dnf.
    Наверное надо сказать тебе "спасибо!" или поругать что так долго не уходил :)
     
     
  • 8.51, Аноним (51), 21:37, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А до этого они перешли на yum c up2date Хрен редьки не слаще Что так дрянь что... текст свёрнут, показать
     
  • 3.24, Аноним (24), 11:09, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Задача не ускорить сам Python, а ускорить сборочное окружение, собирающее Python и другие пакеты.
     
  • 2.36, пгуыыцрщ (?), 11:57, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    -fno-semantic-interposition ?
     
     
  • 3.39, Аноним (1), 12:26, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, -fno-plt и -fdevirtualize-at-ltrans ещё. Раньше, помню, -fwhole-program давала хорошую оптимизацию, но там не универсально и только сишные проги собирались в итоге. А так я -fipa-pta тоже использовал универсально, но лто становится несколько неподъёмным для больших прог, решил отказаться.
     

  • 1.2, Аноним (2), 09:57, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ещё интресно, какой эффект от включения оптимизаций под конретный процессор.
     
     
  • 2.11, Минона (ok), 10:22, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Поставь Генту -- узнаешь.
     
  • 2.47, Аноним (47), 17:21, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.phoronix.com/news/Intel-Linux-3888.9-Performance
     

  • 1.7, Аноним (7), 10:11, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ничего эффективнее распределенной компиляции еще не придумали. В условиях технологической отсталости - это единственный способ повышения скорости сборки пакетов. ICECC - рулит.
     

     ....ответы скрыты (6)

  • 1.12, Аноним (12), 10:24, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Бить надо за такие графики с отсеченным нулем. Желательно не только по лицу. Там разница всего на 5-6%, но график сделан так чтобы потрясти воображение разницей на глаз этак на 50%. И только внимательный рассмотрит оси, начнет чего-то подозревать и потом наткнется на эти самые скромные 5% под рисунком. Для понимания достаточно было бы одной простенькой таблички вместо всех этих 4-х графиков.
     
     
  • 2.16, Аноним (16), 10:37, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Какая разница, они же не продают эти PGO-оптимизации.

    Во-вторых какой тогда смысл в графике, если разницу между столбцами надо через лупу наблюдать?

     
     
  • 3.18, Аноним (19), 10:39, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ты на правильном пути, мой юный падаван. График не нужен.
     

  • 1.13, Аноним (19), 10:27, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Сборочные работы, ранее выполняемые за сутки, при задействовании PGO-оптимизации стали выполняться на два часа быстрее

    Я конечно понимаю что большинство местной аудитории гуманитарии и в расчеты не обучены и округляют в зависимости от фазы Меркурия. Но как 5% ускорение дало 2 часа быстрее когда при самых грубых расчетах это 1 час. А при чуть более точных 1 час 12 минут? Да даже округление округления до 6% ну никак не даёт морального права округлять до 2 часов.

     
     
  • 2.23, Аноним (24), 11:08, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    60*0.07*24 = 100.8 мин.
     
     
  • 3.25, Аноним (19), 11:15, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Подгонять под результат меня и в школе и институте учили, но на графиках явно пишут что там 5% 2 часа это либо менеджера обмануть или менеджер кого-то пытается обмануть или препода обмануть, но зачем?
     
     
  • 4.37, пох. (?), 12:02, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Подгонять под результат меня и в школе и институте учили, но на
    > графиках явно пишут что там 5% 2 часа это либо менеджера
    > обмануть или менеджер кого-то пытается обмануть или препода обмануть, но зачем?

    performance review сам себя не пройдет.

     

  • 1.20, Аноним (20), 10:52, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А может они померят разницу не в виртуалке? Да не, бред какой-то
     
     
  • 2.35, пох. (?), 11:50, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    я что-то вообще не понял кто у них на ком стоял. Они _виртуалку_ пересобрали с pgo чтобы внутри пересобирать что-то с чем-то ? Или qemu? Или вот что? Чтобы - что?


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

     
     
  • 3.45, гулигули (?), 15:56, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, пересобрали виртуалку, в которой собирают пакеты под risc-v (для дистриба на risc-v).
    Оказалось чуть быстрее.
     

  • 1.33, Аноним (33), 11:40, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем собирать питон когда его можно скачать?
     
     
  • 2.49, Аноним (50), 19:10, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поставь Gentoo по классике, поймёшь.
     
     
  • 3.53, Аноним (-), 21:45, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Поставь Gentoo по классике, поймёшь.

    Ога, когда система портажей на этом самом питоне с очередным питоном вдруг не станет работать - ты познаешь тао во всей его красоте. Или это дао было? :)

     
  • 2.55, Вы забыли заполнить поле Name (?), 22:03, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > когда его можно скачать?

    А вдруг там троян? Ну и оптимизаций нет под себя

     
     
  • 3.57, Аноним (-), 22:28, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вы реально смотрите весь код каждого пакета перед компиляцией? Может проблема в том что нет доверенного источника такого пакета? Вот каждый что-ли должен перепроверять один и тот же код? И это при том что у каждого разный опыт и знания касательно безопасности.
     
     
  • 4.61, Вы забыли заполнить поле Name (?), 07:24, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >  Вот каждый что-ли должен перепроверять один и тот же код?

    Да. Это как доказательство теоремы. Можно асистентом прувером воспользоваться еще.

     

  • 1.40, InuYasha (??), 12:37, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну.... играл я с этим когда-то. Но в моих непредсказуемых случаях от него толку было ещё меньше. Лучше векторизацию подкрутить было. Но в целом вещь нужная.
     
  • 1.42, Аноним (42), 13:39, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Самый быстрый способ сборки есть но он не кому не доступен , но когда будете готовы в это влить денег то получите эту сверх штуку
     
     
  • 2.54, Аноним (-), 21:46, 20/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Самый быстрый способ сборки есть

    Есть. Apt-get называется. Суть сводится к тому что проц по черному грела - билдферма. А остальным осталось скачать и распаковать :)

     

  • 1.46, Аноним (46), 16:49, 20/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В Debian такие оптимизации еще нескоро попадут? А в Arch уже попали?
     
  • 1.60, Аноним (60), 00:46, 21/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PGO-оптимизация - это как CD-диск, так писать не грамотно.
     
     
  • 2.62, Аноним (62), 08:46, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Таки, или PG-оптимизация, или PGO, CD или C-диск.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру