В этом разделе приведены рекомендации по решению проблем, с которыми вы можете столкнуться в MATLAB® Программное обеспечение Parallel Server™.
При запуске работника MATLAB проблема лицензирования может привести к появлению сообщения
License checkout failed. No such FEATURE exists. License Manager Error -5
Существует много причин, по которым вы можете получить эту ошибку:
Это сообщение обычно указывает, что вы пытаетесь использовать продукт, для которого вы не лицензированы. Посмотрите на свои license.dat
файл, расположенный в вашей установке MATLAB, чтобы увидеть, лицензирован ли вы для использования этого продукта.
Если вы лицензированы для этого продукта, эта ошибка может быть результатом дополнительных возвратов или вкладок каретки в файле лицензии. Чтобы избежать этого, убедитесь, что каждая линия начинается с #
, SERVER
, DAEMON
, или INCREMENT
.
После фиксации license.dat
файл, перезапуск диспетчера сетевых лицензий и MATLAB должны работать правильно.
Эта ошибка также может быть результатом неправильной системной даты. Если ваша системная дата предшествует дате получения лицензии, вы получите эту ошибку.
Если эта ошибка возникает при запуске рабочего процесса с программным обеспечением MATLAB Parallel Server:
Вы можете позвонить в startworker
команда из установки, которая не имеет доступа к рабочей лицензии. Например, запуск рабочего процесса из клиентской установки продукта Parallel Computing Toolbox™ приводит к следующей ошибке:
The mjs service on the host hostname returned the following error: Problem starting the MATLAB worker. The cause of this problem is: ============================================================== Most likely, the MATLAB worker failed to start due to a licensing problem, or MATLAB crashed during startup. Check the worker log file /tmp/mjs_user/node_node_worker_05-11-01_16-52-03_953.log for more detailed information. The mjs log file /tmp/mjs_user/mjs-service.log may also contain some additional information. ===============================================================
В файлах журнала рабочих процессов отображается следующая информация:
License checkout failed. License Manager Error -15 MATLAB is unable to connect to the license server. Check that the license manager has been started, and that the MATLAB client machine can communicate with the license server. Troubleshoot this issue by visiting: https://www.mathworks.com/support/lme/R2009a/15 Diagnostic Information: Feature: MATLAB_Distrib_Comp_Engine License path: /apps/matlab/etc/license.dat FLEXnet Licensing error: -15,570. System Error: 115
Если вы установили только продукт Parallel Computing Toolbox и пытаетесь запустить рабочий процесс на том же компьютере, вы получите эту ошибку, поскольку продукт MATLAB Parallel Server не установлен, и поэтому рабочий процесс не может получить лицензию.
Если количество процессов, созданных серверными службами на компьютере, работающем под управлением UNIX® операционная система (Linux® или Macintosh) превышает пределы операционной системы, службы отказывают и генерируют ошибку нехватки памяти. Рекомендуется скорректировать пределы системы. Для получения дополнительной информации смотрите Рекомендуемые системные пределы для Macintosh и Linux (Parallel Computing Toolbox).
Многие сети сконфигурированы так, чтобы не разрешать LocalSystem
иметь доступ к UNC или сопоставленным сетевым общим ресурсам. В этом случае запустите процесс mjs под другим пользователем с правами входа как сервис. См. раздел Установка пользователя.
BASE_PORT. The mjs_def
файл задает и описывает порты, требуемые менеджером заданий и всеми работниками. См. следующий файл в установке MATLAB, используемой для каждого процесса кластера:
(в операционных системах UNIX)matlabroot
/ toolbox/parallel/bin/mjs_def.sh
(в Windows® операционные системыmatlabroot
\ toolbox\parallel\bin\mjs _ def.bat
Коммуникация с заданиями. На рабочих компьютерах, работающих под управлением операционной системы UNIX, количество портов, требуемых MPICH для выполнения взаимодействующих заданий, колеблется от BASE_PORT + 1000
на BASE_PORT + 2000
.
Перед началом рабочих процессов можно управлять областью значений портов, используемых работниками для связи заданий, путем определения переменного окружения MPICH_PORT_RANGE
со значением minport:maxport
.
С pctconfig
(Parallel Computing Toolbox), вы задаете порты, используемые клиентом. Если порты по умолчанию не могут использоваться, эта функция позволяет вам конфигурировать порты отдельно для связи с планировщиком заданий и связи с параллельным пулом.
Если вы используете диспетчер заданий в кластере узлов под управлением операционных систем Windows, необходимо убедиться, что на компьютере диспетчера заданий доступно большое количество эфемерных портов TCP. По умолчанию максимально допустимый эфемерный номер порта TCP в операционной системе Windows составляет 5000, но передача больших наборов данных может оказаться неудачной, если этот параметр не будет увеличен. В частности, если ваш кластер имеет 32 или более работников, необходимо увеличить максимально допустимый эфемерный номер порта TCP с помощью следующей процедуры:
Запустите редактор реестра.
Найдите в реестре следующий ключ и нажмите Parameters:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
В окне Редактора реестров выберите Edit > New > DWORD Value.
В списке записей справа измените новое имя значения на MaxUserPort
и нажмите Enter.
Щелкните правой кнопкой мыши по MaxUserPort
имя записи и выберите Modify.
В диалоговом окне «Редактирование значения DWORD» введите 65534
в поле Value data. Выберите Decimal
для Base значения. Нажмите OK.
Этот параметр управляет максимальным номером порта, который используется, когда программа запрашивает любой доступный пользовательский порт из системы. Обычно эфемерные (кратковременные) порты распределяются между значениями 1024 и 5000 включительно. Это действие позволяет выделять номера портов до 65534.
Выход из редактора реестров.
Перезагрузите компьютер.
Если рабочий процесс не может установить соединение со своим планировщиком заданий MATLAB или если сеанс клиента не может подтвердить профиль, который использует этот планировщик, это может указывать на проблемы связи между узлами.
Во-первых, убедитесь, что рассматриваемые машины согласовывают свои разрешения по IP. IP-адрес для конкретного хоста должен быть таким же для себя, как и для другого хоста. Для примера, если процесс на hostB
не удается подключиться к единице на hostA
, узнать hostA
IP-адрес для себя, затем посмотрите, какой IP-адрес для hostA
от hostB
. Они должны быть одинаковыми.
Если машины могут идентифицировать друг друга, nodestatus
команда может быть полезной для диагностики проблем между их процессами. Используйте функцию, чтобы определить, какие процессы MATLAB Parallel Server выполняются на локальном хосте и которые доступны с удаленных хостов. Если рабочий на hostA
не удается зарегистрироваться в диспетчере заданий на hostB
, запуск nodestatus
на обоих хостах, чтобы увидеть, что каждый может видеть на hostB
.
На hostB
, выполните:
nodestatus -remotehost hostB
Затем на hostA
, выполните точно ту же команду:
nodestatus -remotehost hostB
Результаты должны быть одинаковыми, показывая одинаковый перечень руководителей и работников.
Если выход указывает на проблемы, запустите команду снова с более высоким уровнем информации, чтобы получить более подробную информацию:
nodestatus -remotehost hostB -infolevel 3
Диагностировать некоторые проблемы связи можно с помощью Admin Center.
Если вы не можете успешно добавить узлы в список, указав имя узла, можно использовать их IP-адреса (см. раздел «Добавление узлов»). Если вы подозреваете какие-либо проблемы с связью, в GUI Admin Center нажмите Test Connectivity (см. «Тестирование подключения»). Эта проверка проверяет, что узлы могут идентифицировать друг друга и позволяют их процессам взаимодействовать друг с другом.
Если вы хотите использовать возможности кластера обнаружения в Parallel Computing Toolbox, ваша сеть должна быть сконфигурирована как минимум с одним из следующих:
При использовании DNS для обнаружения кластеров требуется запись DNS SRV для каждой области. Можно иметь несколько записей SRV DNS для нескольких планировщиков заданий MATLAB. Используйте следующую общую форму для каждой записи SRV DNS.
_mdcs._tcp.<domain> <TTL> IN SRV <priority> <weight> <port> <hostname>.
Создайте запись SRV DNS для сервера планировщика заданий MATLAB с помощью следующих частей.
<domain>
- имя области (например company.com
или university.edu
), который ищет клиентская машина.
<TTL>
указывает, как долго (в секундах) может быть кэширована запись DNS. 3600
рекомендуется.
IN SRV
требуется как показано, что указывает на то, что это служебная запись.
<priority>
и <weight>
указать приоритет и значения веса. Если вы создаете несколько записей SRV DNS, вы можете задать их приоритет с этими полями. Значение 0
рекомендуется для каждого. Нижняя <priority>
есть, более высокий приоритет у хоста. Когда две записи имеют одинаковые <priority>
, запись с наивысшей <weight>
используется сначала. Используйте <weight>
значение для задания выборов сервера.
<port>
- порт, на котором вы соединяетесь с сервером планировщика заданий MATLAB. Порт по умолчанию 27350
. Если вы меняете порт для сервера MATLAB Job Scheduler, измените <port>
соответственно.
<hostname>
- полное доменное имя для хоста, обслуживающего планировщик заданий MATLAB. Машинный mjs-1
на область company.com
имеет полное доменное имя mjs-1.company.com
.
Допустимая запись SRV DNS для company.com
сеть, выполняющая планировщик заданий MATLAB на компьютере mjs-1
может выглядеть следующим образом:
_mdcs._tcp.company.com 3600 IN SRV 0 0 27350 mjs-1.company.com.
Примечание
Если для определения местоположения кластера требуется несколько областей, используйте запись DNS SRV для каждой области. Если сеть, к которой пользователи обращаются через VPN, имеет различные записи DNS SRV во внутренней сети, убедитесь, что для каждой области существует запись DNS SRV.
Используйте стандартную процедуру для системы DNS для создания соответствующих записей SRV DNS. Можно использовать стандартные утилиты, такие как nslookup
команда, чтобы убедиться, что ваша сеть сконфигурирована с необходимыми записями SRV DNS. Чтобы изучить записи DNS SRV планировщика заданий MATLAB для company.com
область, используйте следующую команду.
nslookup -type=SRV _mdcs._tcp.company.com
Чтобы использовать многоадресную рассылку, это необходимо в главном узле, на котором работает планировщик заданий MATLAB, и в клиентской системе.
Многоадресная передача, в отличие от TCP/IP или UDP, является протоколом, основанным на подписке, где ряд машин в сети указывают сети на их интерес к конкретным пакетам, исходящим где-то в этой сети. В отличие от этого, пакеты UDP и TCP всегда привязаны к одной машине, обычно обозначенной ее IP-адресом.
Основными инструментами для исследования этого типа пакетов являются:
tcpdump
для операционных систем UNIX
winpcap
и ethereal
для Microsoft® Операционные системы Windows
Java® класс, включенный в параллельные вычислительные продукты.
Класс Java вызывается com.mathworks.toolbox.distcomp.mjs.test.MulticastTester
. И его статический основной метод, и его конструктор берут два входных параметров: группу многоадресной рассылки для соединения и номер порта для использования.
Этот класс Java имеет ряд простых методов для попытки присоединиться к указанной группе многоадресной рассылки. После успешного присоединения класса к группе у него есть методы отправки сообщений в группу, прослушивания сообщений от группы и отображения полученных сообщений. Можно использовать этот класс как при вызове в командной строке программного обеспечения Java, так и внутри MATLAB.
Из приглашения интерпретатора (принимая, что java
находится на вашем пути), введите
java -cp distcomp.jar com.mathworks.toolbox.distcomp.mjs.test.MulticastTester
Вы увидите выход примерно так:
0 : host1name : 0 1 : host2name : 0
В следующем примере показано, как использовать класс Java в MATLAB.
Запустите MATLAB на двух машинах (например host1name
и host2name
), для которого необходимо протестировать многоадресную рассылку. В каждом сеансе работы с MATLAB введите следующие команды:
m = com.mathworks.toolbox.distcomp.mjs.test.MulticastTester('239.1.1.1', 9999); m.startSendingThread; m.startListeningThread;
Эти инструкции заставляют каждый сеанс работы с MATLAB выдавать поток многоадресных тестовых пакетов и прослушивать тестовые пакеты. Если многоадресная рассылка работает между машинами, вы видите поток линий, такой как следующее:
0 : host1name : 0 1 : host2name : 0 2 : host2name : 1 3 : host2name : 2
Номер слева в каждом векторе символов является номером линии для полученного пакета. Текст в центре является хостом, с которого получен пакет. Номер справа является номером пакета, отправляемым отправляющим узлом. Для хоста нормально сообщать тестовый пакет от себя.
Если либо машина не получает поток тестовых пакетов, либо если удаленный хост не включен ни в один поток, то многоадресная связь не работает должным образом.
Чтобы завершить тестовый поток, выполните следующее в обоих сеансах работы с MATLAB:
m.stopSendingThread; m.stopListeningThread;