OpenShift 커널 파라미터 설정¶
NPU 노드의 커널 부트 파라미터를 MachineConfig로 관리합니다. 아래 목록은 명시된 하드웨어에서 검증한 설정입니다.
대상 하드웨어¶
| 프로파일 | 서버 | CPU | NPU | 검증 드라이버 |
|---|---|---|---|---|
amd-smci-cr13 | Supermicro AS-5126GS-TNRT2 | AMD | RBLN-CR13 | 3.5.1 |
| 프로파일 | 서버 | CPU | NPU | 검증 드라이버 |
|---|---|---|---|---|
amd-smci-ca25 | Supermicro | AMD | RBLN-CA22, RBLN-CA25 | 3.4.1 |
amd-gigabyte-ca25 | Gigabyte G494-ZB4-AAP2, G294-Z21-AAP2 | AMD | RBLN-CA22, RBLN-CA25 | 3.4.1 |
커널 파라미터¶
| 파라미터 | 의미 | 적용 대상 |
|---|---|---|
transparent_hugepage=madvise | 애플리케이션이 요청한 메모리 영역에 THP 적용 | 전체 |
pcie_aspm=force | PCIe Active State Power Management 강제 활성화 | 전체 |
pci=pcie_bus_perf | PCIe 버스 성능 설정 | 전체 |
pci=bfsort | PCI 장치를 너비 우선 순서로 정렬 | 전체 |
| 파라미터 | 의미 | 적용 대상 |
|---|---|---|
transparent_hugepage=madvise | 애플리케이션이 요청한 메모리 영역에 THP 적용 | 전체 |
pcie_aspm=force | PCIe Active State Power Management 강제 활성화 | 전체 |
pci=pcie_bus_perf | PCIe 버스 성능 설정 | 전체 |
pci=bfsort | PCI 장치를 너비 우선 순서로 정렬 | 전체 |
iommu.strict=1 | DMA 매핑 해제 시 IOMMU 변환 캐시를 즉시 갱신 | 전체 |
적용 전 확인¶
cluster-admin 권한과 oc가 필요합니다. 하드웨어와 현재 설정을 확인하고 대상 노드의 /proc/cmdline을 보관합니다.
PCI 장치 ID로 카드를 구분합니다. 같은 서버라도 NPU 모델에 따라 프로파일을 선택해야 합니다.
RBLN-CR13의 PCI 장치 ID는 2130입니다.
RBLN-CA22의 PCI 장치 ID는 1220이고, RBLN-CA25는 1250입니다. 두 카드는 같은 ATOM™ 프로파일을 사용합니다.
적용 범위 설정¶
flowchart LR
MC["MachineConfig"] -->|"machineConfigSelector"| MCP["MachineConfigPool"]
MCP -->|"nodeSelector"| N["대상 노드"] 일부 워커에만 적용하려면 전용 MCP를 사용합니다. 클러스터에 두 제품군 노드가 함께 있다면 파라미터가 다르므로 풀을 분리합니다.
대상 노드 재부팅
커널 파라미터를 적용하거나 제거하면 MCO가 대상 노드를 drain하고 재부팅합니다. MachineConfig의 role을 worker로 설정하면 기본 worker 설정을 상속하는 풀까지 영향을 받을 수 있습니다. 작업 전에 대상 MCP와 노드 수를 확인해야 합니다.
커스텀 MachineConfigPool 생성¶
아래 파일을 npu-mcp.yaml로 저장합니다. __MCP_NAME__은 선택한 프로파일 이름으로 모두 바꿉니다. worker 설정을 상속하도록 유지하고, 대상 노드가 다른 커스텀 MCP에도 선택되지 않는지 확인합니다.
MACHINECOUNT가 대상 노드 수와 같고 풀이 정상인지 확인합니다. NFD 자동 식별을 사용하면 위 role 라벨 대신 다음 절의 프로파일 선택자를 사용합니다.
(선택) NFD NodeFeatureRule을 활용한 자동 식별¶
NFD v0.16+에서는 system.dmiid.sys_vendor, cpu.model.vendor_id, pci.device feature를 NodeFeatureRule 하나에 묶어 프로파일 라벨을 자동으로 부여할 수 있습니다. 이 규칙을 적용하면 새로 추가된 노드에도 프로파일 라벨이 부여되어 해당 MCP에 포함됩니다.
Note
system.dmiid는 NFD 내장 feature이지만, 자동으로 라벨이 생성되지는 않습니다. 반드시 NodeFeatureRule을 작성해야 합니다.
NFD 기본 라벨 네임스페이스 밖의 라벨은 nfd-master에서 --extra-label-ns=rebellions.io로 허용하지 않으면 무시됩니다.
NodeFeatureRule 생성¶
각 규칙은 matchFeatures에 나열한 조건을 모두 만족하는 노드에만 라벨을 붙입니다. 서버 벤더와 CPU 벤더만으로는 같은 서버에서 두 제품군을 구분할 수 없으므로, pci.device의 장치 ID로 카드까지 구분합니다. 클러스터에 두 제품군 노드가 함께 있다면 두 탭의 규칙을 NodeFeatureRule 하나에 함께 넣습니다.
라벨 확인¶
적용 후 대상 노드에 프로파일 라벨이 부여되었는지 확인합니다:
CPU 벤더는 NFD가 NodeFeatureRule 없이도 부여하는 내장 라벨 feature.node.kubernetes.io/cpu-model.vendor_id=AMD로 미리 확인할 수 있습니다.
NFD 라벨을 MCP nodeSelector에 활용¶
NFD가 프로파일 라벨을 붙이고 나면 수동 라벨링 없이 MCP의 nodeSelector에서 직접 활용할 수 있습니다. 커스텀 MachineConfigPool 생성의 MCP YAML에서 nodeSelector를 아래와 같이 변경합니다.
MachineConfig 선택¶
해당 프로파일의 매니페스트 하나만 npu-kargs.yaml로 저장합니다. __MCP_NAME__을 대상 MCP 이름으로 바꿉니다. 같은 풀에 중복 파라미터를 정의하면 커널 명령줄에도 중복해서 추가됩니다.
Supermicro AMD + RBLN-CR13¶
Supermicro AMD + RBLN-CA22, RBLN-CA25¶
Gigabyte AMD + RBLN-CA22, RBLN-CA25¶
적용과 확인¶
$ oc get mcp __MCP_NAME__ \
> -o 'custom-columns=NAME:.metadata.name,UPDATED:.status.conditions[?(@.type=="Updated")].status,UPDATING:.status.conditions[?(@.type=="Updating")].status,DEGRADED:.status.conditions[?(@.type=="Degraded")].status'
NAME UPDATED UPDATING DEGRADED
amd-smci-ca25 True False False
UPDATED=True, UPDATING=False, DEGRADED=False가 되면 대상 노드에서 확인합니다.
$ oc debug node/<NODE_NAME> -- chroot /host cat /sys/kernel/mm/transparent_hugepage/enabled
...
always [madvise] never
선택한 프로파일의 파라미터가 모두 있고 THP 출력에서 [madvise]가 선택되어야 합니다.
롤백¶
이 페이지에서 추가한 MachineConfig를 삭제하고 MCP 롤아웃이 끝날 때까지 기다립니다.
풀이 정상으로 돌아오면 /proc/cmdline을 적용 전 값과 비교합니다. 다른 MachineConfig에서 같은 파라미터를 지정했다면 해당 값은 유지됩니다.
다른 MachineConfig가 해당 풀을 사용하지 않을 때만 MCP를 제거해야 합니다. 순서는 노드 라벨 해제 → worker 풀로 복귀하고 적용 완료 → MCP 삭제입니다. NFD로 선택한 노드는 프로파일 라벨 생성 규칙도 확인해야 합니다.
노드 이동과 설정 적용이 완료된 뒤 실행합니다.
적용이 완료되지 않는 경우¶
MCP의 상태 메시지와 해당 노드의 Machine Config Daemon 로그를 확인합니다. 노드 선택자, 중복된 커스텀 MCP, drain을 막는 워크로드, 누락된 MachineConfig를 우선 확인합니다. 노드의 currentConfig나 desiredConfig 어노테이션을 수동으로 바꾸면 실제 적용 상태와 달라질 수 있습니다.
MCO 설정과 복구는 Red Hat MachineConfig 문서에서 확인할 수 있습니다.