已合并
【FEAT】预检工具新增 HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT 校验提示 #4988
刘家旺创建于 3月10日
【FEAT】预检工具新增 HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT 校验提示 #4988
已合并
刘家旺创建于 3月10日
共 3 个文件变更+25-13
@@ -52,3 +52,6 @@ def is_port_in_use(port: int, host: str = 'localhost', protocol: str = 'tcp'):
52 return False52 return False
53 except Exception:53 except Exception:
54 return True54 return True
55+ 
56+def get_conf_pagesize():
ascend-robot
ascend-robotascend-robot3月10日
注释与文档: 新增的 `get_conf_pagesize` 函数缺少文档字符串(docstring)。同一文件中的其他函数(如 `path_exists`, `is_port_in_use`)虽然也没有文档字符串,但这是一个改进代码可维护性和可读性的机会。缺少文档字符串使得其他开发者难以理解该函数的目的、返回值含义以及可能抛出的异常。
问题类型: 注释与文档
文件路径: msprechecker/msprechecker/cmate/custom_fn.py
行号: 56
问题代码:
def get_conf_pagesize():
    return os.sysconf('SC_PAGESIZE')
修改建议:
为 `get_conf_pagesize` 函数添加文档字符串,说明其功能、返回值和可能的异常。例如:

def get_conf_pagesize(): """ 获取系统内存页面大小(以字节为单位)。

Returns:
    int: 系统配置的页面大小。如果获取失败,返回一个默认值(如4096)。
"""
try:
    return os.sysconf('SC_PAGESIZE')
except (OSError, ValueError):
    return 4096</pre><div style='margin-top: 4px; font-size: 9px; color: #999;'>---<br>此评论由代码审查工具自动生成</div></div>
likedislike
57+ return os.sysconf('SC_PAGESIZE')
@@ -72,6 +72,7 @@ class _ExpressionEvaluator(NodeVisitor):
72 'in': lambda a, b: a in b,72 'in': lambda a, b: a in b,
73 'and': lambda a, b: a and b,73 'and': lambda a, b: a and b,
74 'not in': lambda a, b: a not in b,74 'not in': lambda a, b: a not in b,
75+ 'not': lambda a: not a,
75 '*': operator.mul,76 '*': operator.mul,
76 '+': operator.add,77 '+': operator.add,
77 '-': operator.sub,78 '-': operator.sub,
@@ -26,6 +26,9 @@ arch: '框架架构类型,可选值: mindie/vllm,决定解析 rank table 的
26---26---
27 27 
28[global]28[global]
29+# System
30+page_size = get_conf_pagesize()
31+ 
29# PD Mix 场景变量32# PD Mix 场景变量
30if ${context::deploy_mode} == 'pd_mix':33if ${context::deploy_mode} == 'pd_mix':
31 dp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].dp} or 134 dp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].dp} or 1
@@ -34,7 +37,7 @@ if ${context::deploy_mode} == 'pd_mix':
34 sp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 137 sp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1
35 pp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 138 pp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1
36 world_size = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}39 world_size = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}
37- 40+ 
38 if ${context::model_type} == 'deepseek':41 if ${context::model_type} == 'deepseek':
39 moe_ep = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].moe_ep} or 142 moe_ep = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].moe_ep} or 1
40 moe_tp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].moe_tp} or 143 moe_tp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].moe_tp} or 1
@@ -50,7 +53,7 @@ elif ${context::deploy_mode} == 'pd_disaggregation_single_container':
50 sp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 153 sp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1
51 pp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 154 pp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1
52 world_size = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}55 world_size = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}
53- 56+ 
54 if ${context::npu_type} == 'A2':57 if ${context::npu_type} == 'A2':
55 # 使用 for 循环处理环境变量58 # 使用 for 循环处理环境变量
56 for item in ${mindie_service_single_container::[1].spec.template.spec.containers[0].env}:59 for item in ${mindie_service_single_container::[1].spec.template.spec.containers[0].env}:
@@ -68,14 +71,14 @@ elif ${context::deploy_mode} == 'pd_disaggregation_single_container':
68 MINDIE_MS_GEN_SERVER_PORT = ${item.value}71 MINDIE_MS_GEN_SERVER_PORT = ${item.value}
69 fi72 fi
70 done73 done
71- 74+ 
72 # 处理 volumes75 # 处理 volumes
73 for volume in ${mindie_service_single_container::[1].spec.template.spec.volumes}:76 for volume in ${mindie_service_single_container::[1].spec.template.spec.volumes}:
74 if "${volume.name} == 'model-path'":77 if "${volume.name} == 'model-path'":
75 host_model_path = ${volume.hostPath.path}78 host_model_path = ${volume.hostPath.path}
76 fi79 fi
77 done80 done
78- 81+ 
79 # 处理 volumeMounts82 # 处理 volumeMounts
80 for mount in ${mindie_service_single_container::[1].spec.template.spec.containers[0].volumeMounts}:83 for mount in ${mindie_service_single_container::[1].spec.template.spec.containers[0].volumeMounts}:
81 if "${mount.name} == 'model-path'":84 if "${mount.name} == 'model-path'":
@@ -100,13 +103,13 @@ elif ${context::deploy_mode} == 'pd_disaggregation_single_container':
100 MINDIE_MS_GEN_SERVER_PORT = ${item.value}103 MINDIE_MS_GEN_SERVER_PORT = ${item.value}
101 fi104 fi
102 done105 done
103- 106+ 
104 for volume in ${mindie_service_single_container_base_A3::[1].spec.template.spec.volumes}:107 for volume in ${mindie_service_single_container_base_A3::[1].spec.template.spec.volumes}:
105 if "${volume.name} == 'model-path'":108 if "${volume.name} == 'model-path'":
106 host_model_path = ${volume.hostPath.path}109 host_model_path = ${volume.hostPath.path}
107 fi110 fi
108 done111 done
109- 112+ 
110 for mount in ${mindie_service_single_container_base_A3::[1].spec.template.spec.containers[0].volumeMounts}:113 for mount in ${mindie_service_single_container_base_A3::[1].spec.template.spec.containers[0].volumeMounts}:
111 if "${mount.name} == 'model-path'":114 if "${mount.name} == 'model-path'":
112 container_model_path = ${mount.mountPath}115 container_model_path = ${mount.mountPath}
@@ -122,7 +125,7 @@ elif ${context::deploy_mode} == 'pd_disaggregation' and ${context::npu_type} ==
122 sp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1125 sp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1
123 pp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1126 pp = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1
124 world_size = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}127 world_size = ${ms_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}
125- 128+ 
126 # 处理 mindie_server 环境变量129 # 处理 mindie_server 环境变量
127 for item in ${mindie_server::[1].spec.template.spec.containers[0].env}:130 for item in ${mindie_server::[1].spec.template.spec.containers[0].env}:
128 if ${item.name} == 'MINDIE_LOG_LEVEL':131 if ${item.name} == 'MINDIE_LOG_LEVEL':
@@ -133,7 +136,7 @@ elif ${context::deploy_mode} == 'pd_disaggregation' and ${context::npu_type} ==
133 MINDIE_LOG_TO_STDOUT_server = ${item.value}136 MINDIE_LOG_TO_STDOUT_server = ${item.value}
134 fi137 fi
135 done138 done
136- 139+ 
137 # 处理 mindie_ms_coordinator 环境变量140 # 处理 mindie_ms_coordinator 环境变量
138 for item in ${mindie_ms_coordinator::[0].spec.template.spec.containers[0].env}:141 for item in ${mindie_ms_coordinator::[0].spec.template.spec.containers[0].env}:
139 if ${item.name} == 'MINDIE_LOG_LEVEL':142 if ${item.name} == 'MINDIE_LOG_LEVEL':
@@ -144,7 +147,7 @@ elif ${context::deploy_mode} == 'pd_disaggregation' and ${context::npu_type} ==
144 MINDIE_LOG_TO_STDOUT_coordinator = ${item.value}147 MINDIE_LOG_TO_STDOUT_coordinator = ${item.value}
145 fi148 fi
146 done149 done
147- 150+ 
148 # 处理 mindie_ms_controller 环境变量151 # 处理 mindie_ms_controller 环境变量
149 for item in ${mindie_ms_controller::spec.template.spec.containers[0].env}:152 for item in ${mindie_ms_controller::spec.template.spec.containers[0].env}:
150 if ${item.name} == 'MINDIE_LOG_LEVEL':153 if ${item.name} == 'MINDIE_LOG_LEVEL':
@@ -186,14 +189,14 @@ elif ${context::deploy_mode} == 'lwd':
186 sp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1189 sp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].sp} or 1
187 pp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1190 pp = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].pp} or 1
188 world_size = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}191 world_size = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].worldSize}
189- 192+ 
190 lwd = ${mies_config::ServerConfig.layerwiseDisaggregated}193 lwd = ${mies_config::ServerConfig.layerwiseDisaggregated}
191 lwd_role_type = ${mies_config::ServerConfig.layerwiseDisaggregatedRoleType}194 lwd_role_type = ${mies_config::ServerConfig.layerwiseDisaggregatedRoleType}
192 lwd_master_ip = ${mies_config::ServerConfig.layerwiseDisaggregatedMasterIpAddress}195 lwd_master_ip = ${mies_config::ServerConfig.layerwiseDisaggregatedMasterIpAddress}
193 lwd_slave_ip = ${mies_config::ServerConfig.layerwiseDisaggregatedSlaveIpAddress}196 lwd_slave_ip = ${mies_config::ServerConfig.layerwiseDisaggregatedSlaveIpAddress}
194 lwd_master_data_port = ${mies_config::ServerConfig.layerwiseDisaggregatedDataPort}197 lwd_master_data_port = ${mies_config::ServerConfig.layerwiseDisaggregatedDataPort}
195 lwd_master_crtl_port = ${mies_config::ServerConfig.layerwiseDisaggregatedCrtlPort}198 lwd_master_crtl_port = ${mies_config::ServerConfig.layerwiseDisaggregatedCrtlPort}
196- 199+ 
197 lwd_master_npu_num = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].models.layerwiseDisaggregatedMasterDeviceNum}200 lwd_master_npu_num = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].models.layerwiseDisaggregatedMasterDeviceNum}
198 lwd_slave_npu_num = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].models.layerwiseDisaggregatedSlaveDeviceNum}201 lwd_slave_npu_num = ${mies_config::BackendConfig.ModelDeployConfig.ModelConfig[0].models.layerwiseDisaggregatedSlaveDeviceNum}
199 202 
@@ -204,7 +207,7 @@ elif ${context::deploy_mode} == 'lwd':
204 fi207 fi
205fi208fi
206 209 
207---- 210+---
208 211 
209[par env]212[par env]
210if ${context::deploy_mode} == 'pd_mix':213if ${context::deploy_mode} == 'pd_mix':
@@ -212,6 +215,11 @@ if ${context::deploy_mode} == 'pd_mix':
212 assert ${MINDIE_LOG_TO_STDOUT} in ['1', 'true'], '建议开启 MindIE 日志打屏,便于查看程序运行状态', info215 assert ${MINDIE_LOG_TO_STDOUT} in ['1', 'true'], '建议开启 MindIE 日志打屏,便于查看程序运行状态', info
213 assert ${MINDIE_LOG_LEVEL} in [NA, 'info', 'INFO'], '如果配置了 MINDIE_LOG_LEVEL,建议设置为 info 或 INFO,表示日志级别为 info', info216 assert ${MINDIE_LOG_LEVEL} in [NA, 'info', 'INFO'], '如果配置了 MINDIE_LOG_LEVEL,建议设置为 info 或 INFO,表示日志级别为 info', info
214 217 
218+ # ISSUE: https://gitcode.com/Ascend/msit/issues/394
219+ assert not (${HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT} == 'TRUE' and ${page_size} == 4096), "此环境变量仅对Host侧小页内存页表大小非4KB的场景生效,若Host侧小页内存页表大小是4KB,无论此环境变量取值如何,都采用PCIe Direct的方式提交RDMA任务", info
220+ assert not (${HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT} == 'TRUE' and ${page_size} == 65536), "该变量会导致内存逐渐碎片化,申请不到整块内存,服务拉起过程中很大概率会发生OOM", warning
221+ assert not (${HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT} != 'TRUE' and ${page_size} == 65536), "不配置HCCL_RDMA_PCIE_DIRECT_POST_NOSTRICT变量会导致通过HDC的方式提交RDMA任务,存在大幅度的性能劣化。建议更换分页大小为4096的系统内核", info
222+ 
215 if ${context::model_type} == 'deepseek':223 if ${context::model_type} == 'deepseek':
216 assert ${PYTORCH_NPU_ALLOC_CONF} == 'expandable_segments:True', '需要开启 torch_npu 虚拟内存机制', warning224 assert ${PYTORCH_NPU_ALLOC_CONF} == 'expandable_segments:True', '需要开启 torch_npu 虚拟内存机制', warning
217 assert ${ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE} == '3', 'workspace 内存分配算法选择,建议设置为 3,最大优化显存碎片与 workspace 空间', warning225 assert ${ATB_WORKSPACE_MEM_ALLOC_ALG_TYPE} == '3', 'workspace 内存分配算法选择,建议设置为 3,最大优化显存碎片与 workspace 空间', warning
@@ -728,4 +736,4 @@ if ${context::deploy_mode} == 'ep':
728 assert ${mindie_server_decode_env.HCCL_INTRA_PCIE_ENABLE} == 1, '建议设置为 1,开启 HCCL 的 PCIe 通信,需要配合 HCCL_INTRA_ROCE_ENABLE 一同设置', info736 assert ${mindie_server_decode_env.HCCL_INTRA_PCIE_ENABLE} == 1, '建议设置为 1,开启 HCCL 的 PCIe 通信,需要配合 HCCL_INTRA_ROCE_ENABLE 一同设置', info
729 assert ${mindie_server_decode_env.HCCL_INTRA_ROCE_ENABLE} == 0, '建议设置为 0,关闭 HCCL 的 RoCE 通信,需要配合 HCCL_INTRA_PCIE_ENABLE 一同设置', info737 assert ${mindie_server_decode_env.HCCL_INTRA_ROCE_ENABLE} == 0, '建议设置为 0,关闭 HCCL 的 RoCE 通信,需要配合 HCCL_INTRA_PCIE_ENABLE 一同设置', info
730 fi738 fi
731-fi739+fi