Запрос через PBS лицензий на ПО

  • Почти для всего имеющегося в ИВЦ коммерческого прикладного ПО количество одновременно работающих экземпляров программ ограничено. В результате может возникнуть ситуация, когда задача, использующая такое ПО, запускается, но из-за отсутствия лицензии не может работать и тут же завершается с ошибкой. Для решения таких ситуация можно настроить PBS воспринимать необходимые задаче лицензии как ресурс и запускать задачу только если этот ресурс доступен. Это позволит гарантировать (с небольшой оговоркой), что эти лицензии будут доступны в момент запуска задачи. Обращаем внимание, что при этом резервирования лицензий не происходит, просто PBS регулярно проверяет, сколько лицензий запрошенного типа в данный момент свободно, и как только свободных лицензий достаточно - задача запускается. При этом вполне возможно, хотя и маловероятно, что за время между проверкой количества лицензий и запуском задачи кто-то другой сможет занять эти лицензии.
  • В большинстве случаев использование лицензий контролируется менеджером лицензий 'FlexLM' (FlexNet Publisher). Данная система существенно сложнее, чем 'одна лицензия для запуска одного экземпляра программы' - лицензии на каждый пакет ПО делятся на разные типы, называемые 'feature', необходимые для выполнения разных задач. Разные типы могут ограничивать количество одновременно работающих графических интерфейсов, количество компьютеров, на которых работает программа, количество используемых процессорных ядер, запуск дополнительных плагинов и т.д. Например, имеющийся пакет MathWorks MATLAB содержит лицензии 38 типов.
  • В первую очередь Вам необходимо определить, лицензии каких типов необходимы Вашей задаче. Для этого нужно дождаться запуска задачи и выполнить команду следующего вида:
    lmutil stat -a -c сервера_лицензий | grep -Ev '^$|Total of 0 licenses in use'

    В качестве параметра 'сервера_лицензий' необходимо указать адреса используемых серверов лицензий. Эти адреса зависят от того, какое именно ПО Вас интересует. В частности:

    • Для AccelerEyes: 27040@vm-lic1
    • Для ANSYS Academic Multiphysics Campus Solution: 1055@vm-ansys
    • Для старых лицензий Ansys: 1055@vm-lic1,1055@vm-lic2,1055@vm-lic3
    • Для COMSOL: 1718@vm-lic1,1718@vm-lic2,1718@vm-lic3
    • Для Intel: 28519@vm-lic1,28519@vm-lic2,28519@vm-lic3
    • Для Maple: 27020@vm-lic1,27020@vm-lic2,27020@vm-lic3
    • Для MATLAB: 27000@vm-lic1,27000@vm-lic2,27000@vm-lic3
    • Для MSC: 1700@vm-lic1,1700@vm-lic2,1700@vm-lic3
    • Для PGI: 27030@vm-lic1,27030@vm-lic2,27030@vm-lic3
  • Например, для Ansys команда будет выглядеть так:
    lmutil stat -a -c 1055@vm-ansys | grep -v '^$'
  • Ниже пример вывода при её работе:
    ...
    Feature usage info:
    Users of aa_mcad:  (Total of 30 licenses issued;  Total of 0 licenses in use)
    Users of aa_r:  (Total of 5 licenses issued;  Total of 5 licenses in use)
      "aa_r" v2011.1130, vendor: ansyslmd
      floating license
        hpcuser10 cn219.hpc.nusc.ru cn219 (v2009.0929) (vm-ansys/1055 503), start Mon 9/28 16:23
        hpcuser10 cn210.hpc.nusc.ru cn210 (v2009.0929) (vm-ansys/1055 611), start Tue 9/29 12:08
        hpcuser10 cn240.hpc.nusc.ru cn240 (v2009.0929) (vm-ansys/1055 330), start Tue 9/29 13:51
        hpcuser10 cn213.hpc.nusc.ru cn213 (v2009.0929) (vm-ansys/1055 411), start Tue 9/29 13:59
        hpcuser10 cn205.hpc.nusc.ru cn205 (v2009.0929) (vm-ansys/1055 226), start Tue 9/29 21:16
    Users of aa_r_hpc:  (Total of 15 licenses issued;  Total of 0 licenses in use)
    Users of aa_ds:  (Total of 25 licenses issued;  Total of 0 licenses in use)
    Users of aa_t_a:  (Total of 25 licenses issued;  Total of 2 licenses in use)
      "aa_t_a" v2011.1130, vendor: ansyslmd
      floating license
        hpcuser10 cn236.hpc.nusc.ru cn236 (v2009.0929) (vm-ansys/1055 170), start Tue 9/29 12:11
        hpcuser10 cn282.hpc.nusc.ru cn282 (v2009.0929) (vm-ansys/1055 706), start Tue 9/29 17:36
    ...
  • В данном случае видно, что пользователь 'hpcuser10' использует лицензии типа 'aa_t_a' на серверах cn236 и cn282, а также лицензии типа 'aa_r' на пяти других узлах. Узнать, на каких именно серверах запустилась задача, Вы можете с помощью методики, описанной на этой странице.
  • Для Wolfram Research Mathematica используется собственный сервер лицензий, не на основе 'FlexLM'. Для просмотра текущего состояния используйте следующую команду:
    monitorlm vm-lic1 -localtime -format text
  • Если у Вас возникли затруднения с определением используемых типов лицензий, создайте тестовую задачу, добавьте в начало и в конец скрипта для qsub команду 'date', а также добавьте команду 'cat $PBS_NODEFILE'. После завершения задачи свяжитесь с администрацией ИВЦ, сообщив точные (до секунд) времена запуска и завершения задачи и на каких узлах она работала. По этой информации используемые типы лицензий и их количество можно будет получить из логов сервера лицензий.
  • Чтобы лицензии определённого типа воспринималась как ресурс, в настройки сервера PBS должны быть внесены соответствующие изменения. В связи с большим количеством имеющихся типов лицензий не все они заранее прописаны в PBS. В настоящий момент созданы только следующие ресурсы:
Производитель / ПО Тип лицензий Название ресурса PBS
Ansys aa_mcad lic_ansys_aa_mcad
Ansys aa_r lic_ansys_aa_r
Ansys aa_r_hpc lic_ansys_aa_r_hpc
Ansys aa_ds lic_ansys_aa_ds
Ansys aa_t_a lic_ansys_aa_t_a
COMSOL COMSOL lic_comsol
MathWorks MATLAB MATLAB lic_matlab
MathWorks MATLAB Communication_Toolbox lic_matlab_communication_toolbox
Wolfram Research Mathematica Mathematica lic_mathematica
Wolfram Research Mathematica MathKernel lic_mathematica_mathkernel
Wolfram Research Mathematica Sub Mathematica lic_mathematica_submathematica
Wolfram Research Mathematica Sub MathKernel lic_mathematica_submathkernel
  • Если необходимые Вам типы лицензии отсутствуют в данном списке - обратитесь к администрации ИВЦ с запросом о создании новых ресурсов, сообщив, какое именно ПО и лицензии каких типов Вас интересуют.
  • Затем Вам надо добавить в скрипт для qsub запрос соответствующих ресурсов. Например, если нужны три лицензии на запуск Matlab (без Simulink и плагинов), то запрос выглядит так:
    #PBS -l lic_matlab=3