секретный соус Power 7

Скачать презентацию.

Современные процессоры не только содержат ядрa, но и каждое ядро содержит много потоков. Так, например, процессор Oracle Sun T4 содержит  8  потоков на каждое ядро, а  процессор Power 7 содержит 4 потока на ядро. Intel называет эту технологию Hyper-Threading  и, например,  последние E7 содержат два потока.  Надо отметить, что поскольку Oracle Database лицензируется по ядрам (Enterprise Edition), то наличие этих самых потоков 'скрыто' от политики лицензирования и может быть весьма существенным фактором выбора платформы.  Но оказывается, что наличие потоков в ядре еще не означает, что все становится быстрее.  Когда 8 или 4  потока пытаются конкурировать за 1 физическое ядро  это может приводить к тому, что каждый из них  работает медленнее, чем если бы поток был один,  даже  на каком-то  более дешевом процессоре, но каждый поток получал бы больше ресурсов от ядра (Вы можете здесь вспомнить мой пост 10 sec of your time. Там явно всех 'рвет' Sandy Bridge. Данная проблема сейчас часто звучит как "Single Thread Performance"). Оказывается, что необходимо искать баланс межд: количество ядер в процессоре, количеством потоков в ядре, частоте.  И даже это еще не все. В ядре есть понятие execution pipeline - те во сколько реально потоков идет выполнение (на картинке выше).  Наличие 8 потоков не означает что все они работают одновременно !  Смотрите, что получается: то что у нас много потоков, и  это хорошо, потому что мы не тратим время на перегрузку регистров, но мы вынуждены делить одно ядро, да еще и выполняться (на некоторых процессорах)  через узкую калитку.  Угадать правильный баланс сложно, нужен эксперимент. В  Power 7 есть уникальная возможность  менять количество потоков программным образом. А раз так, почему бы не попробовать ?

Я взял свою домашнюю машину (AIX 7, 4 ядра Power 7) и решил посмотреть как работает процессор, который нагружается большим количеством потоков под целочисленной математикой и с плавающей точкой. Чтобы понять теорию процесса. Дальше я применил полученные данные к Oracle Database которую нагружал c помощью Swingbench, причем я брал как OLTP  тесты,  так и DWH.  Пожалуйста посмотрите презентацию, там много разных тестов.



Что у меня получилось (вывод для занятых): на Power 7 для OLTP задачи включение режима SMT=4 дает существенный прирост общей пропускной способности при увеличении числа потоков/на одно ядро, при этом в рамках моей системы мне не удалось замерить ухудшение производительности одного потока.  Также Power 7 имеет специальную оптимизацию в случае однопоточного выполнения даже в режиме SMT=4.

Выводы: Разработчикам P7 удалось реализовать действительно реальную многопоточность и ее использование в большинстве случаев существенно увеличит пропускную способность вашей системы.  

8 комментариев:

  1. Ядро Power7 способно выполнить чуть больше полезной работы в единицу времени по сравнению с Power6.
    Но если сравнивать скорость обработки данных отдельным потоком P7 и P6, то первый катастрофически проигрывает второму. Разница не в десятки процентов, а в разы. По этому показателю P6 5.0Ггц в два раза быстрей чем P7 3.7Ггц и в полтора раза быстрей чем P7 4.25Ггц (в турборежиме).
    P6 имеет большую частоту, оптимизацию потока выполнения команд «out of order”, значительно лучшие характеристики кешей всех уровней. P6 создавался исходя из потребностей конечных пользоватей, которые покупают сервера POWER для решения своих задач и работы приложений, которые они используют.

    Power7 разрабатывался IBM совсем для другого заказчика и для систем, в которых параметр скорости обработки одного потока вообще неважен. Основной целью было создать процессор, которым можно забить ограниченый объем стойки как сельдью бочку. Целевая система должна была потреблять как можно меньше электроэнергии, не иметь сложной системы охлаждения и большую часть времени находиться в покое, так как этим «селедкам» просто нечего будет делать на всем промежутке времени жизни такой системы да и заказчик разорится на платежах за электричество.

    Как ни странно, но IBM удалось выпустить системы с этими процессорами и на обычный рынок. Системы в итоге оказались неплохие. Приложения с многопоточной моделью обработки и OLTP ишная нагрузка на них работают замечательно. Но часть однопоточных приложений, критичных ко времени выполнения, могут показать не совсем те результаты, на которые расчитывают заказчики под влиянием маркетинга IBM. К этому надо быть готовыми и желательно проводить тестирование своих приложений на этом железе перед его покупкой.

    Будем надеяться, то гонка за числом ядер на сокет у всех вендоров серверов прекратится, SPARC T4 явный тому пример. IBM тоже вернется к вопросу производительности одного потока в следующем поколении процессоров. Очивидно, что IBM пока не считает, что для этого настал нужный момент...

    ОтветитьУдалить
  2. >если сравнивать скорость обработки данных отдельным потоком P7 и P6 ..По этому показателю P6 5.0Ггц в два раза быстрей чем P7 3.7Ггц

    О каком потоке идет речь ? что делает поток ?

    >P6 .... оптимизацию потока выполнения команд «out of order”

    У P6 'in order', кэши L1 и L2 лучше, кэш L3 такой же по сранению с P7. out of order у P7

    >Целевая система должна была потреблять как можно меньше электроэнергии

    Хотя я не знаю про какого заказчика вы пишите (DARPA ?), электропотреблению уделяется сейчас очень много внимания, это правда

    >Но часть однопоточных приложений, критичных ко времени выполнения, могут показать не совсем те результаты, на которые расчитывают заказчики под влиянием маркетинга IBM.

    +1

    >Будем надеяться...IBM тоже вернется к вопросу производительности одного потока в следующем поколении процессоров

    Вернется. Деталей я пока не знаю, но направление движения вы указали верно.

    ОтветитьУдалить
  3. >>если сравнивать скорость обработки данных отдельным потоком P7 и P6 ..По этому показателю P6 5.0Ггц в два раза быстрей чем P7 3.7Ггц
    >О каком потоке идет речь ? что делает поток ?

    Проводились тесты над целочисленными вычислениями, в которых исключены задержки обращения к внешним ресурсам (IO и ОП).

    >>P6 .... оптимизацию потока выполнения команд «out of order»
    >У P6 'in order', кэши L1 и L2 лучше, кэш L3 такой же по сранению с P7. out of order у P7

    Тут вы ошибаетесь. Именно в P6 был реализован самый настоящий режим out-of-order.
    http://en.wikipedia.org/wiki/POWER6

    «A notable difference from POWER5 is that the POWER6 executes instructions in-order instead of out-of-order. This change often requires software to be recompiled for optimal performance, but the POWER6 still achieves significant performance improvements over the POWER5+ even with unmodified software, according to the lead engineer on the POWER6 project”

    Это подтверждалось аналогичными тестами процессоров на этапах тестипрования и итоговыми результатами работы наших приложений на этом железе.

    В P7 я не вижу никакого out-of-order. Он не проявляется ни в каком виде. Его просто нет. Думаю, что его отключили специально. Производительность потока ограничена, а режим SMT не влияет положительным образом.

    «Медленный» P7 имеет только одно преимущество — он поставляется на коммерческий рынок с системами, в которых задействованы современные технологические преимущества всех остальных компонентов системы.
    Относительно более быстрый IO (при вдумчивом подходе на этапе проектирования).
    Возможность использования значительно больших объемов оперативной памяти с существенно более быстрым доступом к ней по сравнению с системами на P6. «Большая» и быстрая оперативная память существенно снижает число орбащений к внешней дисковой памяти.

    Именно существенное увеличение объема ОП может обеспечить приемлемую производительность больших систем на P7

    ОтветитьУдалить
  4. >Проводились тесты над целочисленными вычислениями, в которых исключены задержки обращения к внешним ресурсам (IO и ОП).

    Возможно, что P6 в одном потоке работает быстрее над такой задачей.

    >Именно в P6 был реализован самый настоящий режим out-of-order.
    >POWER6 executes instructions in-order instead of out-of-order

    Не подумайте что я придираюсь, возможно что мой английский слишком слаб, но я фразу, которую вы же и привели перевожу ровно наоборот. ????


    >В P7 я не вижу никакого out-of-order.

    насколько я понимаю теорию процесса, далеко не каждая задачка может выполняться в out-of-order. Так, если в цикле на каждом шаге требуется переменная получаемая на предудушем шаге out-of-order не получится.

    >«Медленный» P7 имеет только одно преимущество

    Отсюда и дальше очень хороший текст, который совпадает с тем, что я слышал от инженеров. Работа с памятью и с IO - вот на что бросили все силы.

    ОтветитьУдалить
  5. Спасибо за презентацию!
    Читал с интересом

    ОтветитьУдалить
  6. Анонимный22/10/11 2:58 PM

    у Вас на слайде "OLTP workload – NMON statistcis" для single thread зашкаливает %sy - может просто планировщик аиксовый никуда не годится?

    ОтветитьУдалить
  7. %sy - да, процентов под 20% стабильно. Напишите пожалуйста почему вы думаете, что планировщик никуда не годится ? Systime это только планировщик или что-то еще, как вы думаете ?

    ОтветитьУдалить
  8. Анонимный24/10/11 3:10 AM

    >%sy - да, процентов под 20% стабильно.

    если было бы 20% стабильно, я бы об этом не написал, у Вас же на картинках держится 40-50%, т.е. 100% профита от SMT=4, для SMT=1 ушли в %sy (а туда попадает все, что не попадает в %usr, %idle и %wait, т.е. обработка прерываний, переключение контекста, отложенные вызовы и п.р., вообщем нужно инженеров по AIX заставлять смотреть в чем дело)

    Вот если бы Вы сделали, скажем, тест 4 CPU в SMT=1 против 2 CPU в SMT=4 было бы интересно, или, к примеру, 10g на Linux PPC и AIX бы сравнили

    ОтветитьУдалить