Linux 的 /dev/shm 是基于内存的临时文件系统(tmpfs),常用于进程间通信和高吞吐的临时数据交换。在数据/AI 场景中,以下情况往往需要更大的共享内存:
/dev/shm 过小会成为瓶颈。/dev/shm(tmpfs),默认大小为 容器内存的 70%,以满足各类对更大共享内存需求的场景。serverless.shm.enabled、 serverless.shm.size 与 serverless.shm.ratio 参数,支持在 EMR Serverless 的计算组维度、作业维度进行灵活的共享内存配置。说明
在计算组设置共享内存参数后,如果同时设置作业维度的共享内存参数,作业维度的设置结果不生效。
参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| boolean | true | 是否开启共享内存注入。设置为 false 时不挂载 |
| string | 空 | 显式指定共享内存大小(优先级最高)。示例:
|
| double | 0.7 | 共享内存占容器内存的比例(仅当未设置
|
共享内存设置过大可能挤压进程可用内存,导致 OOM。对 Ray 场景,建议以 Ray Object Store 规模为起点,再结合实际对象大小与吞吐需求调整。
您可以在创建 Ray Cluster/Ray Serve 计算组,或修改已创建计算组时,在计算组的参数配置的 自定义参数配置 (key-value,多行分隔)处,增加共享内存参数即可。
例如:
serverless.shm.size=4Gi
注意:
serverless.shm.ratio 参数来设置共享内存占比,仅可使用 serverless.shm.size 指定共享内存大小。更多计算组的创建与配置操作细节可参见:创建与管理计算组。
在提交 RayJob 作业时,在作业的 高级配置 中找到 自定义参数,按行填写 共享内存参数的 key-value 即可完成配置。
例如:
serverless.shm.size=2Gi
serverless.shm.ratio=0.3
serverless.shm.enabled=false
更多关于 RayJob 的配置参数说明请参见 RayJob 作业。
CustomJob 支持通过参数配置作业行为。您可以在提交 CustomJob 时增加共享内存参数(与 Ray 使用同一组参数)。
set serverless.shm.size=2Gi; -- 或者:set serverless.shm.ratio=0.5; -- 或者:set serverless.shm.enabled=false;
更多关于 CustomJob 的操作指导请参见:EMR Serverless Custom Job 使用说明。
您在使用 AI 数据湖(LAS)的作业管理功能提交作业时,也可以设置当前作业的共享内存参数。在作业执行时弹出的作业运行参数中,打开“共享内存”开关后即可设置共享内存大小。