Может ли процесс, который был запущен в сеансе tmux, заснуть?

270
dasWesen

Может ли процесс, который был запущен в сеансе tmux, заснуть? Если да, то какова причина (причины), как предотвратить это?

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

Сегодня я возвращаюсь, и это не сделало никакого прогресса вообще.

Точнее, эпоха такая же. После выхода из режима прокрутки, теперь он счастливо продолжился.

Журнал читает что-то вроде

...
Эпоха 40: 1ч несколько минут
Эпоха 41: 12ч несколько минут
Эпоха 42: 12ч еще несколько минут
...
Эпоха 73: 13ч

Это означает, что время, которое потребовалось, чтобы добраться от эпохи 0 до 49, было определенно меньше чем два часа; с эпохи 40 до 41 года это заняло около 11 часов (!), с эпохи 41 до 76 среднее время за эпоху составляло около 1,7 минуты. Эпохи находятся в цикле, и не должно быть причины, почему один занимает в 400 раз больше времени, чем другие.


Дополнительная информация: этот «сон» не происходит каждый раз, когда я отсоединяюсь, находясь в режиме прокрутки. Но это уже случилось раньше. Режим прокрутки может вообще не иметь к этому никакого отношения.

Программа представляет собой скрипт на языке Python, включающий в себя код тензорного потока, работающий на графическом процессоре; команда для запуска была:

python train_script.py 2>&1 | tee train_log.txt. 

Для tmux я использую tmux attachдля повторного присоединения стандартное сопоставление клавиш и ctrl-b + dдля отсоединения, ctrl-b + up(number block)чтобы начать прокрутку, qчтобы выйти из режима прокрутки.

0

1 ответ на вопрос

0
Alex

Может ли процесс, который был запущен в сеансе tmux, заснуть?

По сути, все, tmuxчто нужно сделать - это прикрепить собственные файловые дескрипторы вместо STDIN / STDOUT / STDERR к работающему процессу внутри, tmuxчто позволяет ему работать, не подключаясь к консоли.

Ниже приведен простой сценарий, который вы можете запустить, используя тот же рабочий процесс (присоединение / отключение от tmuxсеанса), который вы описали:

#!/bin/sh  c=1000  while [ $c -ne 0 ]; do date '+%Y-%m-%dT%H:%M:%S' | tee -a log.txt sleep 1 done 

даже если бы вы переключились в режим прокрутки, а затем отсоединились от tmuxсеанса, он все равно продолжал бы работать, вы можете проверить log.txtфайл, так что это не проблема tmux.

Итак, обычно это не происходит. Но ваш пример не исключает, что это может произойти, и что tmux каким-то образом оказывает влияние. Может быть, это вызвано взаимодействием с графическим процессором или интерпретатором python? Кроме того, этот «сон» не происходит каждый раз, когда я отсоединяюсь, находясь в режиме прокрутки. dasWesen 5 лет назад 0
Куча людей, использующих GPU для майнинга биткойнов без мониторов, поэтому я не думаю, что это проблема tmux или GPU. Запускаете ли вы виртуальную среду Python перед использованием tmux? Если да, попробуйте выйти из нее и запустить виртуальную среду python внутри tmux. Также, если вы используете anaconda, некоторые его версии не поддерживают параллельные среды. Alex 5 лет назад 0
Сегодня вечером я напишу, где именно происходит процесс, чтобы увидеть, является ли это просто тензорным потоком со случайными перерывами. Но я считаю, что 40-я эпоха была последней вещью, видимой сегодня утром в режиме прокрутки, но я постараюсь убедиться, что она таким образом соотносится с tmux. dasWesen 5 лет назад 0
Нет, я не использую виртуальную среду Python на сервере. Но анаконду я использую. Может быть, это все, но тогда, вероятно, я ничего не могу сделать, кроме регулярного просмотра того, что делает процесс. Спасибо за ваши предложения. dasWesen 5 лет назад 0
Так что это, вероятно, анаконда, прочитайте этот шаг: https://github.com/openai/universe-starter-agent/issues/9. Каждый раз, когда я исследую одну и ту же проблему, оказывается, что это не ошибка `tmux`. Alex 5 лет назад 0
Еще одна подсказка: https://unix.stackexchange.com/questions/366553/tmux-is-causing-anaconda-to-use-a-different-python-source. Кроме того, чтобы исключить `tmux` из-за своей вины, вы можете попробовать запустить tenorflow с` nohup` вместо `tmux`, но я уверен, что это среда питона, которая испортит ситуацию. Alex 5 лет назад 0
Как уже говорилось, среда Python не задействована - нет conda env, нет python virtualenv. Версии и пути Python одинаковы как в сеансе tmux, так и вне его. Но попробую нохуп! dasWesen 5 лет назад 0

Похожие вопросы