- Регистрация
- 07.05.2015
- Сообщения
- 2 190
- Реакции
- 2 209
- Баллы
- 113
Часто вижу вопросы типа: «Почему шаблон в 10 и в 50 потоков работает только в 2 раза быстрее а не в 5?» (свежий пример). И тогда обычно начинается холивар на тему оптимизации шаблона, выбора среды типа HDD vs RAMDisk, списки\таблицы vs БД, Intel vs AMD, поиск «узкого горлышка» через Трассировка проектов и т.д.
И вот с последним как раз проблема, ибо в трассировке легко найти по логу кубик-ошибку, но трудно посчитать среднестатистический показатель для понимания картины:
1) насколько часто эта ошибка появляется;
2) сколько в среднем времени она кушает;
3) насколько хуже тот же кубик отрабатывает в многопотоке по сравнению с однопотоком.
Вот как раз эти проблемы и закрывает мой небольшой шаблончик.
Как работает шаблон:
1. Включаем трассировку на исследуемом шаблоне (условно назовем его «Глюченый_Шаблон»).
2. Запускаем в ZennoPoster Глюченый_Шаблон в обычном режиме работы, допустим в 1…10 потоков.
3. Останавливаем работу Глюченый_Шаблон через несколько циклов работы (ну и хотя бы 60 минут чтобы он отработал). Дожидаемся завершения всех потоков. Желательно чтобы после остановки в папке из следующего пункта накопилось ~2…10 мегабайт логов.
4. Файлы трассировки (обычно они по пути типа «c:\Users\Administrator\Documents\ZennoLab\Traces\Глюченый_Шаблон.zp\») переносим в папку шаблона-анализатора «…\Analizator_Trassirovki\Input\1_Good\», то есть папка с файлами трассировки должна после этого стать пустой!
4. Запускаем Глюченый_Шаблон повторно но в режиме работы «под нагрузкой» где он по вашему мнению неоправданно «тормозит», допустим в 50…200 потоков, тут уже сами прикиньте сколько макс можно.
5. Останавливаем работу Глюченый_Шаблон как в пункте «№3» так чтобы в папке накопилось ~10…100 мегабайт логов (не рекомендую больше 100, а то может заглючить процесс). Файлы трассировки переносим в папку шаблона-анализатора «…\Analizator_Trassirovki\Input\2_Bad\».
6. Запускаем наконец-то мой шаблон-анализатор в 1 попытку и ждем. Через минут ~1...20 он обработает логи и посчитает среднее время выполнения для каждого кубика, сравнит их в обеих режимах и на выходе получим таблицы (идентичные, просто в разных форматах) типа:
«…\Analizator_Trassirovki\Table_Final_xlsx_2021-03-10-01-05.xlsx»
«…\Analizator_Trassirovki\Table_Final_csv_2021-03-10-01-05.csv»
Открываете любую таблицу, из нее можно прикинуть на каких кубиках наибольшие потери и заменить их. Например, я понял, что в моем шаблоне проблемы на кубике «71df525e-d0ff-4116-8383-eb71842933c0» («сохранения профиля») ибо в многопотоке он очень тупил, пришлось по возможности убрать его в ненужных местах.

Сортировка в таблице по последнем столбце. Везде кроме него время в миллисекундах, а вот в нем уже для удобства в минутах. Там посчитано насколько быстрее выполнился бы шаблон, если бы не было падения быстродействия. Но этот показатель еще стоит поделить на количество ваших потоков во втором режиме. То есть если у меня там было 100 потоков, значит только этот кубик украл ~4 минуты общего времени.
Кстати, если пролистать таблицу, то в низу можно найти кубики с минусовым значением. Можно было бы обрадоваться, что кубики начали быстрее выполнятся, но обычно хорошего тут мало. К примеру, у меня это кубик перехода по урлу в браузере, и среднестатистически он в многопотоке быстрее стал выполнятся из-за того, что чаще прокси не выдерживали нагрузки и пустую страницу мгновенно выдавали вместо прогрузки нормальной. Я это понял по резкому увеличению показателей в колонке «% неудач» для кубика, который в шаблоне шел следом за кубиком погрузки страницы и проверял наличие нужного текста на ней (то есть чаще по красной ветке стал выходить):
Подсказка для новичков: если вы хотите найти в таблице параметры нужного вам кубика, но не знаете его ID, то запустите в ProjectMaker его 1 раз, и из лога скопируйте ID этого действия («лог» включается через верхнее меню «Окно > Лог»):

Ну а в самом ProjectMaker кубики ищутся по ID через окно поиска (Ctrl+F):

Скачать шаблон можно в прикреплённых файлах внизу поста.
- Номер конкурса шаблонов
- Седьмой конкурс шаблонов
- Уровень сложности
- Средний
- Категория
- Аналитика







пойду тоже тестировать.