You need to enable JavaScript to run this app.
文档中心
E-MapReduce

E-MapReduce

复制全文
下载 pdf
EMR Serverless 队列最佳实践
EMR Serverless 共享内存(/dev/shm)配置实践
复制全文
下载 pdf
EMR Serverless 共享内存(/dev/shm)配置实践

背景信息

痛点场景

Linux 的 /dev/shm 是基于内存的临时文件系统(tmpfs),常用于进程间通信和高吞吐的临时数据交换。在数据/AI 场景中,以下情况往往需要更大的共享内存:

  • Ray 工作负载:Ray 的对象存储会优先使用共享内存以减少拷贝和落盘;当共享内存不足时,可能触发对象落盘或出现明显的吞吐/延迟抖动。
  • 多进程数据加载与预处理:例如 Python multiprocessing、数据预处理 pipeline、Shuffle/Cache 等,往往把共享内存当作高性能缓冲区。
  • 大对象/大批量数据交换:需要在同一节点内频繁传递大对象或大 batch 数据时,/dev/shm 过小会成为瓶颈。

方案概述

  • EMR Serverless 支持在 Ray 任务(RayJob、Ray Cluster/Ray Serve 计算组)以及 CustomJob 中配置共享内存。平台会在容器内挂载 /dev/shm(tmpfs),默认大小为 容器内存的 70%,以满足各类对更大共享内存需求的场景。
  • EMR Serverless 为您提供了 serverless.shm.enabled、 serverless.shm.size 与 serverless.shm.ratio 参数,支持在 EMR Serverless 的计算组维度、作业维度进行灵活的共享内存配置。

    说明

    在计算组设置共享内存参数后,如果同时设置作业维度的共享内存参数,作业维度的设置结果不生效。

参数说明

参数

类型

默认值

说明

serverless.shm.enabled

boolean

true

是否开启共享内存注入。设置为 false 时不挂载 /dev/shm。

serverless.shm.size

string

空

显式指定共享内存大小(优先级最高)。示例:2Gi、512Mi。

  • 优先级:若同时配置 serverless.shm.size 与 serverless.shm.ratio,以 serverless.shm.size 为准。

serverless.shm.ratio

double

0.7

共享内存占容器内存的比例(仅当未设置 serverless.shm.size 时生效)。

  • 计算组维度不支持通过比例参数来设置共享内存大小。

配置实践

设置建议

共享内存设置过大可能挤压进程可用内存,导致 OOM。对 Ray 场景,建议以 Ray Object Store 规模为起点,再结合实际对象大小与吞吐需求调整。

操作步骤

前置条件

  • 已开通 EMR Serverless,并能正常创建 RayJob / Ray 计算组 / CustomJob。

计算组维度设置共享内存:Ray Cluster / Ray Serve计算组

您可以在创建 Ray Cluster/Ray Serve 计算组,或修改已创建计算组时,在计算组的参数配置的 自定义参数配置 (key-value,多行分隔)处,增加共享内存参数即可。
Image
例如:

serverless.shm.size=4Gi

注意:

  • 对计算组设置共享内存参数时,不支持使用 serverless.shm.ratio 参数来设置共享内存占比,仅可使用 serverless.shm.size 指定共享内存大小。
  • 该配置会作用于 Head 与所有 Worker 节点;若计算组包含多个 Worker 规格/组,平台会按各角色容器的内存规格分别计算对应的共享内存上限。
  • 在计算组设置共享内存参数后,如果同时设置作业维度的共享内存参数,作业维度的设置结果不生效。

更多计算组的创建与配置操作细节可参见:创建与管理计算组。

作业设置共享内存:RayJob

在提交 RayJob 作业时,在作业的 高级配置 中找到 自定义参数,按行填写 共享内存参数的 key-value 即可完成配置。
Image
例如:

serverless.shm.size=2Gi
serverless.shm.ratio=0.3
serverless.shm.enabled=false

更多关于 RayJob 的配置参数说明请参见 RayJob 作业。

作业设置共享内存:CustomJob

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)作业

您在使用 AI 数据湖(LAS)的作业管理功能提交作业时,也可以设置当前作业的共享内存参数。在作业执行时弹出的作业运行参数中,打开“共享内存”开关后即可设置共享内存大小。
Image

最近更新时间:2026.09.16 19:29:51
这个页面对您有帮助吗?
有用
有用
无用
无用