Исследование проблемы с задерж... Заметка

Исследование проблемы с задержкой пользовательского интерфейса Workbench

Пользователь сообщил, что интерфейс JupyterLab на его рабочем столе становится медленным и нереспонсивным при запуске определенных тетрадей. Чтобы оценить медлительность, мы удерживали клавишу в течение 15 секунд, запуская тетрадь пользователя, и наблюдали задержки от 1 до 10 секунд, в среднем 7,4 секунды. Мы исключили из списка возможных причин перегрузку CPU и сетевые проблемы. Используя py-spy, мы обнаружили, что много времени CPU тратилось на функцию __parse_smaps_rollup в процессе jupyter-lab. Эта функция является частью расширения jupyter_resource_usage, используемого для получения информации о потреблении ресурсов. Функция вызывается периодически из UI через API-эндпоинт. Код получает всех дочерних процессов процесса jupyter-lab рекурсивно, включая как процесс ipykernel Notebook, так и все процессы, созданные тетрадью. Стоимость работы этой функции линейна по отношению к количеству всех дочерних процессов. В коде для воспроизведения мы создаем 96 процессов, что больше 64 CPU, выделенных контейнеру. Это несоответствие делает родительский процесс медленным.