Workbench UI 대기 시간 문제 조사
사용자가 워크벤치에서 특정 노트북을 실행할 때 JupyterLab UI가 느려지고 반응이 없다고 보고했습니다. 느려짐을 정량화하기 위해 사용자의 노트북을 실행하면서 15초 동안 키를 누른 후 1초에서 10초 사이의 지연이 발생했으며 평균 지연은 7.4초였습니다. CPU 과부하 및 네트워크 문제를 잠재적인 원인으로 배제했습니다. py-spy를 사용하여 jupyter-lab 프로세스에서 많은 CPU 시간이 __parse_smaps_rollup 함수에 소비되는 것을 발견했습니다. 이 함수는 jupyter_resource_usage 확장의 일부로 리소스 사용 정보를 가져올 때 사용됩니다. 이 함수는 UI에서 주기적으로 호출되는 API 엔드포인트에 의해 트리거됩니다. 코드는 JupyterLab 프로세스의 모든 자식 프로세스를 재귀적으로 가져옵니다. 이는 노트북 프로세스와 노트북에서 생성된 모든 프로세스를 포함합니다. 이 함수의 비용은 모든 자식 프로세스의 수에 선형적으로 비례합니다. 재현 코드에서는 96개의 프로세스를 생성하는데, 이는 컨테이너에 할당된 64개의 CPU보다 많습니다. 이러한 불일치가 부모 프로세스를 느리게 만듭니다.