exponenta event banner

Устранение распространенных проблем

В этом разделе содержатся рекомендации по решению проблем, которые могут возникнуть при использовании программного обеспечения 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

Если число процессов, созданных серверными службами на компьютере под управлением операционной системы UNIX ® (Linux ® или Macintosh), превышает предельные значения, службы завершают работу и генерируют ошибку нехватки памяти. Рекомендуется скорректировать системные ограничения. Дополнительные сведения см. в разделе Рекомендуемые системные ограничения для Macintosh и Linux (Parallel Computing Toolbox).

Запуск серверных процессов в сетевой установке Windows

Многие сети настроены на запрет LocalSystem чтобы иметь доступ к общим ресурсам UNC или сопоставленной сети. В этом случае запустите процесс mjs под другим пользователем с правами на вход в качестве службы. См. раздел Установка пользователя.

Обязательные порты

С менеджером заданий

BASE_PORT.   mjs_def определяет и описывает порты, требуемые диспетчером заданий и всеми работниками. См. следующий файл в установке MATLAB, используемой для каждого кластерного процесса:

  • matlabroot/toolbox/parallel/bin/mjs_def.sh (в операционных системах UNIX)

  • matlabroot\toolbox\parallel\bin\mjs_def.batоперационных системах Windows ®)

Обмен информацией о заданиях.  На рабочих машинах под управлением операционной системы UNIX количество портов, необходимых MPICH для выполнения связанных заданий, колеблется от BASE_PORT + 1000 кому BASE_PORT + 2000.

С сторонним планировщиком

Перед запуском рабочих процессов можно управлять диапазоном портов, используемых рабочими для передачи заданий, путем определения переменной среды. MPICH_PORT_RANGE со значением minport:maxport.

Порты клиента

С помощью pctconfig (Parallel Computing Toolbox) указывает порты, используемые клиентом. Если порты по умолчанию использовать нельзя, эта функция позволяет настраивать порты отдельно для связи с планировщиком заданий и связи с параллельным пулом.

Ephemeral TCP Ports с диспетчером заданий

При использовании диспетчера заданий на кластере узлов под управлением операционных систем Windows необходимо убедиться, что на компьютере диспетчера заданий доступно большое количество эфемерных TCP-портов. По умолчанию максимальный допустимый номер порта TCP в операционной системе Windows составляет 5000, но передача больших наборов данных может завершиться ошибкой, если этот параметр не будет увеличен. В частности, если кластер содержит 32 или более работников, необходимо увеличить максимально допустимый номер порта ephemeral TCP с помощью следующей процедуры:

  1. Запустите редактор реестра.

  2. Найдите следующий подраздел в реестре и щелкните Параметры:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. В окне «Редактор реестра» выберите «Редактирование» > «Создать» > «Значение DWORD».

  4. В списке записей справа измените имя нового значения на MaxUserPort и нажмите Enter.

  5. Щелкните правой кнопкой мыши MaxUserPort и выберите «Изменить».

  6. В диалоговом окне «Редактирование значения DWORD» введите 65534 в поле Данные значения. Выбрать Decimal для базового значения. Нажмите кнопку ОК.

    Этот параметр управляет максимальным номером порта, который используется при запросе программой любого доступного пользовательского порта из системы. Как правило, эфемерные (кратковременные) порты распределяются между значениями 1024 и 5000 включительно. Это действие позволяет выделить для номеров портов до 65534.

  7. Выйдите из редактора реестра.

  8. Перезагрузите компьютер.

Проблемы связи с хостом

Если работник не может установить соединение со своим планировщиком заданий MATLAB или если сеанс клиента не может проверить профиль, использующий этот планировщик, это может указывать на проблемы связи между узлами.

С интерфейсом командной строки

Во-первых, убедитесь, что рассматриваемые машины согласовывают свои IP-решения. IP-адрес для конкретного хоста должен быть таким же, как и для другого хоста. Например, если процесс включен hostB не удается подключиться к одному на hostA, узнайте hostA IP-адрес сам по себе, а затем посмотреть, какой IP-адрес для hostA является от hostB. Они должны быть одинаковыми.

Если машины могут идентифицировать друг друга, nodestatus может быть полезна для диагностики проблем между их процессами. Используйте функцию, чтобы определить, какие процессы параллельного сервера MATLAB выполняются на локальном хосте, а какие доступны с удаленных хостов. Если работник включен hostA не может зарегистрироваться у своего менеджера по заданиям на hostB, выполнить nodestatus на обоих хостах, чтобы увидеть, что каждый может видеть на hostB.

На hostB, выполнить:

nodestatus -remotehost hostB

Затем на hostA, выполните точно такую же команду:

nodestatus -remotehost hostB

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

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

nodestatus -remotehost hostB -infolevel 3

С графическим интерфейсом Центра администрирования

Некоторые проблемы связи можно диагностировать с помощью Центра администрирования.

Если невозможно успешно добавить хосты в список, указав их имя, можно использовать их IP-адреса (см. Добавление хостов). При подозрении на неполадки связи в графическом интерфейсе Центра администрирования щелкните Проверить подключение (см. раздел Проверка подключения). Это тестирование проверяет, что узлы могут идентифицировать друг друга и позволять своим процессам взаимодействовать друг с другом.

Проверка сетевых соединений для обнаружения кластера

Если вы хотите использовать возможности кластера обнаружения в Parallel Computing Toolbox, сеть должна быть настроена, по крайней мере, с одним из следующих компонентов:

SRV-запись DNS

При использовании DNS для обнаружения кластера требуется SRV-запись DNS для каждого домена. Можно иметь несколько 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 измените <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.

Примечание

Если для нахождения кластера требуется несколько доменов, используйте SRV-запись DNS для каждого домена. Если сеть, к которой обращаются пользователи через VPN, имеет различные SRV-записи DNS во внутренней сети, убедитесь, что SRV-запись DNS существует для каждого домена.

Используйте стандартную процедуру для системы 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;