Тестирование задержек node.js event loop?

Я исследую задержки nodejs event loop, используя process.hrtime(), а также я считаю перцентили для измереных задержек.
Вот мой простой пример теста

Запусткал этот тест на компьютере с i7-4770.

Это как выглядит график, когда скрипт выполняется на Windows 7(такой же тип графика на OSX):
2eda8534de7e4c4b97afbda20428d044.png
Где ось Х (горизонтальная) - время. А ось Y (по вертикали) - 90й перцентиль задержки в мкс (микросекунды)

А вот это, как выглядит график, когда скрипт выполняется на CentOS 7/6:
11c3024702d042838d3e18f7a406629b.png
Где ось Х (горизонтальная) - время. А ось Y (по вертикали) - 90й перцентиль задержки в мкс (микросекунды). Длина волны составляет около 2 минут.

Как видно, в целом задержки на Linux больше. Но реальная проблема заключается в периодических пиках, когда средняя задержка и количество высокой задержки(порядка 1000мкс) за измеряемый интервал увеличивается. Проще говоря на линуксе периодически проседает скорость выполнения. Это никак не связано со сборщиком мусора.

Я не уверен где именно проблема, в ОС, V8 или libuv. Есть ли хорошее объяснение такого поведения? Например различия в реализации таймеров на разных ОС. Или как это починить?
  • Вопрос задан
  • 690 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы