Как я могу генерировать показатели производительности, не сохраняя большого количества данных? (Квантильная потоковая передача)

Это такая распространенная проблема, но трудно найти ответы. Я хочу измерить производительность [время отклика 95-го процентиля веб-сервера | Вызовы API | производительность алгоритма | дисковый ввод-вывод | что бы ни ]. Но вы знаете, что это много данных, и я не хочу их хранить, потому что они используются в производстве. Кроме того, я не хочу тратить много времени процессора на подсчет того, насколько медленно мое программное обеспечение.

Если вы будете искать ответы, вы увидите множество ссылок на древние алгоритмы, которые хранят тонны данных в хранилищах или хранят большой резервуар данных случайной выборки. Общие результаты включают P-квадрат и binmedian, и обратите внимание, что трудно найти какие-либо достойные реализации, потому что, хотя они обычно предполагаются, они также являются мусором, и никто не догадывается, что их использует.

Вы также найдете умные ответы, которые не сможете реализовать, потому что половина объяснения отсутствует. Возможно, если бы вы были специалистом по статистике, вы бы поняли это.

Итак, что я могу использовать для получения дешевой статистики производительности? Алгоритм и исходники, пожалуйста.


person Sophit    schedule 08.12.2019    source источник


Ответы (1)


Искать алгоритмы - значит входить в сферу Академии, поэтому полезно знать собственное название проблемы. Нам нужен алгоритм потоковой передачи, возможно, квантильный поток, хотя вам может понадобиться и другая статистика. Найдите эту фразу, и вы получите более обоснованные ответы.

Один простой ответ - этот документ, результат сотрудничества Amazon и Academia. описывает состояние дел по состоянию на 2007 год. Он дает общее представление об алгоритмах Гринвальда-Ханна (GK) и Q-Digest. Вы действительно можете найти эти алгоритмы в библиотеках. Эта библиотека имеет простую в использовании реализацию на C ++ и JS. Библиотека ядра Intel Math реализует Zhang 2007.

Хотя библиотека sengelha выглядит простой в использовании и достаточно хорошей для большинства нужд, мир изменился с 2007 года. в этом году (Amazon, Yahoo и Academia) описывает алгоритм «ленивого kll», который реализован в Data Библиотека Sketches (C ++, Java, Python) здесь.

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

person Sophit    schedule 08.12.2019