RBLN System Management Daemon¶
개요¶
RSMD (Rebellions System Management Daemon)는 RBLN NPU 장치를 모니터링하고 제어하기 위한 시스템 관리 데몬입니다. RSMD는 커널 드라이버 인터페이스와 고수준 관리 도구를 연결하여 장치 관리 작업을 위한 통합 gRPC 기반 API를 제공합니다.
RSMD는 온도, 전력 소비, 메모리 사용량, 클럭 주파수, 사용률을 포함한 장치 상태 메트릭의 실시간 모니터링을 지원합니다. 데몬은 netlink 소켓을 통해 커널 이벤트를 수집하고 진단 목적으로 이벤트 이력을 유지합니다. 리셋과 같은 장치 제어 작업은 gRPC 인터페이스를 통해 제공됩니다.
시스템은 대화형 장치 관리를 위한 명령줄 인터페이스(rbln-smdi)를 제공합니다. RSMD는 systemd 서비스로 동작하여 프로덕션 환경에서 여러 NPU 장치에 대한 중앙화된 관리 기능을 제공합니다.
핵심 구성 요소¶
rbln_daemon¶
rbln_daemon은 백그라운드에서 지속적으로 실행되는 핵심 서비스로, gRPC 인터페이스를 통해 장치 관리 기능을 제공합니다.
기능¶
데몬은 netlink 소켓을 통해 커널 이벤트를 모니터링하고 로그를 저장합니다. 온도, 전력 소비, 메모리 사용량, 클럭 주파수, 사용률을 포함한 장치 텔레메트리는 gRPC 인터페이스를 통해 제공됩니다. 리셋과 같은 장치 제어 작업은 동일한 인터페이스를 통해 처리됩니다.
특징¶
- 자동 시작 및 생명주기 관리를 위한 systemd 서비스(
rbln_daemon.service)로 동작 - 클라이언트 연결을 위한 TCP(기본 포트 50051) 및 Unix 도메인 소켓 지원
- 구성 가능한 이벤트 보존 및 자동 로테이션
설정¶
환경 변수로 데몬 동작을 제어합니다:
RBLN_SMD_PORT(기본값:50051): gRPC 서버 TCP 포트MAX_RBLN_EVENT(기본값:1000): 장치당 저장되는 최대 이벤트 수REMOVE_EVENT_NUM_AFTER_EXCEED(기본값:500): 제한 초과 시 삭제할 이벤트 수
서비스 관리¶
데몬은 systemd 서비스로 실행됩니다. 서비스 상태는 다음 명령으로 확인할 수 있습니다:
로그는 systemd 저널을 통해 확인할 수 있습니다:
데몬은 systemd 서비스 설정에서 --uri 옵션을 지정하여 TCP 포트 외에 Unix 도메인 소켓을 사용하도록 구성할 수 있습니다:
이벤트 로그:¶
장치 이벤트는 CSV 파일 형식으로 /var/log/rebellions/rsmd_<device>.event에 저장됩니다. 이 로그에는 다음이 포함됩니다:
- 이벤트 유형 및 소스
- 타임스탬프 (UTC 및 커널 시간)
- 이벤트 데이터 및 하위 값
Protobuf API¶
Protobuf API는 모든 RSMD 클라이언트가 사용하는 gRPC 서비스 인터페이스를 정의합니다. Protobuf 스키마(rbln_services.proto)는 언어 중립적인 인터페이스를 제공하여 Python, C++, Go, Java 등 다양한 언어의 클라이언트를 생성할 수 있게 지원합니다. 또한 엄격한 데이터 타입 정의를 통해 데이터 무결성을 보장하며, 효율적인 바이너리 압축으로 성능을 최적화합니다.
사용 가능한 서비스:¶
RBLNServices gRPC 서비스는 다음 RPC 메서드를 제공합니다:
| 메서드 | 설명 | 반환값 |
|---|---|---|
getDeviceList |
감지된 모든 장치 목록 조회 | Device 스트림 |
getServiceableDeviceList |
작업 준비가 된 장치 목록 조회 | Device 스트림 |
resetDevice |
특정 장치 리셋 | StatusMsg |
resetAllDevice |
시스템의 모든 장치 리셋 | StatusMsg |
getVersion |
펌웨어, 드라이버, SMC 버전 조회 | VersionInfo |
getHWInfo |
온도 및 전력 소비 조회 | HWInfo |
getMemoryInfo |
전체 및 사용 중인 메모리 조회 | MemoryInfo |
getClockInfo |
장치 클럭 주파수 조회 | ClockInfo |
getEventInfo |
커널에서 하드웨어 이벤트 조회 | EventInfo 스트림 |
getTotalInfo |
종합 장치 정보 조회 | DeviceInfo 스트림 |
getUtilization |
NPU 사용률 백분율 조회 | UtilInfo |
메시지 타입:¶
주요 메시지 타입:
Device: 장치 식별자 (이름, UUID, PCI 버스 ID, 장치 ID)DeviceInfo: 완전한 장치 상태 (메모리, 온도, 전력, 버전, 사용률, 상태)HWInfo: 하드웨어 텔레메트리 (온도: 밀리-섭씨, 전력: 마이크로-와트)MemoryInfo: 메모리 사용량 (GB 단위의 전체 및 사용량)ClockInfo: CP, DNC, Bus, SHM, DRAM 클럭 주파수 (MHz)EventInfo: 타임스탬프가 포함된 커널 보고 이벤트VersionInfo: 펌웨어, 드라이버, SMC 버전UtilInfo: 장치 사용률 백분율
프로토콜 정의¶
프로토콜 버퍼 정의 파일(rbln_services.proto)은 일반적으로 /opt/rebellions/etc/ 또는 유사한 시스템 위치에 설치됩니다. 클라이언트 애플리케이션은 이 파일을 사용하여 데몬과의 gRPC 통신을 위한 언어별 바인딩을 생성합니다.
rbln-smdi¶
rbln-smdi 명령줄 인터페이스는 RSMD 기능에 대한 대화형 접근을 제공합니다. 이 도구는 사람이 읽기 쉬운 결과를 위한 포맷된 테이블 출력과 자동화 및 스크립팅을 위한 선택적 JSON 출력을 제공합니다. CLI는 다른 호스트에서 실행 중인 데몬 인스턴스에 대한 원격 연결을 지원합니다.
공통 옵션¶
모든 명령은 다음 전역 옵션을 지원합니다:
--ip <주소>: gRPC 서버 IP (기본값:localhost)--port <번호>: gRPC 서버 포트 (기본값:50051)--jsons: 테이블 대신 JSON 형식으로 출력
CLI 예제¶
요약
감지된 모든 장치(로컬/원격)를 나열하며 자동화를 위한 JSON 출력을 지원합니다.
명령어
출력 (예시)
요약
장치 정보를 조회합니다 (모든 장치에 대한 요약 또는 특정 장치에 대한 상세 정보). 자동화를 위한 JSON 출력을 지원합니다.
명령어
출력 (예시)
Device Information
+----------+--------------------------------------+--------------+-------------+----------+------------+---------+---------+---------+----------+
| DEV NAME | UUID | TOTAL MEM(GB)| USED MEM(GB)| TEMP.(c) | Power (mW) | P-state | FW VER | DRV VER | UTIL(%) |
+----------+--------------------------------------+--------------+-------------+----------+------------+---------+---------+---------+----------+
| rbln0 | 00000000-0000-0000-0000-000000000001 | 16.0 | 2.5 | 45.23 | 100.5 | 0 | 1.2.3 | 2.1.0 | 15.5 |
+----------+--------------------------------------+--------------+-------------+----------+------------+---------+---------+---------+----------+
출력 필드
출력에는 다음이 포함됩니다:
- 장치 이름 및 UUID
- 메모리 사용량 (GB 단위의 전체/사용량)
- 온도 (°C)
- 전력 소비 (mW)
- P-state
- 펌웨어 및 드라이버 버전
- 사용률 (%)
요약
장치의 이벤트 이력을 출력합니다.
명령어
출력 (예시)
Device rbln0 Event Information
+-----+----------+------------------+---------------------+--------------+-------------------+-------+
| IDX | DEV NAME | TYPE | UTC TIME | KERNEL TIME | DATA1 | DATA2 |
+-----+----------+------------------+---------------------+--------------+-------------------+-------+
| 0 | rbln0 | NO_RESPONSE | 2024-01-15 10:30:45 | 12345.678 | CP_EVENT | 0x0 |
| 1 | rbln0 | RESPONSE_REQUIRED| 2024-01-15 10:25:12 | 12300.123 | SINGLE_HARD_RESET | 0x1 |
+-----+----------+------------------+---------------------+--------------+-------------------+-------+
참고 사항
이벤트에는 다음이 표시됩니다:
- 이벤트 유형 (예:
NO_RESPONSE,RESPONSE_REQUIRED) - 이벤트 소스 (예:
SINGLE_HARD_RESET,RSD_HARD_RESET,TDR_EVENT,CP_EVENT) - UTC 및 커널 타임스탬프
- 이벤트 데이터 값
텔레메트리 단위¶
RSMD는 텔레메트리 데이터에 대해 다음 단위를 사용합니다:
- 온도: 밀리-섭씨로 표현 (1000으로 나누면 °C)
- 전력: 마이크로-와트로 표현 (1,000,000으로 나누면 와트)
- 메모리: GB (기가바이트)로 표현
- 클럭: MHz (메가헤르츠)로 표현
- 사용률: 백분율 (0-100)로 표현
CLI 도구는 자동으로 이를 사람이 읽기 쉬운 단위로 변환합니다.
권장 사항¶
- 정기 모니터링: 스케줄된 스크립트를 사용하여 장치 상태 메트릭을 지속적으로 모니터링
- 이벤트 보존 설정: 로깅 요구사항 및 사용 가능한 디스크 공간에 따라
MAX_RBLN_EVENT구성 - 네트워크 보안: 로컬 접근에는 Unix 도메인 소켓 사용 권장; 방화벽 규칙을 통해 TCP 포트 접근 제한
- 오류 처리: 결과 처리 전 모든 API 응답에서
err_status필드 확인 - 로그 검토: 패턴, 이상 징후 또는 잠재적 문제를 식별하기 위해 주기적으로 이벤트 로그 검토
참고 자료¶
- gRPC 정의: 프로토콜 버퍼 정의 파일(
rbln_services.proto)은 일반적으로/opt/rebellions/etc/또는 시스템 설정 디렉터리에 위치합니다 - Systemd 서비스: 서비스 유닛 파일은
/etc/systemd/system/rbln_daemon.service에 설치됩니다