Investigation d’un problème de... Note

Investigation d’un problème de latence de l’interface utilisateur de Workbench

Un utilisateur a signalé que l'interface utilisateur de JupyterLab sur son poste de travail devient lente et non réactive lors de l'exécution de certains carnets de notes. Pour quantifier la lenteur, nous avons maintenu une touche enfoncée pendant 15 secondes tandis que le carnet de notes de l'utilisateur était en cours d'exécution et avons observé des latences allant de 1 à 10 secondes, avec une moyenne de 7,4 secondes. Nous avons écarté la sur-subscription du CPU et les problèmes de réseau comme causes potentielles. En utilisant py-spy, nous avons trouvé que beaucoup de temps CPU était consacré à une fonction appelée __parse_smaps_rollup dans le processus jupyter-lab. Cette fonction fait partie de l'extension jupyter_resource_usage, qui est utilisée pour obtenir des informations sur l'utilisation des ressources. La fonction est déclenchée par un point d'entrée API appelé périodiquement à partir de l'UI. Le code récupère tous les processus enfants du processus jupyter-lab de manière récursive, y compris à la fois le processus de carnet de notes ipykernel et tous les processus créés par le carnet de notes. Le coût de cette fonction est linéaire par rapport au nombre de tous les processus enfants. Dans le code de reproduction, nous créons 96 processus, ce qui est plus que les 64 CPU alloués au conteneur. Cette disparité cause le processus parent à être lent.