Untersuchung eines Problems mi... Notiz

Untersuchung eines Problems mit der Latenz der Workbench-Benutzeroberfläche

Ein Benutzer meldete, dass seine JupyterLab-Oberfläche auf seinem Arbeitsplatz langsam und unreaktiv wird, wenn bestimmte Notebooks ausgeführt werden. Um die Langsamkeit zu quantifizieren, haben wir eine Taste für 15 Sekunden gedrückt, während das Notebook des Benutzers lief, und Latenzen zwischen 1 und 10 Sekunden beobachtet, mit einem Durchschnitt von 7,4 Sekunden. Wir haben CPU-Überzeichnung und Netzwerkprobleme als mögliche Ursachen ausgeschlossen. Mit py-spy haben wir festgestellt, dass viel CPU-Zeit für eine Funktion namens __parse_smaps_rollup im jupyter-lab-Prozess aufgewendet wurde. Diese Funktion ist Teil der jupyter_resource_usage-Erweiterung, die zum Abrufen von Ressourcennutzungsinformationen verwendet wird. Die Funktion wird durch einen API-Endpunkt ausgelöst, der periodisch von der Oberfläche aufgerufen wird. Der Code ruft alle untergeordneten Prozesse des jupyter-lab-Prozesses rekursiv ab, einschließlich des ipykernel-Notebook-Prozesses und aller vom Notebook erstellten Prozesse. Die Kosten dieser Funktion sind linear zum Anzahl aller untergeordneten Prozesse. Im Reproduktionscode erstellen wir 96 Prozesse, was mehr als die 64 CPUs sind, die dem Container zugewiesen sind. Diese Diskrepanz verursacht, dass der übergeordnete Prozess langsam wird.