
# 配置AM自动调整分配内存
本章节适用于MRS 3.x及后续版本集群。
#### 配置场景
启动该配置的过程中，ApplicationMaster在创建Container时，分配的内存会根据任务总数的浮动自动调整，资源利用更加灵活，提高了客户端应用运行的容错性。
#### 配置描述
**参数入口：**
参考[修改集群服务配置参数](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2125.html)进入Yarn服务参数"全部配置"界面，在搜索框中输入参数名称"mapreduce.job.am.memory.policy"。
**配置说明：**
配置项的默认值为空，此时不会启动自动调整的策略，ApplicationMaster的内存仍受"yarn.app.mapreduce.am.resource.mb"配置项的影响。
配置参数的值由5个数值组成，中间使用":"与","分隔，格式为：**baseTaskCount:taskStep:memoryStep,minMemory:maxMemory**，在键入时会严格校验格式。
表1配置数值说明 
| 数值名称          | 描述                                                               | 设定要求                                                           |
|:---|:---|:---|
| baseTaskCount | 任务总量基数，只有当应用的task总数（map端与reduce端之和）不小于该值时配置才会起作用。                | 不能为空且大于零。                                                      |
| taskStep      | 任务增量步进，与memoryStep共同决定内存调整量。                                     | 不能为空且大于零。                                                      |
| memoryStep    | 内存增量步进，在"yarn.app.mapreduce.am.resource.mb"配置的基础上对内存向上调整。        | 不能为空且大于零，单位：MB。                                                |
| minMemory     | 内存自动调整下限，若调整后的内存不大于该值，仍保持"yarn.app.mapreduce.am.resource.mb"的配置。 | 不能为空且大于零，且不大于maxMemory的设定值。 单位：MB  |
| maxMemory     | 内存自动调整上限，若调整后的内存超过该值，则使用该值作为最终调整值。                               | 不能为空且大于零，且不小于minMemory的设定值。 单位：MB |
   
#### 配置示例
配置情况：
- yarn.app.mapreduce.am.resource.mb=1536
- mapreduce.job.am.memory.policy=100:10:50,1200:2000
- 某应用task总数=120
计算过程：
调整后内存=1536+\[（120-100）/10\]\*50=1636，满足1200\<1636且2000\>1636，最终ApplicationMaster内存会设定为1636MB。
若memStep修改为250，调整后内存=1536+\[（120-100）/10\]\*250=2136，超过maxMemory=2000的限制，最终ApplicationMaster内存会设定为2000MB。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
对于计算后的调整值低于设定的"minMemory"值的情形，虽然此时配置不会生效但后台仍然会打印出这个调整值，用于为用户提供"minMemory"参数调整的依据，保证配置可以生效。
