장치 모니터링 (rbln-smi)¶
rbln-smi는 RBLN NPU를 모니터링하고 관리하기 위한 명령줄 인터페이스(CLI) 도구입니다. 다음 기능을 지원합니다:
- NPU 상태 모니터링 (온도, 전력, 활용도, 메모리)
- 컨텍스트/프로세스 검사
- 시스템 토폴로지 검사
- RSD 그룹 관리 및 그룹 레벨 설정
rbln-smi는 RBLN 드라이버 패키지에 포함되어 있습니다. 전체 버전별 옵션 참조는 rbln-smi --help를 실행하세요.
Note
rbln-stat은 더 이상 사용되지 않으며 rbln-smi로 대체되었습니다. rbln-stat을 사용하는 기존 스크립트는 계속 동작할 수 있으나, 신규 사용에는 rbln-smi 사용을 권장합니다.
빠른 시작¶
Expected output (example)
+-------------------------------------------------------------------------------------------------+
| Device Information KMD ver: N/A |
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
| NPU | Name | Device | PCI BUS ID | Temp | Power | Perf | Memory(used/total) | Util |
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
| 0 | RBLN-CA12 | rbln0 | 0000:51:00.0 | 38C | 43.9W | P2 | 2.4GB / 15.7GiB | 98.7 |
| 1 | RBLN-CA12 | rbln1 | 0000:d8:00.0 | 25C | 6.1W | P14 | 0.0B / 15.7GiB | 0.0 |
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
+-------------------------------------------------------------------------------------------------+
| Context Information |
+-----+---------------------+--------------+-----+----------+------+---------------------+--------+
| NPU | Process | PID | CTX | Priority | PTID | Memalloc | Status |
+-----+---------------------+--------------+-----+----------+------+---------------------+--------+
| 0 | python3 | 2928727 | 1 | min | 0 | 1.9GiB | run |
| 0 | python3 | 2930166 | 2 | min | 1 | 468.0MiB | idle |
| 0 | python3 | 2934705 | 3 | min | 2 | 88.0MiB | idle |
+-----+---------------------+--------------+-----+----------+------+---------------------+--------+
주요 개념 및 용어¶
디바이스 선택¶
- 특정 NPU를 대상으로 하려면
-d, --device <ids>를 사용하세요 (쉼표로 구분된 목록 또는 범위). - 출력은
rbln0,rbln1과 같은 디바이스 레이블(Device컬럼)을 참조합니다.
출력 형식¶
- Table (기본값): 디바이스 및 컨텍스트에 대한 사람이 읽을 수 있는 요약.
- JSON (
-j): 기계가 읽을 수 있는 출력. - Query (
-q): 공백으로 구분된(CSV 유사) 출력으로, 스크립트에 적합합니다.
공통 컬럼 및 성능 상태¶
기본 모니터 출력에는 일반적으로 다음이 포함됩니다:
| Column | Meaning |
|---|---|
Name |
NPU 제품 이름 (예: RBLN-CA25). |
Power |
전력 소비량. |
Perf |
성능 상태 (P-state). |
Temp |
온도. |
Util |
활용도. |
PID |
프로세스 ID. |
CTX |
컨텍스트 ID. |
Memalloc |
할당된 메모리. |
권위 있는 제품/패밀리 매핑 및 지원 카드 목록은 Support Matrix를 참조하세요.
Perf 컬럼은 P-state를 보고합니다. 일반적인 해석은 다음과 같습니다:
| P-state | Clock (Neural Engine) | PCIe | Note |
|---|---|---|---|
P2 |
Nominal | Gen5 | - |
P4 |
Nominal | Gen4 | - |
P6 |
Half | Gen4 | - |
P10 |
Half | (No update) | Thermal Throttling |
P12 |
Minimal | (No update) | System Abort (Hang) |
P14 |
Off | (No update) | Idle |
명령어 참조¶
Note
일부 작업에는 sudo가 필요합니다. 특히 group, tdr, timeout, sort, mknod와 같은 서브커맨드는 sudo가 필요합니다.
일반 사용법¶
기본 호출 패턴은 다음과 같습니다:
전역 옵션¶
다음 옵션은 모든 명령 모드에서 사용할 수 있습니다:
| Option | Description |
|---|---|
-h, --help |
도움말 정보를 표시합니다. 서브커맨드 도움말은 sudo가 필요합니다. |
-b, --byte-format |
사람이 읽을 수 있는 단위 대신 원시 단위로 값을 표시합니다. |
-j, --json |
결과를 JSON 형식으로 렌더링합니다. |
-q, --query |
공백으로 구분된(CSV와 유사한) 형식으로 데이터를 출력합니다. |
-qd, --query-device <columns> |
쿼리 모드 사용 시 특정 디바이스 컬럼을 선택합니다. |
-qc, --query-context <columns> |
쿼리 모드 사용 시 특정 컨텍스트 컬럼을 선택합니다. |
-t, --topo |
디바이스/시스템 토폴로지를 표시합니다(커널 6.2 이상 권장). |
-L, --list |
NPU와 해당 UUID를 나열합니다. |
-d, --device <ids> |
쉼표로 구분된 목록 또는 범위로 NPU를 선택합니다. |
-g, --group |
RSD 그룹별로 구성된 출력을 표시합니다. |
-v, --version |
버전 정보를 출력하고 종료합니다. |
CLI 예제¶
기본 명령어¶
Summary
기본 보기. 디바이스 및 컨텍스트 정보의 스냅샷을 표시합니다.
Command
Output (excerpt)
Mon Nov 17 14:15:26 2025
+-------------------------------------------------------------------------------------------------+
| Device Information KMD ver: 2.1.0~dev.107+gafec0b9 |
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
| NPU | Name | Device | PCI BUS ID | Temp | Power | Perf | Memory(used/total) | Util |
+=====+===========+=========+===============+======+=========+======+=====================+=======+
| 0 | RBLN-CA25 | rbln0 | 0000:47:00.0 | 37C | 75.9W | P2 | 90.0MiB / 15.7GiB | 50.0 |
| 1 | | rbln1 | 0000:48:00.0 | 26C | | P14 | 0.0B / 15.7GiB | 0.0 |
+-------------------------------------------------------------------------------------------------+
| Context Information |
+-----+---------------------+--------------+-----------+----------+------+---------------+--------+
| NPU | Process | PID | CTX | Priority | PTID | Memalloc | Status |
+=====+=====================+==============+===========+==========+======+===============+========+
| 0 | command_submission | 257082 | 10001 | min | 0 | 90.0MiB | run |
Summary
결과를 JSON 형식으로 출력합니다.
Command
Output (excerpt)
Summary
결과를 공백으로 구분된(CSV와 유사한) 형식으로 출력합니다.
Command
Output (excerpt)
Summary
지정된 NPU만 출력을 제한합니다.
Command
Output (excerpt)
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
| NPU | Name | Device | PCI BUS ID | Temp | Power | Perf | Memory(used/total) | Util |
+=====+===========+=========+===============+======+=========+======+=====================+=======+
| 0 | RBLN-CA25 | rbln0 | 0000:05:00.0 | 24C | 41.6W | P14 | 0.0B / 15.7GiB | 0.0 |
| 1 | | rbln1 | 0000:06:00.0 | 25C | | P14 | 0.0B / 15.7GiB | 0.0 |
+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
Summary
디바이스/시스템 토폴로지 정보를 출력합니다(거리 행렬 포함).
Command
Output (excerpt)
서브커맨드 (sudo 필요)¶
Summary
RSD 그룹을 생성하거나 삭제합니다.
Command
Options
| Argument | Description |
|---|---|
-c, --create <group_id> |
새로운 RSD 그룹을 생성합니다(-a와 함께 사용). all을 지정하면 각 디바이스마다 그룹 1개씩 할당됩니다. |
-a, --attach <npu_ids> |
NPU(쉼표로 구분)를 새 그룹에 연결합니다. |
-d, --destroy <group_ids> |
하나 이상의 RSD 그룹을 제거합니다. 제거된 그룹의 NPU는 그룹 0에 합쳐집니다. 단일 ID 또는 ,/:로 구분한 다중 ID를 받으며, 두 구분자는 혼용할 수 있습니다(예: 1,2:3). all을 지정하면 모든 그룹을 제거합니다. |
Note
--destroy에 다중 ID를 전달하면 각 그룹은 독립적으로 처리됩니다. 한 ID의 실패가 나머지 처리를 막지 않으며, 실패한 ID는 stderr에 skip destroying group <id>: <reason> 형태로 출력되고, 처리 종료 시 failed to destroy group(s): <ids> 메시지와 함께 실패한 모든 ID가 나열되며 명령은 0이 아닌 종료 코드로 종료됩니다.
Example session
$ sudo rbln-smi group -c 1 -a 0,1
RSD group 1 created with devices [0,1].
$ rbln-smi --group
+-----+-----+-----------+---------+---------------+------+---------+------+---------------------+-------+
| Grp | NPU | Name | Device | PCI BUS ID | Temp | Power | Perf | Memory(used/total) | Util |
+=====+=====+===========+=========+===============+======+=========+======+=====================+=======+
| 1 | 0 | RBLN-CA25 | rbln0 | 0000:05:00.0 | 23C | 41.0W | P14 | 0.0B / 15.7GiB | 0.0 |
| 1 | 1 | | rbln1 | 0000:06:00.0 | 25C | | P14 | 0.0B / 15.7GiB | 0.0 |
+=====+=====+===========+=========+===============+======+=========+======+=====================+=======+
$ sudo rbln-smi group -d 1
RSD group 1 destroyed.
# 한 번의 호출로 다중 그룹 제거 (쉼표 또는 콜론 구분).
$ sudo rbln-smi group -d 1,2,3
RSD group 1 destroyed.
RSD group 2 destroyed.
RSD group 3 destroyed.
$ sudo rbln-smi group -d 1:2:3
RSD group 1 destroyed.
RSD group 2 destroyed.
RSD group 3 destroyed.
# per-ID 집계: 한 ID의 실패가 나머지 처리를 막지 않습니다.
$ sudo rbln-smi group -d 1,99,3
RSD group 1 destroyed.
skip destroying group 99: <reason>
RSD group 3 destroyed.
failed to destroy group(s): 99
$ sudo rbln-smi group -c all
All RSD groups created.
$ sudo rbln-smi group -d all
All RSD groups destroyed.
Summary
RSD 그룹에 대해 TDR(Timeout Detection and Recovery) 동작을 활성화하거나 비활성화합니다. TDR이 활성화되어 있으면 그룹별 timeout(timeout 서브커맨드 참고)이 만료될 때 드라이버가 hang된 job을 감지하고 NPU reset 사이클을 실행하여 디바이스를 복구합니다. 비활성화되어 있으면 만료된 job은 timeout 처리되지만 NPU는 자동 reset되지 않습니다.
Command
Notes
<value>는 0(비활성) 또는 1(활성)이며, 0이 아닌 값은 모두 활성으로 처리됩니다. reset 발동 임계값 자체는 timeout 서브커맨드로 별도 설정합니다. 성공 시 명령은 출력을 표시하지 않습니다.
Output (example)
Summary
TDR timeout을 설정합니다 — 드라이버가 job을 hang으로 간주하기까지 기다리는 시간(초)입니다. 임계값은 RSD 그룹 단위로 적용되며, tdr 서브커맨드에서 설명한 TDR 메커니즘이 이 값을 사용합니다.
Command
Notes
<value>는 초 단위 음이 아닌 정수입니다. 0은 특수값으로, 드라이버가 timeout 없음으로 처리하여 job이 무한 대기합니다. reset 사이클은 TDR이 활성화되어 있을 때만 실행되며, tdr이 0이면 timeout은 만료되더라도 NPU는 자동 reset되지 않습니다. 성공 시 명령은 출력을 표시하지 않습니다.
Output (example)
Summary
PCI BDF로 NPU 디바이스를 정렬하고 다시 바인딩합니다.
Command
Notes
성공 시 이 명령은 일반적으로 출력을 표시하지 않습니다.
Output (example)
Summary
--rsd로 지정한 RSD 제어 디바이스가 인식하는 NPU들에 대해 /dev/rbln* 캐릭터 디바이스 노드를 생성합니다. udev가 디바이스 노드를 만들지 않는 컨테이너/initramfs 환경에서 사용합니다. 이미 존재하는 노드는 별도 오류 없이 건너뛰므로 명령을 반복 실행해도 안전합니다(idempotent).
Command
Options
| Argument | Description |
|---|---|
--rsd <path> |
NPU 목록 조회에 사용할 RSD 제어 디바이스. 기본값 /dev/rsd0. |
--dev-dir <path> |
노드를 생성할 디렉터리. 기본값 /dev. |
Notes
노드는 mode 0666으로 생성되며, 이는 호스트 udev 기본값과 동일합니다. 노드 생성 동안 프로세스 umask를 0으로 비웠다가 종료 시 복원하므로 --dev-dir 내 다른 파일의 권한에는 영향이 없습니다.
컨테이너에서 실행하려면 호출자가 디바이스 노드 생성 권한(CAP_MKNOD)을 가져야 합니다 — CAP_MKNOD는 mknod(2)로 캐릭터/블록 특수 파일을 만들 수 있도록 허용하는 Linux capability입니다(capabilities(7) 참고). 예: --cap-add=MKNOD로 컨테이너 실행. 그 외 mknod(2) 에러(예: CAP_MKNOD 없이 실행 시 EPERM)는 stderr로 출력되고 명령은 non-zero로 종료됩니다.
Output (example)
문제 해결¶
권한 오류 / sudo 필요¶
명령을 sudo로 실행하세요 (예: sudo rbln-smi group -h).
디바이스가 표시되지 않는 경우¶
- 드라이버가 설치되어 있고 NPU가 감지되었는지 확인하세요.
rbln-smi -L을 시도하여 디바이스를 나열하세요.
토폴로지 출력 누락¶
--topo를 사용할 수 없거나 불완전한 경우, 커널/버전 요구 사항을 확인하고 --device <ids>를 통해 특정 디바이스로 다시 시도하세요.
관련 문서¶
rblnBandwidthLatencyTest: 호스트-NPU 및 NPU-NPU 성능 벤치마크rbln-bios: 시스템 검증rbln-flash: 펌웨어 업데이트 도구