#python #ssh #segmentation-fault #multiprocessing
#питон #ssh #сегментация-ошибка #многопроцессорная обработка
Вопрос:
Когда я запускаю свою многопроцессорную программу python из терминала (командная строка), все работает нормально.
$ /home/florian/tests/run_tests.sh -d -w
Скрипт run_tests.sh
— это просто оболочка для вызова Python (устанавливает переменные и вызывает python)
Когда точно такую же команду я запускаю из другого окна, используя SSH, почти все задачи (процессы) завершаются с ошибкой сегментации (165 из 189 [87%]):
$ ssh -o StrictHostKeyChecking=no florian@remote '/home/florian/tests/run_tests.sh -d -w'
Окружающая среда:
OS: SLES11
Python: 3.8.1
GNU bash, version 3.2.57(2)-release (x86_64-suse-linux-gnu)
Number of CPUs: 24
core file size (blocks, -c) 1
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 1029396
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) 112008408
open files (-n) 32768
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 32768
cpu time (seconds, -t) unlimited
max user processes (-u) 1029396
virtual memory (kbytes, -v) 108780880
file locks (-x) unlimited
Я даже пытался ограничить количество используемых процессоров до 1 — все равно не работает
import multiprocessing as mp
#pool = mp.Pool(mp.cpu_count())
pool = mp.Pool(1)
- У вас есть какие-нибудь идеи, почему он так себя ведет: работает на локальном, выходит из строя на ssh?
- Знаете ли вы какие-либо настройки SSH, которые могли бы помочь в выделении памяти (если это проблема)?
Заранее спасибо, Збигнев
Ответ №1:
Для всех, кто столкнулся бы с подобной проблемой: проблема была в переменных среды.
При подключении через SSH остаются только некоторые переменные — rest уничтожается (подробности см. В описании ssh).
Так что внутри скрипта-оболочки мне пришлось export LD_LIBRARY_PATH
— спасибо моему коллеге Франсуа за очень ценный совет 🙂
Глупая ошибка, но… может быть, кому-то этот ответ пойдет на пользу.