Ctrl+ C не убивает процесс
У меня есть процесс, который прекрасно реагирует на CTRL+C
на моей локальной машине. И, похоже, тоже работает.
Но в случае EC2 он зависает и становится несуществующим или зомби-процессом.
kill -9 <PID>
не удаляет его, и я должен перезагрузить экземпляр EC2, чтобы очистить его должным образом.
Когда он запускается, он также загружает собственную библиотеку общего пользования, на которую я не имею никакого влияния и не имею доступа к исходному коду, чтобы посмотреть, что он делает. Эта библиотека также использует CUDA и появляется для запуска нескольких потоков.
Я попытался установить обработчик сигнала в главном потоке, и он действительно устанавливается, но вызывает _exit
не останавливает весь процесс, кажется, все еще ждет.
Почему здесь может происходить то, что мешает CTRL+C
от выхода из процесса чисто? Могу ли я переопределить или проверить, что могут делать другие темы?
1 ответ
Ах, я нашел проблему. Я оставлю вопрос в том виде, в каком он есть, на случай, если это поможет кому-то другому.
Оказывается, у меня на компьютере установлен GTX 680, и драйверы устанавливаются при установке CUDA. На EC2 карта GRID K520, и драйвер, установленный CUDA, не работает. Я скачал и установил последний стабильный драйвер для конкретной карты, и он работал.
Открытие было сделано после запуска nvidia-smi
и он не будет печатать какие-либо подробности о карте, а просто покажет Killed
, Запустите nvidia-smi еще раз, и консоль заблокируется.
К сожалению, я не проверял, что приложения CUDA работали, но полагался на драйвер, который, по-видимому, печатал в журнале сообщение о том, что оно загружено, и предполагал, что оно работает.
Обновление драйвера состояло из загрузки последней версии драйвера от nvidia (используйте версию.run). Затем:
sudo modprobe -r nvidia_uvm
sudo modprobe -r nvidia
Наконец, установите его с помощью команды вроде:
sudo ./NVIDIA-Linux-x86_64-3xx.xx.xx.run
Затем я перезагрузил экземпляр и проверил его с помощью nvidia-smi.
Эта ссылка была проницательной - CUDA 7.5 нестабильна на EC2