Производительность Ubuntu ppc64el

Я установил Ubuntu Linux 14.04.5 на новый мод IBM Power8. 8286-41a. Моя цель - использовать в этом разделе приложение SugarCRM CE 6.5. Я не смог установить Ubuntu 16, потому что проблемы совместимости с PHP 5.6. В настоящее время я использую sugarcrm на виртуальной машине VMware с Ubuntu 14.4.1. Я ожидал повышения производительности на платформе ppc64el. Вместо этого я обнаружил, что на самом деле процедуры значительно медленнее, чем на машине amd64. Одна и та же версия лампы в обеих системах (apache 2.4.7, mysql 5.6.33, php 5.5.9). См. Прикрепленное изображение для получения информации о двух машинах. Какие-либо предложения? Конфигурация ppc64el против amd64

3 ответа

tl;dr: Вы просто используете версии всего, что было до того, как началось много оптимизаций ppc64el и POWER8, поэтому будут ограничения на производительность, которую вы можете достичь без обновления одного (или нескольких) компонентов.

Примерно в то время, когда была выпущена Ubuntu 14.04, мы прошли весь стек LAMP, внимательно изучая производительность на POWER. Мы обнаружили, что есть места, которых не хватало, и приступили к их ремонту. К сожалению, поскольку Ubuntu 14.04 поставлялась немного раньше, чем первые системы POWER8, было недостаточно времени, чтобы поработать над оптимизацией и внедрить их в апстрим до поставки Ubuntu 14.04.

Только в мае / июне 2014 года у меня был (относительно) стабильный набор патчей для MySQL 5.6, работающий на POWER8. Это было через пару месяцев после выхода Ubuntu 14.04. Эти первоначальные патчи не были слишком сфокусированы на производительности (хотя Ubuntu действительно вытягивала их в дистрибутив, так как ppc64el является для них поддерживаемой платформой).

Что касается производительности, мы были довольно сильно ограничены несколькими вещами, многие из которых были исправлены в MySQL 5.7. У меня был очень проверенный концептуальный порт MySQL 5.7, выполняющий 1 миллион запросов в секунду на POWER8 еще в июне 2014 года. Многие проблемы MySQL связаны с конфликтами мьютексов, поэтому он может (как ни странно) с более старыми MySQL повысить производительность, связывая MySQL, чтобы меньше процессорных ядер.

У нас были и другие узкие места, в частности, производительность CRC32 (которую, если вы сконфигурируете для этого, InnoDB использует в качестве контрольной суммы на диске), из которых появился оптимизированный для POWER8 CRC32, который в 41 раз быстрее, чем неоптимизированная версия. Эта работа была интегрирована с MariaDB 10.1.

Была проделана большая работа для того, чтобы современный MariaDB действительно хорошо работал на POWER8. Это так, так что если переключение на MariaDB является опцией, это поможет с конечной производительностью базы данных. Кроме того, различные переменные _instance для MySQL могут нуждаться в увеличении - ваша система POWER8, вероятно, имеет гораздо больше ядер и потоков ЦП, чем система x86, и значения по умолчанию не будут такими уж хорошими.

Что касается PHP, я был (намного) менее вовлечен в эту работу по оптимизации. В основном, новый PHP быстрее, часто на приличную сумму. Это было связано со всем, от удаления некоторых старых "оптимизаций" powerpc (пользовательская сборка не всегда быстрее, чем то, что может генерировать компилятор) до внесения кода в php, до (я думаю) улучшения GCC.

Я думаю, что мой коллега Дэниел Аксенс собирается ответить с некоторыми подробностями PHP.

Возвращаясь к вашей конкретной конфигурации, вы назначили 1 ядро ​​ЦП (с 8 потоками) или только 1 ядро ​​ЦП (с 1 потоком) виртуальной машине на POWER8? Благодаря тому, как виртуализация работает на POWER, вы также можете предоставлять гостю потоки, так как все ядро ​​входит в гостевой сервер одновременно, а SMT4 обычно значительно повышает производительность по сравнению с SMT1 (проверьте конфигурацию виртуальной машины и вы можете динамически измените режим потока с помощью утилиты ppc64_cpu в гостевой системе, но не для большего количества потоков, чем было назначено гостевой).

Я написал в блоге о работе над MySQL / MariaDB в POWER8 по адресу: https://www.flamingspork.com/blog (см. Теги mysql/power8... askubuntu не позволит мне публиковать слишком много ссылок)

На ваш вопрос довольно сложно ответить, как и было задано - было бы очень полезно узнать, какие части медленнее, как вы измеряете скорость и т. Д.

Но вот несколько указателей:

Во-первых, вам нужно перейти на 16.04.

  • Вы сказали, что делаете это из-за проблем с PHP. Я предполагаю, что вы имеете в виду, что SugarCRM использует PHP5, а 16.04 поставляется только с PHP7. Это позор: php7 намного быстрее, чем php5 (примерно в 2 раза чаще) в Intel и Power. Но это не конец света. Вы можете перейти на 16.04 и использовать HHVM, который совместим с PHP5 и обычно намного быстрее. Было много отличной работы, чтобы заставить ее работать на Power (некоторые из которых я принимал участие). Я думаю, что большая часть работы сейчас идет вверх по течению, но есть репозиторий для разработчиков, который должен быть еще более современным. Вам придется скомпилировать его из исходного кода, но инструкции хороши.

  • Вам действительно нужно получить обновленный MySQL/MariaDB, как с точки зрения стабильности, так и производительности. Все, что поставляется с 14.04 - плохая идея.

  • Как упоминал Стюарт, существует множество исправлений, которые произошли между 14.04 и 16.04. Эти чипы отличаются от чипов Intel: настройка приложений для них отличается и зависит от работы, которую мы выполняли в течение нескольких лет. Эти исправления варьируются от исправлений ядра до масштабирования мощности и улучшений компилятора для создания лучшего кода.

Во-вторых, я не уверен, какую нагрузку вы тестируете на SugarCRM. У IBM есть (теперь несколько устаревший) официальный документ по использованию SugarCRM on Power, который показывает, что он поддерживает гораздо большую пропускную способность, чем система Intel. Вам необходимо четко определить интересующий вас ориентир.

В-третьих, вам нужно проверить настройки вашей системы. Вот некоторые из них:

  • Apache не настроен на использование мьютексов pthread вместо файловых мьютексов (исправлено в более новых версиях Ubuntu)

  • PHP и Apache настроены на использование пула потоков, который слишком мал для системы Power.

  • Похоже, вы сравниваете 1 ядро ​​на P8 с 4 ядрами на x86. В P8 есть как ядра, так и аппаратные потоки (например, HyperThreading, но вместо двух аппаратных потоков на ядро ​​у нас их до 8), поэтому это может немного запутать. Вам следует:

    • дать вам Power VM 4 ядра. Если возможно, убедитесь, что они статически размещены в вашем гипервизоре (например, ядра выделены для гостя).
    • Установите эти 4 ядра в режим SMT-4, а не в режим SMT-8; это дает значительный импульс языкам сценариев.

Наконец, если у вас есть доступ к какой-либо службе поддержки IBM или продавцам с момента покупки машины, обратитесь к ним; они могут быть в состоянии получить некоторые эксперты.

Поскольку вы выполняете измерения производительности, создайте раздел из HMC, используя выделенные процессоры с 4 ядрами по желанию (используя выделенный, вы отделите рабочую нагрузку IBM i от этой тестовой рабочей нагрузки). Как упоминалось ранее, количество потоков отличается от Power, а не от x86, поэтому вы должны убедиться, что у вас правильное количество ядер, а не потоков (даже при настройке SMT-4 в соответствии с рекомендациями у вас все равно будет вдвое больше потоков на ядро по мощности).

Другие вопросы по тегам