Main Content

定义 MATLAB 作业调度器启动参数

MATLAB® 作业调度器服务使用几个参数运行。这些参数设置了 MATLAB 作业调度器集群的进程名称、用户名、日志文件位置、端口等。

您可以在安装或启动 mjs 服务之前编辑 mjs_def 中的参数。在以下位置找到此文件:

  • Microsoft® Windows® 操作系统上的 matlabroot\toolbox\parallel\bin\mjs_def.bat

  • Linux® 操作系统上为 matlabroot/toolbox/parallel/bin/mjs_def.sh

当您启动或停止 mjs 服务、使用参数控制台运行 mjs 服务或在 Windows 操作系统上安装或卸载 mjs 服务时,mjs 服务会读取 mjs_def 文件。当您启动和停止工作进程和作业管理器时,它们会联系正在运行的 mjs 服务以获取存储在此文件中的定义和默认值。因此,mjs 服务在启动和停止工作进程和作业管理器时不会再次读取 mjs_def 文件。

对于有效的集群设置,mjs_def 文件必须在集群的所有主机上使用一致的设置。

注意

如果您想在同一主机上运行多个作业管理器,它们都必须具有唯一的名称。使用启动命令的标志指定名称。

mjs_def 文件中用户可配置参数定义如下。

MJS 流程和日志记录

参数

描述

HOSTNAME

读取 MJS 文件的主机的名称。

mjs 下的进程使用主机名 HOSTNAME 来宣传自己。作业管理器必须能够解析 MATLAB 工作进程所公布的主机名,并且所有 MATLAB 工作进程和客户端都必须能够解析作业管理器所公布的主机名。

在 Windows 操作系统上,默认的 HOSTNAME 是主机的完全限定域名 (FQDN)。如果客户端将主机的短名称解析为不同的主机,则 mjs 服务可以使用 FQDN。mjs 服务使用此命令来确定主机的 FQDN。

for /F "usebackq skip=2 tokens=4" %%A in (`reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v "NV Hostname" 2^>nul`) do (
	    set strHostname=%%A
)

for /F "usebackq skip=2 tokens=4" %%A in (`reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v "NV Domain" 2^>nul`) do (
	    set strDomain=%%A
)
HOSTNAME=%strHostname%.%strDomain%

在 Linux 操作系统上,mjs 服务使用此命令确定默认的 HOSTNAME

HOSTNAME=`hostname -f`

仅当以下情况时才更改此设置:

  • 上述代码或命令返回错误的主机名,或者

  • 上述命令不可用,或者

  • 上述代码或命令返回的主机名无法被 mjs 服务下的进程与之通信的所有其他计算机解析

BASE_PORT

mjs 服务的基本端口。

mjs 服务使用所需数量的端口,从 BASE_PORT 开始。默认情况下,BASE_PORT 为 27350。

如果您使用的主机总共运行了 nJ 作业管理器和 nW 工作进程,则 mjs 服务将保留总共 7+2*nJ+4*nW 连续端口供自己使用。所有要一起工作的作业管理器和工作进程(即使是位于不同主机上的作业管理器和作业执行器)都必须使用相同的基本端口。否则,作业管理器和工作进程将无法互相联系。此外,MPI 通信发生在从 BASE_PORT+1000 开始的端口上,并使用 2*nW 连续端口。

例如,如果您使用具有 1 个作业管理器和 16 个工作进程的主机,那么您需要打开以下范围的端口:

  • 27350 – 27422 用于 mjs 服务。

  • 28350 – 28382 用于 MPI 通信。

要从 MATLAB 连接到具有非默认 BASE_PORT 的集群,必须将 BASE_PORT 的值附加到 MATLAB 作业调度器集群配置文件中的 'Host' 属性。您必须以 Hostname:BASE_PORT 形式执行此操作,例如 myMJSHost:44001

MJSUSER

启动 mjs 服务的用户名。

默认情况下,mjs 服务管理的所有进程都与启动 mjs 服务的用户相关联。如果未指定 MJSUSER,则 mjs 服务在 Windows 操作系统上以 LocalSystem 运行,或在 Linux 操作系统上以 root 用户身份运行。

您可以设置此参数以与启动服务的用户不同的用户身份运行 mjs 服务。在 Windows 操作系统中,在安装服务之前设置该值;在 Linux 操作系统中,在启动服务之前设置该值。

MJSUSER 必须有权访问 MATLAB 安装文件夹。您可以将 MJSUSER 指定为 DOMAINNAME\USERNAME,或者如果用户是本地用户,则指定为 .\USERNAME

有关 MJSUSER 的权限和要求的更多信息,请参阅设置用户

MJSPASS

用户名的密码在 MJSUSER 参数中指定(仅限 Windows 操作系统)。

要以 MJSUSER 身份运行 mjs 服务,您可以为该用户指定密码。您可以在 mjs.def 文件中设置密码,或者,如果未设置,mjs 服务会在您启动 mjs 服务时提示您输入密码。

如果您在 mjs_def 文件中指定密码,并且密码使用在批处理文件中视为特殊字符的字符,则必须将其替换为适当的转义序列:

  • 密码中必须有一个感叹号 (!),形式为 ^^!。

  • 密码中的单个百分比 (%) 必须以 %% 的形式给出。

  • 密码中必须有一个插入符号 (^),形式为 ^^^^。

  • 其他特殊字符 & < > [ ] { } = ; ' + , ` ~ 必须用单个前置 ^ 进行转义。

PIDBASELOCKBASE

用于存储 PID 和锁文件的文件夹。(仅限 Linux 操作系统。)

PIDBASELOCKBASE 文件夹包含 mjs 服务的 PID 和锁文件。PIDBASE 的默认值是 /var/runLOCKBASE 的默认值是 /var/lock/subsys

您必须确保运行 mjs 服务的用户对该文件夹具有写权限。

LOGBASE

用于存储 mjs 日志文件的文件夹。

LOGBASE 文件夹包含 mjs 服务在正常运行过程中生成的日志文件。

  • 在 Microsoft Windows 操作系统上,默认 LOGBASE 文件夹路径为 %PROGRAMDATA%\MJS\Log,其中 %PROGRAMDATA% 是系统程序数据环境变量。例如,如果 %PROGRAMDATA% 设置为 C:\ProgramData,则日志文件将放在 C:\ProgramData\MJS\Log 中。文件夹名称不能用双引号引起来,并且文件夹名称不能包含括号。

  • 在 Linux 操作系统上,默认值为 /var/log/mjs

您必须确保运行 mjs 服务的用户对该文件夹具有写权限。对于安全级别 3 的工作进程主机,运行 mjs 服务的用户还必须能够向在主机上运行作业和任务的所有用户授予此文件夹的写权限。

CHECKPOINTBASE

用于存储 mjs 检查点文件夹的文件夹。

CHECKPOINTBASE 文件夹包含与 mjs 服务相关的持久信息。

  • 在 Microsoft Windows 操作系统上,默认 CHECKPOINTBASE 文件夹路径为 %PROGRAMDATA%\MJS\Checkpoint,其中 %PROGRAMDATA% 是系统程序数据环境变量。例如,如果 %PROGRAMDATA% 设置为 C:\ProgramData,则检查点文件夹将放在 C:\ProgramData\MJS\Checkpoint 中。文件夹名称不能用双引号引起来,并且文件夹名称不能包含括号。

  • 在 Linux 操作系统上,默认值为 /var/lib/mjs

在运行作业管理器的主机上,检查点文件夹存储与作业管理器相关的数据库信息,并且可能需要大量磁盘空间。

在运行工作进程的主机上,检查点文件夹存储随工作进程任务传输的数据。

您必须确保运行 mjs 服务的用户对该文件夹具有写权限。

MJS_JAVA

mjs 服务设置 Java® 运行时环境 (JRE™) 路径。

默认情况下,mjs 服务使用 MATLAB 附带的 Java 安装。要为 mjs 服务使用您自己的 JRE 安装,请指定已安装 JRE 的路径。有关与 MATLAB 兼容的 Java 版本的信息,请参阅 MATLAB 与其他语言的接口

作业管理器安全

参数

描述

SECURITY_LEVEL

集群的安全级别。

您可以为 MATLAB 作业调度器集群指定安全级别。从以下级别中选择一个:

  1. 级别 0 – 未启用任何安全功能。这是默认的安全级别。工作没有受到保护。

  2. 级别 1 – 当用户尝试访问其他用户的作业和任务时,此级别会发出警告。但是,所有用户仍然可以执行所有操作。

  3. 第 2 级 – 用户必须输入密码才能访问他们的作业和任务。除非作业所有者通过 AuthorizedUsers 作业属性授予访问权限,否则其他用户无权访问。

  4. 级别 3 - 与级别 2 相同,只是此级别以工作进程所属用户的身份在工作进程上运行作业和任务。该密码必须是登录工作进程主机的系统密码或网络密码。只有受信任的工作进程(即具有相同共享密钥文件的工作进程)可以连接到作业管理器,请参阅下面的 SHARED_SECRET_FILE

    您必须将 USE_SECURE_COMMUNICATION 参数设置为 true。在 Linux 操作系统上,您必须以 root 用户身份运行 mjs 服务。

有关详细信息,请参阅设置安全级别

ADMIN_USER

集群管理员账户的用户名。

在安全级别 2 和 3 下,管理员可以访问和操作所有用户的作业和任务。如果未启用 LDAP 服务器身份验证,他们还可以更改用户的密码。

当您启动作业管理器或者执行管理员操作时,mjs 服务会提示您提供管理员账户的密码。

如果启用了 LDAP 服务器身份验证,则 ADMIN_USER 参数中指定的用户名必须是 LDAP 服务器中的有效用户名。要根据 LDAP 服务器验证管理员的用户名,您必须在启动作业管理器时提供 ADMIN_USER 中指定的用户名的密码。

如果您未指定用户名,则集群管理员账户用户名默认为 admin

USE_SECURE_COMMUNICATION

服务之间使用加密通信。

在作业管理器、客户端和工作进程之间建立加密通信。

默认情况下,作业管理器和工作进程通过非加密通道进行通信。当您不需要保护数据或连接已受到保护以免遭受未经授权的访问时(例如,如果您的集群网络是隔离的并且无法访问 Internet),此功能非常有用。此外,加密通信可能会因为加密消息时产生的额外开销而导致性能下降。

当将 USE_SECURE_COMMUNICATION 设置为 true 时,MATLAB 客户端、作业管理器和工作进程之间的通信将被加密。

加密通信需要每个参与主机(MATLAB 客户端除外)上有一个共享的密钥文件。有关共享密钥文件的更多信息,包括如何生成密钥文件,请参阅下面的 SHARED_SECRET_FILE 描述。

当您将集群设置为安全级别 3 时,USE_SECURE_COMMUNICATION 默认启用。要在 MATLAB 作业调度器、客户端和工作进程之间建立加密通信,请参阅设置加密通信

REQUIRE_SCRIPT_VERIFICATION

要求对发送到集群的特权命令进行验证。

默认情况下,REQUIRE_SCRIPT_VERIFICATION 设置为 falsemjs 服务将在没有任何验证的情况下运行发送给它的命令。这允许任何人修改集群的状态,例如通过启动或停止工作进程或作业管理器进程。

特权命令包括任何可以修改集群状态的命令。当您将 REQUIRE_SCRIPT_VERIFICATION 设置为 true 时,mjs 服务会在执行之前使用密钥文件验证每个命令。当您将集群设置为安全级别 3 时,命令验证默认启用。

有关详细信息,请参阅设置集群命令验证

SHARED_SECRET_FILE

共享密钥文件的位置。

为了在作业管理器和工作进程之间建立加密连接,所有参与主机上都需要一个共享的密钥文件。您可以使用 createSharedSecret 脚本创建共享密钥文件。有关详细信息,请参阅创建共享秘密文件

如果启动 mjs 时共享密钥文件尚不存在,则 mjs 服务会在默认位置创建一个:%CHECKPOINTBASE%\security\secret

当您将集群设置为安全级别 3 时,mjs 使用共享密钥文件来确保只有受信任的工作进程才能连接到作业管理器。

注意

秘密文件包含敏感数据,您必须保护它以防止未经授权的访问。任何能够访问密钥文件的人都可能能够窃听服务之间的连接。

ALLOW_CLIENT_PASSWORD_CACHE

记住用户密码以供将来使用。

如果设置为 true,则此选项允许用户让 MATLAB 客户端记住他们的登录信息,以供将来的客户端会话。用户仍然可以选择在 MATLAB 密码提示时不存储任何信息。

ALLOWED_USERS

允许登录作业管理器的用户列表。

此属性定义了允许访问作业管理器的用户列表。多个用户名必须用逗号分隔。默认情况下,ALLOWED_USERS 设置为 ALL

要允许任何用户访问作业管理器,请使用关键字 ALL 而不是用户名列表。

REQUIRE_CLIENT_CERTIFICATE

要求 MATLAB 客户端在使用加密通信时出示证书才能连接到作业管理器。

默认情况下,REQUIRE_CLIENT_CERTIFICATE 设置为 false。如果将 REQUIRE_CLIENT_CERTIFICATE 设置为 true,则集群用户必须具有包含证书的集群配置文件才能连接到作业管理器。有关详细信息,请参阅设置 MATLAB 客户端验证

WORKER_DOMAIN

Windows 域工作进程在安全级别 3 登录时使用(仅限 Windows 操作系统)。

要以提交任务的用户身份运行任务,Windows 除了需要用户名之外还需要一个域。默认情况下,如果某个任务属于 USER,则软件会以 %WORKER_DOMAIN%\USER 运行该任务。

在大多数情况下,默认值是正确的,不能更改。

注意

仅当在安全级别 3 的 Windows 上运行时才需要此属性。

USE_LDAP_SERVER_AUTHENTICATION

选择使用 LDAP 服务器来验证用户凭证。 (自 R2023a 起)

默认情况下,USE_LDAP_SERVER_AUTHENTICATION 设置为 false。要为安全级别 2 或 3 集群启用 LDAP 服务器身份验证,请将此参数设置为 true。有关详细信息,请参阅为 MATLAB 作业调度器配置 LDAP 服务器身份验证

集群用户必须使用他们的 LDAP 服务器用户名和密码才能连接到集群。

LDAP_URL

用于验证用户的 LDAP 服务器的 URL。 (自 R2023a 起)

如果您已将集群配置为使用 LDAP 服务器身份验证,则必须设置 LDAP_URL。将 LDAP_URL 指定为:

ldap://HOST:PORT

如果您已通过 SSL 配置 LDAP 服务器,请将 URL 指定为:

ldaps://HOST:PORT

有关详细信息,请参阅为 MATLAB 作业调度器配置 LDAP 服务器身份验证

LDAP_SECURITY_PRINCIPAL_FORMAT

LDAP 服务器安全主体的格式。 (自 R2023a 起)

您可以指定 LDAP 服务器用于身份验证的安全主体的格式。

常见格式包括 "[username]@domain.com""cn=[username],ou=Users,dc=domain,dc=com"。在身份验证期间,主体的用户名将替换 [username] 令牌。

LDAP_SYNCHRONIZATION_INTERVAL_SECS

集群与 LDAP 服务器同步的频率。 (自 R2023a 起)

默认值为 1800 秒,即每半小时将集群与 LDAP 服务器同步一次。

您可以指定下列之一:

  • 一个正数,对应于同步之间的秒数。在下次同步之前,可能会授予旧的/过期的凭据对集群的访问权限。

  • 0。每次集群需要身份验证时,集群都会与 LDAP 服务器同步。

作业管理器和作业设置

参数

描述

DEFAULT_JOB_MANAGER_NAME

作业管理器的默认名称。

当启动一个新的作业管理器时,它需要通过网络上的名称来标识,而当启动新的工作进程时,它需要知道要注册的作业管理器的名称。使用 DEFAULT_JOB_MANAGER_NAME 参数指定的值是两种情况下使用的默认作业管理器名称。

要覆盖默认作业管理器名称,请使用带有 -name 标志的 startjobmanager 命令。要更改工作进程主机上的作业管理器名称,请使用带有 -jobmanager 标志的 startworker 命令。

JOB_MANAGER_HOST

运行作业管理器查找进程的主机。

MATLAB 工作进程和作业管理器进程联系指定主机上的作业管理器查找进程。

您可以使用带有 -jobmanagerhost 标志的 startworker 命令覆盖作业管理器主机。

SAVE_JOB_HISTORY

将作业和任务记帐信息保存到磁盘。 (自 R2024a 起)

默认情况下,SAVE_JOB_HISTORY 设置为 true,作业管理器将作业和任务信息存储在位于 CHECKPOINTBASE 文件夹中的作业历史数据库中。作业历史文件的大小限制为 10GB。您可以提取和分析作业历史数据以用于会计目的。要禁用保存作业历史数据,请将此参数设置为 false。有关详细信息,请参阅管理和访问 MATLAB 作业调度器集群作业历史记录

JOB_MANAGER_MAXIMUM_MEMORY

作业管理器 Java 进程的最大堆大小。

您可以调整作业管理器 Java 进程的堆内存量。默认情况下,JOB_MANAGER_MAXIMUM_MEMORY 设置为 1024m。有关何时调整作业管理器的堆内存的建议,请参阅增加堆内存

DEFAULT_WORKER_NAME

工作进程的默认名称。

您可以通过调用带有 -name 标志的 startworker 命令来覆盖默认工作进程。每个主机上的工作进程名称必须是唯一的,因此,如果您想在单个主机上启动多个工作进程,则必须在 startworker 命令中使用 -name 标志。

WORKER_MAXIMUM_MEMORY

所有工作进程 Java 进程的最大堆大小。

您可以调整工作进程 Java 进程的堆内存量。默认情况下,WORKER_MAXIMUM_MEMORY 设置为 1024mWORKER_MAXIMUM_MEMORY 不会影响 MATLAB 工作进程可以使用的内存量。

WORKER_START_TIMEOUT

在检测到停转之前工作进程会话等待 MATLAB 启动的秒数。

默认值为 600s。您必须选择一个大于 MATLAB 会话启动所需时间的值。

MATLAB_SHELL

Shell 工作进程在系统调用中使用(仅限 Linux 操作系统)。

您可以指定当工作进程调用 MATLAB 系统命令时生成的 shell。例如,要使用 Bourne shell,请将 MATLAB_SHELL 设置为 /bin/sh

MATLAB 首先内部检查 MATLAB_SHELL 变量,如果为空或未定义,则检查 SHELL。如果 SHELL 也为空或未定义,MATLAB 将使用 Bourne shell /bin/shMATLAB_SHELL 的值必须是绝对路径,即 /bin/sh,而不是简单的 sh

请注意,某些 shell(例如 tcsh)可能会选择将 MATLAB 中的系统命令解释为启动新登录 shell 而不是子 shell 的请求,这可能会对您在 MATLAB 中所做的环境变量更改产生影响,例如,对允许其他应用程序运行的 PATH 环境变量的更改。

USE_ONLINE_LICENSING

使用在线管理的许可证。

USE_ONLINE_LICENSING 设置为 true 以启用按需许可或使用在线管理的许可证。

启用后,用户必须登录他们的 MathWorks® 帐户才能连接到集群,并且他们的帐户必须链接到在线管理的 MATLAB Parallel Server™ 许可证。

ALL_SERVER_SOCKETS_IN_CLUSTER

发起从客户端端到集群的连接。

要使所有连接从客户端端出站,请将 ALL_SERVER_SOCKETS_IN_CLUSTER 设置为 true。为了允许来自作业管理器和工作进程到客户端的入站连接以及来自客户端的出站连接,请将 ALL_SERVER_SOCKETS_IN_CLUSTER 设置为 false

MJS_ADDITIONAL_MATLABROOTS

指向先前 MATLAB 版本的附加安装的路径。

仅当指定与正在使用的 MATLABParallel Server 版本不同的 MATLAB 安装时才需要 MJS_ADDITIONAL_MATLABROOTS

您必须列出 MATLAB 安装的路径(不带引号)。允许使用分号分隔多个条目,例如:

MJS_ADDITIONAL_MATLABROOTS=C:\Program Files\MATLAB\R2016a;C:\Program Files\MATLAB\R2016b

从 R2016a 开始,仅支持您使用的 MATLAB Parallel Server 版本之前发布的 MATLAB 版本。

仅当指定了其版本的路径时,MATLAB 客户端才可以使用该集群。

MAX_LINUX_WORKERS

集群可以根据需求扩展的 Linux 工作进程的最大数量。仅当您已设置集群自动调整大小时才设置此值。有关详细信息,请参阅设置 MATLAB 作业调度器集群以实现自动调整大小

MAX_WINDOWS_WORKERS

集群可以根据需求缩减的 Windows 工作进程的最大数量。仅当您已设置集群自动调整大小时才设置此值。有关详细信息,请参阅设置 MATLAB 作业调度器集群以实现自动调整大小

SCHEDULING_ALGORITHM

作业管理器的调度算法。 (自 R2023b 起)

从以下选项中选择一个:

  • standard:(默认)将通信作业分散到尽可能少的工作进程机器上,以减少通信开销,并用独立作业填充工作进程机器上未使用的空间。该调度算法为广泛的用途提供了良好的行为,包括启用了自动调整大小或自动缩放的集群。

  • loadBalancing:当集群利用率不足时,在集群内均匀分配负载,为正在运行的作业和任务提供尽可能多的资源。

另请参阅

| |

相关主题