ワークベンチUIの遅延問題の調査
あるユーザーが、特定のノートブックを実行する際に、JupyterLab UI が遅くなり、応答が遅れると報告しました。遅さを量的に評価するために、15秒間キーを押し続けながらユーザーのノートブックを実行し、遅延が1秒から10秒で、平均7.4秒であったことを観察しました。CPUの過剰割り当てやネットワークの問題が原因でないと判断しました。py-spyを使用して、jupyter-labプロセスで多くのCPU時間が__parse_smaps_rollupという関数に費やされていることを発見しました。この関数は、jupyter_resource_usage拡張の一部で、リソース使用状況の情報を取得するために使用されます。この関数は、UIから定期的に呼び出されるAPIエンドポイントによってトリガーされます。このコードは、JupyterLabプロセスのすべての子プロセス、つまりipykernel Notebookプロセスとノートブックによって作成されたすべてのプロセスを再帰的に取得します。この関数のコストは、すべての子プロセスの数に比例します。再現コードでは、コンテナーに割り当てられた64CPUよりも多くの96プロセスを作成します。この不一致が親プロセスを遅くする原因です。