Performance optimisations

381 views
328 views

Published on

Презентация с семинара сервисного центра Джет в 2012 году

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
381
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Для большинства систем производительность меняется в экспоненциальной зависимостью. Редко и в хорошо спроектированных системах по параболе. Как себя ведет ваша система?
  • А где находится ваша система?
  • Performance optimisations

    1. 1. Анализ производительности Краткий путеводитель Антон Павленко Руководитель экспертной группы 20 Сентябрь, 2012
    2. 2. Вы знаете ответы на эти вопросы? Сколько пользователей у вашей системы? Сколько из них заходят одновременно? Какой запас по прочности? Вы знаете когда он закончится? Какое время отклика устраивает ваших клиентов? Вы мониторите превышение времени отклика? …....... Сервисный центр © 2012 Инфосистемы Джет
    3. 3. О чем хочу рассказать Анализ производительности :  повышает предсказуемость работы системы  позволяет оценить запас прочности  помогает планировать финансы  позволяет выявить узкие места И самое главное: Выявив и устранив узкое место можно существенно сэкономить Сервисный центр © 2012 Инфосистемы Джет
    4. 4. Bottleneck и все все все Узкое место — явление, при котором производительность или пропускная способность системы ограничена одним или несколькими компонентами или ресурсами. (с) WikiPedia Сервисный центр © 2012 Инфосистемы Джет
    5. 5. Время отклика системы типичый график зависимости времени отклика от нагрузки. График зависимости хорошо спроектированной системы Сервисный центр © 2012 Инфосистемы Джет
    6. 6. Производительность системы Сервисный центр © 2012 Инфосистемы Джет
    7. 7. У разных приложений разные требования Приложения бывают : - CPU bound - IO bound ( Network, Disk ) При этом ключевым фактором может быть : - latency - throughput Сервисный центр © 2012 Инфосистемы Джет
    8. 8. Теперь о CPU Сервисный центр © 2012 Инфосистемы Джет
    9. 9. Что важно знать про CPUТак ли важна частота CPU?Возможности масштабирования значительно отличаются( как и latency при обращении к «чужой» памяти )Процессор это не только CPU но и интегрированныеэлементы ( сеть, интерфейс к памяти, модульшифрования )Каждый процессор обладает уникальными свойствами,использование которых позволяет повыситьпроизводительность приложения ( SSE 4.2, prefetchинструкции, out-of-order execution, branch prediction, … ) Сервисный центр © 2012 Инфосистемы Джет
    10. 10. SMP и NUMA Сервисный центр © 2012 Инфосистемы Джет
    11. 11. Давайте поговорим про RAM Сервисный центр © 2012 Инфосистемы Джет
    12. 12. цепочка обращений к памяти Regs L1Processor Unified d-cache Unified L2 L2 Memory Memory disk disk L1 Cache Cache i-cachesize: 200 B 8-64 KB 1-4MB SRAM 128 MB DRAM 30 GBspeed: 3 ns 3 ns 6 ns 60-70 ns 8-10 msline size: 8B 32 B 32 B 8 KB Быстрее, выше, сильнее Больше, медленее, дешевле Сервисный центр © 2012 Инфосистемы Джет
    13. 13. Что нужно знать про RAM  Как соотносятся времена доступа  Память работает не байтами  Существует L1/L2 кеш  Кеш вымывается  Обращения к памяти стоит выравнивать  Существует ( и даже иногда работает ) префетч Сервисный центр © 2012 Инфосистемы Джет
    14. 14. Время доступа к RAM Bandwidth. линейное чтение 4.6 GB/sec на лаптопе, ~12.7 GB/sec на сервере * На серверах можно настраивать interleaving, который повышает скорость линейного чтения Latency. Читаем 100M блоком int32, шаг 4096 195 MB/sec, 2.14 sec/100M, ~49 Mreads/sec последовательный доступ ~1-2 такта случайный доступ ~40-60 тактов Почему так? Сервисный центр © 2012 Инфосистемы Джет
    15. 15. RAM и L1 cache Потому что существует L1/L2 cache Скачем с шагом N => кеш-миссы => тормоза Шаг 4..64, ~4400..330 MB/sec, ~2x/шаг Шаг 64..1024, ~330..195 MB/sec P.S: для CPU с размером L1 кеш-линии 64 байта Сервисный центр © 2012 Инфосистемы Джет
    16. 16. RAM и L2 cache Фиксируем шаг 1024, уменьшаем данные 100M, …, 4M, 3M, 2.3M == 195 MB/sec 2M == 648 MB/sec 1M == 1688 MB/sec 512K == 1724 MB/sec Все сходится, размер L2 cache 2MB При чём тут выравнивание? Сервисный центр © 2012 Инфосистемы Джет
    17. 17. RAM и L3 cache Ну вы поняли Сервисный центр © 2012 Инфосистемы Джет
    18. 18. Параметры cpu cacheКоэфициент промаха  Доля обращений к памяти, не найденных в кеше (misses/references)  Средние часла: 3-10% для L1 Может быть очень маленьким ( < 1%) для L2, зависит от размера, и т.д..Hit Time  Время “доставки” линии кеша в “процессор” (включает время определения есть ли данные в кеше)  Типичные цифры: 1 clock cycle для L1 3-8 clock cycles для L2Miss Penalty  Необходимо дополнительное время в случае промаха 25-100 cycles для основной памяти (RAM ) Сервисный центр © 2012 Инфосистемы Джет
    19. 19. Совсем немного о дискахДиски, они механические => медленные Сервисный центр © 2012 Инфосистемы Джет
    20. 20. И еще чуть чуть о дискахРазмер не имеет значения ( чаще всего )Для большинства приложений важным показателемявляется количетсво IOPSов а не Mb/sLatency напрямую зависит от размера блокаНесколько различных профилей нагрузки увеличиваетвремя отклика для каждого обращенияДиски иногда ломаютсяSSD бывают разные ( MLC и SLC NAND, DRAM, etc ) Сервисный центр © 2012 Инфосистемы Джет
    21. 21. Что же делать с IO?Учитывать требования при проектировании :Если для приложения критично latency то данные недолжны читаться с диска ( Oracle SGA, in memory database,etc, etc, etc )Если же критично throughput то важно помнить провыравнивание, использовать memory intterleaving, работатьс данными парралельно ( striping ) Сервисный центр © 2012 Инфосистемы Джет
    22. 22. Что же делать с IO?Если все уже спроектировано до нас?Оптимизировать!- Использовать большие страницы для уменьшения cache miss- Менять параметры выделения памяти для БД на серверах сархитектурой NUMA- Использовать специализированные аллокаторы памяти длямногопоточных приложений- и так далее. Приёмов очень много. Сервисный центр © 2012 Инфосистемы Джет
    23. 23. О чём я сейчас рассказывал?Сервисный центр © 2012 Инфосистемы Джет
    24. 24. Для разных задач … Сервисный центр © 2012 Инфосистемы Джет
    25. 25. … разные инструменты Сервисный центр © 2012 Инфосистемы Джет
    26. 26. ВыводыНе все сервера одинаково полезныПонимание узких мест приложения поможет выбратьправильную конфигурациюДаже небольшие изменения могут привести ксущественному росту/падению производительности Сервисный центр © 2012 Инфосистемы Джет
    27. 27. Вопросы? Антон Павленко http://jetservice.rupavlenko@jet.msk.su
    28. 28. Запасные слайды Сервисный центр © 2012 Инфосистемы Джет
    29. 29. Intel Core architecture L1 cache : 64kb на ядро L2 cache : 1-8Mb (общий) L3 cache : 8-16Mb (общий) и не во всех процессорах Нет HT Потомок архитектуры Pentium Pro :-) 4 ядра ( 6 в одной реализации ) Сервисный центр © 2012 Инфосистемы Джет
    30. 30. Intel Nehalem architecture L1 cache : 64kb на ядро L2 cache : 256Kb на ядро L3 cache : 4-12Mb (общий) Снова появился Hiper-threading! Появился QuickPath (до 8 ядер ) Стал NUMA Появился TLB! ( 512 ), но только для «маленьких» страниц ( 4K ) Доступ к «чужой» памяти дороже в 1.5 раза В Sandy Bridge : Больше L3 cache ( до 20 Мб ) Доступ до L1 — 3 тика, До L2 - 8 Сервисный центр © 2012 Инфосистемы Джет
    31. 31. Power 7 L1 cache 64 Кб на ядро L2 cache 256 Кб на ядро L3 cache 32 Мб ( разделен, но доступ есть у всех ядер ) До 8 ядер по 4 потока на ядро L3 реализован через eDRAM Возможен интерконнект до 32 процессоров TLB size = 512 items 4-WAY Power 6 был двухядерный Sparc T4 :L1 - 32Kb для ядра L2 — 128Kb на ядро L3 - 4Mb Сервисный центр © 2012 Инфосистемы Джет

    ×