LINUX.ORG.RU

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

 , , , ,


0

1

Имеется модель, в которой несколько «ядер» выполняют некоторые процессы. Каждый на своем ядре. Иногда некоторые ядра простаивают, иногда один процесс завершается, начинается другой.

Хочется визуализировать это на временной диаграмме, чтобы наглядно представить ответы на вопросы «есть ли моменты, где какое-то ядро долго простаивает», «что выполняется на таком-то ядре в заданный момент времени». Визуально хочется получить что-то вроде http://twimgs.com/ddj/images/article/2009/0910/091023hillar_f6.gif

Основной инструмент разработки - Python, пока рассматривал варианты:

matplotlib:
+ простой
+ красивый
- результирующие изображения могут быть длинными, а тут на выходе растр, которые скроллить не хочется сильно
- возможно, сложно будет организовать подписывание процессов (например, если визуально процесс короткий и на картинке нет места для имени этого процесса)

pyqt:
+ скорее всего, можно что угодно и как угодно
+ если подписи не будут помещаться, можно убрать их в pop-up подсказки при наведении указателя
- сложный

я использовала bokeh: https://bokeh.pydata.org/en/latest/

описание графиков так же как в matplotlib, но показ интерактивный через js, с масштабированием, скроллом, подписями во всплывающих подсказках и т.п.

Пример https://github.com/bookwar/jenkins-report но это было давно и неправда

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 2)

Если «ядра» - это ядра проца, то не проще ли взять уже готовый инструмент мониторинга загрузки с уже готовой визуализацией.

Grafana там какой-нибудь?

anonymous ()
Ответ на: комментарий от anonymous

Ну это «ядра» нашей системы, информация об их загрузке у нас в виде python списков в специальном виде. в принципе, можно их экспортировать в заданный формат, зависит от того, насколько хорошей будет система, в которой это будет рисоваться

omegatype ★★ ()
Ответ на: комментарий от omegatype

Мне кажется использовать готовую тулзу для визуализации как-то удобнее, чем с 0 писать.

Попробуй Grafana, за пару часов можно прототип накатать, я думаю.

anonymous ()

если надо «вживую» смотреть - pyqtgraph неплох, в частности процесс рендеринга/gui можно отделить, а канвас из qt хорошо справляется с обновлениями. тултипы наверно получится через QGraphicsItem::setToolTip, там всё обёртки над qt.

для «офлайн» рисования matplotlib конечно мощнее.. про длинные картинки не очень понял, мусье в курсе про интерактивные бакенды, где всё скролится/масштабируется из gui? тормозит правда, но если это пару раз нужно, то пофиг..

anonymous ()
Ответ на: комментарий от anonymous

и кстати, про grafana ничего не знаю, но tensorflow и pytorch ровно для этой задачи (профайлинг «ядер» постфактум) пишут json трейс файлы для chrome://tracing/

anonymous ()
Ответ на: комментарий от anonymous

если ты один раз посмотрел на интерктивный отрисовщик матлаба, то на матплотлиб назад вернуться нельзя (и наоборот, если ты один раз повидал статический выхлоп матплотлиба, то на статику матлаба не вернуться).

omegatype ★★ ()

PlantUml? Graphviz? Хз как с процессами, а вот взаимодействия циклов сообщений зачастую изображают с помощью диаграмм последовательностей.

pon4ik ★★★★★ ()