Утечка памяти из-за предположительно незакрытых ядер - PullRequest
0 голосов
/ 26 июня 2019

Я вынужден работать с JupyterLab на Linux-сервере, на котором я сам не размещаюсь.Проблема в том, что Jupyter-процесс занимает много памяти;это было частью нескольких сообщений об ошибках, таких как здесь и здесь .

Во всяком случае, как можно ожидать из введения, у меня нет никаких sudo-прав ипоэтому я не могу перезапустить лабораторию сам (по крайней мере, я думаю, что это не должно быть возможно для меня).

Что странного, на мой взгляд, можно увидеть на этом скриншоте, взятом из HTOP:

JupyterLab

Команда bash, которая запускает лабораторию, имеет множество подпроцессов, которые выглядят как ядра, которые я открывал и закрывал за все время использования (сервер работает в течение месяца, и яоткрывал и закрывал множество ядер; ни одно из них не работало при съемке).

Поскольку каждый из этих процессов заканчивается на .json, я предполагаю, что это могут быть некоторые еще неповрежденные параметры времени выполнения.

Во всяком случае, я не хочу устранять ошибку, связанную с разливом памяти.Мой вопрос довольно прямолинеен:

Поскольку ядро ​​не запущено: могу ли я просто уничтожить все процессы на третьем уровне и освободить память, выполнив это, или это может привести к сбоюlab?
Все процессы на третьем уровне выглядят одинаково, как на скриншоте, больше ничего нет.

Последняя часть важна, так как у меня нет возможности перезапустить лабораторию.

1 Ответ

1 голос
/ 28 июня 2019

К счастью, я наткнулся на этот сайт здесь . Здесь у писателя есть проблема с невыпущенной GPU-памятью, а также с большим количеством ipykernel_launchers.

Он решил эту проблему, используя предложенный радикальный способ.

  1. Сначала отобразите все свои ipykernel_launchers с помощью ps -aux|grep ipykernel_launcher (аналог HTOP-скриншота в вопросе).
  2. Убить каждого процесса по одному с kill -9 PID1 PID2 .... Обязательно только убейте все в стиле (ничего больше):

    / usr / bin / python3 -m ipykernel_launcher -f /content/.local/share/jupyter/runtime/kernel-95cb65b9-23eb-4f87-801b-d995ca30fc32.json

  3. Теперь память должна быть освобождена, а JupyterLab все еще должен работать.

Edit:

Благодаря @EightBitTony в Unix & Linux-StackExchange Теперь я знаю, что есть команда для уничтожения всех процессов за один шаг:

for pid in $(ps -ef | grep -v "awk" | awk '/ipykernel_launcher/ {print $2}'); do kill -9 $pid; done

Пожалуйста, знайте, что вы делаете, когда делаете это таким образом!

...