Download - Алексей Николаенков, Devexperts
![Page 1: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/1.jpg)
Бутылочное горлышко
многопоточных программ
Кто виноват? Что делать?
Алексей Николаенков
18.04.2013 1
![Page 2: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/2.jpg)
18.04.2013 2
«Ситуация с таможенным досмотром отправлений
остается сложной. В целом 41 таможенник (против
384 сотрудников Почты) в четырех основных
международных местах почтового обмена России (...)
в сутки может досмотреть менее 33 тонн, в то время
как, только на аэропорты московского узла за
минувшие сутки прибыло почти 39 тонн почты.
Распределяй не распределяй, ежедневно
недосмотренные таможней 6 тонн оседает
в терминалах».
«ПОЧТОВЫЕ ЗАВАЛЫ ТАЮТ под стахановским напором почтовиков»
15.04.2013 ФГУП «Почта России». Орфография и пунктуация авторские.
![Page 3: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/3.jpg)
Обработка запросов
18.04.2013 3
Обработка
Выполнение
Обработка
Обработка
Выполнение
Запрос
Запрос
Запрос
Результат
Результат
![Page 4: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/4.jpg)
Действующие лица
18.04.2013 4
Источник: telegraph.co.uk
Producer
Источник: telegraph.co.uk
Consumer
![Page 5: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/5.jpg)
Взаимодействие потоков
18.04.2013 5
![Page 6: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/6.jpg)
Взаимодействие потоков
18.04.2013 6
![Page 7: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/7.jpg)
Взаимодействие потоков
18.04.2013 7
![Page 8: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/8.jpg)
Взаимодействие потоков
• Образуется задержка
• Последовательный доступ нужен?
18.04.2013 8
![Page 9: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/9.jpg)
Пример
18.04.2013 9
Producer Consumer
Lock
Заблокировать
Lock
![Page 10: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/10.jpg)
Пример
18.04.2013 10
Producer Consumer
Lock
Заблокировать
Lock
![Page 11: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/11.jpg)
Результаты
18.04.2013 11
Общее количество операций 120 миллионов
![Page 12: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/12.jpg)
Результаты
18.04.2013 12
Общее количество операций 250 миллионов
![Page 13: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/13.jpg)
Результаты
18.04.2013 13
Общее количество операций 250 миллионов
![Page 14: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/14.jpg)
Результаты
18.04.2013 14
0
50
100
150
200
250
300
0,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
Ожидание( %)
Операции (млн)
![Page 15: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/15.jpg)
Закон Амдала
• 𝑃 – часть работы, который может выполняться
параллельно
• 𝑁 – количество «исполнителей»
18.04.2013 15
S(𝑁) =1
1 − 𝑃 + 𝑃𝑁
![Page 16: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/16.jpg)
Закон Амдала
18.04.2013 16
![Page 17: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/17.jpg)
Закон Амдала: выводы
C ростом числа «исполнителей»:
• постоянный рост ускорения не
обеспечивается;
• увеличиваются накладные расходы;
18.04.2013 17
S(𝑁) =1
1 − 𝑃 + 𝑃𝑁
![Page 18: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/18.jpg)
Поэкспериментируем?
• ArrayBlockingQueue
• LinkedBlockingQueue
• ConcurrentLinkedQueue
18.04.2013 18
![Page 19: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/19.jpg)
Платформа предоставляет стандартную
реализацию – ArrayBlockingQueue
• «Обычный» ограниченный буфер на основе
массива
• При конструировании указывается размер
буфера, который не меняется
• Предусмотрено два индекса на выбор и
вставку элементов
• Для управления многопоточностью
используется одна общая блокировка
Ограниченный буфер
![Page 20: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/20.jpg)
Платформа предоставляет стандартную
реализацию – LinkedBlockingQueue
• Обычный односвязный список
• Две «блокировки»: на вставку и на выбор
• В большинстве случаев необходимо брать
только одну из блокировок (обе требуют такие
операции как remove и contains. Take/offer-
работают независимо)
Неограниченный буфер
![Page 21: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/21.jpg)
Платформа предоставляет стандартную
реализацию – ConcurrentLinkedQueue
• Неблокирующая
• Основана на CAS
Неограниченный буфер #2
![Page 22: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/22.jpg)
18.04.2013 22
Мы создаем сложные,
высоконагруженные системы
для финансовой сферы.
![Page 23: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/23.jpg)
Devexperts
18.04.2013 23
![Page 24: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/24.jpg)
Наша команда – это 300 профессионалов в области программирования,
тестирования и поддержки ПО
![Page 25: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/25.jpg)
Офисы разработки расположены в Санкт-Петербурге и Ростове-на-Дону!
Офисы
![Page 26: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/26.jpg)
- свободный график работы
- своя столовая
- комфортные рабочие места
- корпоративные мероприятия
- командировки по всему миру
- курсы английского языка
- неполная занятость и поддержка
в написании научных работ
Отличные условия работы!
![Page 27: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/27.jpg)
Если Вам захотелось присоединиться к команде Devexperts,
пишите и звоните нам:
Тел.: (812) 438-16-26
E-mail: [email protected]
Вакансии: hh.ru и itmozg.ru.
Наши новости: devexperts.com и ВКонтакте.
Контакты
![Page 28: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/28.jpg)
Спасибо за внимание!
18.04.2013 28
![Page 29: Алексей Николаенков, Devexperts](https://reader034.vdocuments.site/reader034/viewer/2022042607/557fd112d8b42aab088b4ded/html5/thumbnails/29.jpg)
бНОПНЯШ?
18.04.2013 29