Как визуализировать поведение множества параллельных многоступенчатых процессов?

Предположим, у меня есть тонна (непрерывный поток) запросов для обработки, и каждый запрос имеет несколько этапов.Например: «подключение к источнику данных», «чтение данных из источника данных», «проверка данных», «обработка данных», «соединение с приемником данных», «запись результата в приемник данных».

Какие методы или даже инструменты визуализации подходят для визуализации поведения такой системы?

Я хотел бы видеть, какие этапы занимают много времени и как этапы различных запросов согласованы с по отношению друг к другу (например, чтобы увидеть, что источник данных дольше отвечает при обращении к слишком большому количеству запросов одновременно).

Если бы было всего несколько десятков запросов, я был бы в порядке с несколькими десятками отдельных цветных временных шкал, но для нескольких тысяч это не подходит. Думаю, мне удастся обойтись N цветными временными шкалами, где N - «коэффициент параллелизма», но 1) возможно, есть что-то получше, 2) возможно, для этого существуют инструменты?

P.S. Бесстыдный плагин: как только я выберу лучший способ визуализации, я добавлю его в свой отличный инструмент под названием timeplot ;)

P.P.S. Еще одна бессовестная заглушка: решил написать отдельный инструмент: splot . Вот что он может делать, основываясь на тривиально простом журнале и однострочном awk:

alt text

Он показывает 160 ядер кластера, выполняющих задачи, переданные им RabbitMQ. Синий - «получение данных», оранжевый - «вычисления», белый - «ничего не делает». Из этой диаграммы сразу видно несколько проблем, которые было бы очень трудно найти, просто просматривая журналы.

6
задан raam86 26 January 2015 в 21:23
поделиться