Алексей Николаенков, Devexperts

1,893 views

Published on

«Бутылочное горлышко многопоточных программ – кто виноват, и что делать. Мастер-класс.»

BitByte: 20 апреля 2013, Санкт-Петербург
http://bitbyte.itmozg.ru/

  • Be the first to comment

  • Be the first to like this

Алексей Николаенков, Devexperts

  1. 1. Бутылочное горлышкомногопоточных программКто виноват? Что делать?Алексей Николаенков18.04.2013 1
  2. 2. 18.04.2013 2«Ситуация с таможенным досмотром отправленийостается сложной. В целом 41 таможенник (против384 сотрудников Почты) в четырех основныхмеждународных местах почтового обмена России (...)в сутки может досмотреть менее 33 тонн, в то времякак, только на аэропорты московского узла заминувшие сутки прибыло почти 39 тонн почты.Распределяй не распределяй, ежедневнонедосмотренные таможней 6 тонн оседаетв терминалах».«ПОЧТОВЫЕ ЗАВАЛЫ ТАЮТ под стахановским напором почтовиков»15.04.2013 ФГУП «Почта России». Орфография и пунктуация авторские.
  3. 3. Обработка запросов18.04.2013 3ОбработкаВыполнениеОбработкаОбработкаВыполнениеЗапросЗапросЗапросРезультатРезультат
  4. 4. Действующие лица18.04.2013 4Источник: telegraph.co.ukProducerИсточник: telegraph.co.ukConsumer
  5. 5. Взаимодействие потоков18.04.2013 5
  6. 6. Взаимодействие потоков18.04.2013 6
  7. 7. Взаимодействие потоков18.04.2013 7
  8. 8. Взаимодействие потоков• Образуется задержка• Последовательный доступ нужен?18.04.2013 8
  9. 9. Пример18.04.2013 9Producer ConsumerLockЗаблокироватьLock
  10. 10. Пример18.04.2013 10Producer ConsumerLockЗаблокироватьLock
  11. 11. Результаты18.04.2013 11Общее количество операций 120 миллионов
  12. 12. Результаты18.04.2013 12Общее количество операций 250 миллионов
  13. 13. Результаты18.04.2013 13Общее количество операций 250 миллионов
  14. 14. Результаты18.04.2013 140501001502002503000,00%10,00%20,00%30,00%40,00%50,00%60,00%70,00%80,00%90,00%100,00%2 4 6 8 16 20 1000Ожидание( %)Операции (млн)
  15. 15. Закон Амдала• 𝑃 – часть работы, который может выполнятьсяпараллельно• 𝑁 – количество «исполнителей»18.04.2013 15S(𝑁) =11 − 𝑃 +𝑃𝑁
  16. 16. Закон Амдала18.04.2013 16
  17. 17. Закон Амдала: выводыC ростом числа «исполнителей»:• постоянный рост ускорения необеспечивается;• увеличиваются накладные расходы;18.04.2013 17S(𝑁) =11 − 𝑃 +𝑃𝑁
  18. 18. Поэкспериментируем?• ArrayBlockingQueue• LinkedBlockingQueue• ConcurrentLinkedQueue18.04.2013 18
  19. 19. Платформа предоставляет стандартнуюреализацию – ArrayBlockingQueue• «Обычный» ограниченный буфер на основемассива• При конструировании указывается размербуфера, который не меняется• Предусмотрено два индекса на выбор ивставку элементов• Для управления многопоточностьюиспользуется одна общая блокировкаОграниченный буфер
  20. 20. Платформа предоставляет стандартнуюреализацию – LinkedBlockingQueue• Обычный односвязный список• Две «блокировки»: на вставку и на выбор• В большинстве случаев необходимо братьтолько одну из блокировок (обе требуют такиеоперации как remove и contains. Take/offer-работают независимо)Неограниченный буфер
  21. 21. Платформа предоставляет стандартнуюреализацию – ConcurrentLinkedQueue• Неблокирующая• Основана на CASНеограниченный буфер #2
  22. 22. 18.04.2013 22Мы создаем сложные,высоконагруженные системыдля финансовой сферы.
  23. 23. Devexperts18.04.2013 23
  24. 24. Наша команда – это 300 профессионалов в области программирования,тестирования и поддержки ПО
  25. 25. Офисы разработки расположены в Санкт-Петербурге и Ростове-на-Дону!Офисы
  26. 26. - свободный график работы- своя столовая- комфортные рабочие места- корпоративные мероприятия- командировки по всему миру- курсы английского языка- неполная занятость и поддержкав написании научных работОтличные условия работы!
  27. 27. Если Вам захотелось присоединиться к команде Devexperts,пишите и звоните нам:Тел.: (812) 438-16-26E-mail: job@devexperts.comВакансии: hh.ru и itmozg.ru.Наши новости: devexperts.com и ВКонтакте.Контакты
  28. 28. Спасибо за внимание!18.04.2013 28
  29. 29. бНОПНЯШ?18.04.2013 29

×