Nvidia-smi-exporter
Nvidia-smi Prometheus exporter with respecting of GPU-UUID
수집 메트릭 카테고리
시스템 및 GPU 기본 정보
- nvidia_smi_attached_gpus - 연결된 GPU 개수
- nvidia_smi_display_mode - 디스플레이 모드 상태 (0=Disabled, 1=Enabled)
- nvidia_smi_display_active - 디스플레이 활성 상태 (0=Not Active, 1=Active)
- nvidia_smi_persistence_mode - 퍼시스턴스 모드 상태 (0=Disabled, 1=Enabled)
- nvidia_smi_minor_number - GPU 마이너 디바이스 번호
- nvidia_smi_multigpu_board - 멀티 GPU 보드 여부 (0=No, 1=Yes)
어카운팅 정보
- nvidia_smi_accounting_mode - 어카운팅 모드 상태 (0=Disabled, 1=Enabled)
- nvidia_smi_accounting_mode_buffer_size - 어카운팅 모드 버퍼 크기
InfoROM 정보
- nvidia_smi_inforom_version_oem_object - OEM 객체 InfoROM 버전
PCI 정보
- nvidia_smi_pci_pci_sub_system_id - PCI 서브시스템 ID
- nvidia_smi_pci_pci_gpu_link_info_pcie_gen_max_link_gen - PCIe 최대 세대
- nvidia_smi_pci_pci_gpu_link_info_pcie_gen_current_link_gen - PCIe 현재 세대
- nvidia_smi_pci_pci_gpu_link_info_link_widths_max_link_width - PCIe 최대 링크 폭 (1x, 2x, 4x, 8x, 16x, 32x)
- nvidia_smi_pci_pci_gpu_link_info_link_widths_current_link_width - PCIe 현재 링크 폭
- nvidia_smi_pci_replay_counter - PCI 리플레이 카운터
- nvidia_smi_pci_replay_rollover_counter - PCI 리플레이 롤오버 카운터
- nvidia_smi_pci_tx_util_bytes_per_second - PCI TX 대역폭 사용량 (바이트/초)
- nvidia_smi_pci_rx_util_bytes_per_second - PCI RX 대역폭 사용량 (바이트/초)
팬 및 성능 상태
- nvidia_smi_fan_speed_ratio - 팬 속도 비율 (0.0~1.0)
- nvidia_smi_performance_state - 성능 상태 (P0P15, 015로 변환)
클럭 스로틀링 정보
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_gpu_idle - GPU 유휴 상태로 인한 스로틀링
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_applications_clocks_setting - 애플리케이션 클럭 설정으로 인한 스로틀링
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sw_power_cap - 소프트웨어 전력 제한으로 인한 스로틀링
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_slowdown - 하드웨어 슬로우다운
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_thermal_slowdown - 하드웨어 열 슬로우다운
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_power_brake_slowdown - 하드웨어 전력 브레이크 슬로우다운
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sync_boost - 동기화 부스트
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sw_thermal_slowdown - 소프트웨어 열 슬로우다운
- nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_display_clocks_setting - 디스플레이 클럭 설정
메모리 사용량
- nvidia_smi_fb_memory_usage_total_bytes - 프레임버퍼 총 메모리 (바이트)
- nvidia_smi_fb_memory_usage_used_bytes - 프레임버퍼 사용 중인 메모리 (바이트)
- nvidia_smi_fb_memory_usage_free_bytes - 프레임버퍼 사용 가능한 메모리 (바이트)
- nvidia_smi_bar1_memory_usage_total_bytes - BAR1 총 메모리 (바이트)
- nvidia_smi_bar1_memory_usage_used_bytes - BAR1 사용 중인 메모리 (바이트)
- nvidia_smi_bar1_memory_usage_free_bytes - BAR1 사용 가능한 메모리 (바이트)
컴퓨트 모드
- nvidia_smi_compute_mode - 컴퓨트 모드 (0=Default, 1=Exclusive_Thread, 2=Prohibited, 3=Exclusive_Process)
활용률 (Utilization)
- nvidia_smi_utilization_gpu_util_ratio - GPU 코어 활용률 비율 (0.0~1.0)
- nvidia_smi_utilization_memory_util_ratio - 메모리 활용률 비율 (0.0~1.0)
- nvidia_smi_utilization_encoder_util_ratio - 인코더 활용률 비율 (0.0~1.0)
- nvidia_smi_utilization_decoder_util_ratio - 디코더 활용률 비율 (0.0~1.0)
인코더 통계
- nvidia_smi_encoder_stats_session_count - 활성 인코더 세션 수
- nvidia_smi_encoder_stats_average_fps - 평균 인코더 FPS
- nvidia_smi_encoder_stats_average_latency - 평균 인코더 지연시간
FBC (Frame Buffer Capture) 통계
- nvidia_smi_fbc_stats_session_count - 활성 FBC 세션 수
- nvidia_smi_fbc_stats_average_fps - 평균 FBC FPS
- nvidia_smi_fbc_stats_average_latency - 평균 FBC 지연시간
온도
- nvidia_smi_temperature_gpu_temp_celsius - GPU 현재 온도 (섭씨)
- nvidia_smi_temperature_gpu_temp_max_threshold_celsius - GPU 최대 임계 온도 (섭씨)
- nvidia_smi_temperature_gpu_temp_slow_threshold_celsius - GPU 슬로우다운 임계 온도 (섭씨)
- nvidia_smi_temperature_gpu_target_temperature_celsius - GPU 목표 온도 (섭씨)
- nvidia_smi_supported_gpu_target_temp_gpu_target_temp_min_celsius - GPU 지원하는 최소 목표 온도 (섭씨)
- nvidia_smi_supported_gpu_target_temp_gpu_target_temp_max_celsius - GPU 지원하는 최대 목표 온도 (섭씨)
전력 정보
- nvidia_smi_power_readings_power_state - 전력 상태 (P0~P15)
- nvidia_smi_power_readings_power_management - 전력 관리 활성화 여부 (0=Disabled, 1=Enabled)
- nvidia_smi_power_readings_power_draw_watts - 현재 전력 소비 (와트)
- nvidia_smi_power_readings_power_limit_watts - 현재 전력 제한 (와트)
- nvidia_smi_power_readings_default_power_limit_watts - 기본 전력 제한 (와트)
- nvidia_smi_power_readings_enforced_power_limit_watts - 강제 전력 제한 (와트)
- nvidia_smi_power_readings_min_power_limit_watts - 최소 전력 제한 (와트)
- nvidia_smi_power_readings_max_power_limit_watts - 최대 전력 제한 (와트)
클럭 속도
- nvidia_smi_clocks_graphics_clock_hz - 현재 그래픽 클럭 (Hz)
- nvidia_smi_clocks_sm_clock_hz - 현재 SM(스트리밍 멀티프로세서) 클럭 (Hz)
- nvidia_smi_clocks_mem_clock_hz - 현재 메모리 클럭 (Hz)
- nvidia_smi_clocks_video_clock_hz - 현재 비디오 클럭 (Hz)
- nvidia_smi_max_clocks_graphics_clock_hz - 최대 그래픽 클럭 (Hz)
- nvidia_smi_max_clocks_sm_clock_hz - 최대 SM 클럭 (Hz)
- nvidia_smi_max_clocks_mem_clock_hz - 최대 메모리 클럭 (Hz)
- nvidia_smi_max_clocks_video_clock_hz - 최대 비디오 클럭 (Hz)
Memory 상세 정보
nvidia_smi_fb_memory_usage_total_bytes (Frame Buffer Memory)
- GPU의 실제 물리적 VRAM 전체 크기
- nvidia-smi에서 보이는 "Total" 메모리가 바로 이 값
- 예: RTX 3090의 경우 24GB
nvidia_smi_bar1_memory_usage_total_bytes (BAR1 Memory)
- PCIe BAR1 주소 공간의 크기
- CPU가 GPU 메모리에 직접 접근할 수 있도록 매핑된 영역
- FB Memory의 일부를 CPU 주소 공간에 매핑한 것
- 일반적으로 FB Memory보다 훨씬 작음 (예: 256MB ~ 수GB)
소스코드 실행 방법
nvidia-smi 명령이 되는게 기본 전제이다.
우선, ruby 환경이 없다면:
Ubuntu 22.04 기준으로 작성함:
## 코드 복사
git clone https://github.com/a0s/nvidia-smi-exporter
cd nvidia-smi-exporter
## 루비 환경 설정
rbenv install 2.7.1
rbenv local 2.7.1
## 버전 2.7.1 확인
ruby -v
## Bundler 설치
gem install bundler -v 2.4.22
## 종속성 설치
bundle install
## 실행
ruby ./app/application.rb
다음과 같은 로그가 출력되면 된다.
== Sinatra (v2.2.0) has taken the stage on 9454 for development with backup from Puma
Puma starting in single mode...
* Puma version: 5.6.4 (ruby 2.7.1-p83) ("Birdie's Version")
* Min threads: 0
* Max threads: 5
* Environment: development
* PID: 301532
* Listening on http://0.0.0.0:9454
Use Ctrl-C to stop
Metrics example
curl localhost:9454/metrics 결과는 다음과 같다:
nvidia_smi_attached_gpus 2
nvidia_smi_display_mode{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1
nvidia_smi_display_active{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_persistence_mode{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1
nvidia_smi_accounting_mode{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_accounting_mode_buffer_size{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 4000
nvidia_smi_minor_number{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_multigpu_board{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_inforom_version_oem_object{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1.1
nvidia_smi_pci_pci_sub_system_id{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 37021458
nvidia_smi_pci_pci_gpu_link_info_pcie_gen_max_link_gen{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 3
nvidia_smi_pci_pci_gpu_link_info_pcie_gen_current_link_gen{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 3
nvidia_smi_pci_pci_gpu_link_info_link_widths_max_link_width{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 16
nvidia_smi_pci_pci_gpu_link_info_link_widths_current_link_width{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1
nvidia_smi_pci_replay_counter{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 65535
nvidia_smi_pci_replay_rollover_counter{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_pci_tx_util_bytes_per_second{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 11264000
nvidia_smi_pci_rx_util_bytes_per_second{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 31744000
nvidia_smi_fan_speed_ratio{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0.53
nvidia_smi_performance_state{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 2
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_gpu_idle{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_applications_clocks_setting{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sw_power_cap{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_slowdown{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_thermal_slowdown{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_hw_power_brake_slowdown{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sync_boost{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_sw_thermal_slowdown{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_clocks_throttle_reasons_clocks_throttle_reason_display_clocks_setting{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_fb_memory_usage_total_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 8510242816
nvidia_smi_fb_memory_usage_used_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 3040870400
nvidia_smi_fb_memory_usage_free_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 5469372416
nvidia_smi_bar1_memory_usage_total_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 268435456
nvidia_smi_bar1_memory_usage_used_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 5242880
nvidia_smi_bar1_memory_usage_free_bytes{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 263192576
nvidia_smi_compute_mode{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_utilization_gpu_util_ratio{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1.0
nvidia_smi_utilization_memory_util_ratio{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1.0
nvidia_smi_utilization_encoder_util_ratio{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0.0
nvidia_smi_utilization_decoder_util_ratio{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0.0
nvidia_smi_encoder_stats_session_count{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_encoder_stats_average_fps{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_encoder_stats_average_latency{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_fbc_stats_session_count{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_fbc_stats_average_fps{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_fbc_stats_average_latency{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 0
nvidia_smi_temperature_gpu_temp_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 67.0
nvidia_smi_temperature_gpu_temp_max_threshold_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 96.0
nvidia_smi_temperature_gpu_temp_slow_threshold_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 93.0
nvidia_smi_temperature_gpu_target_temperature_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 83.0
nvidia_smi_supported_gpu_target_temp_gpu_target_temp_min_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 60.0
nvidia_smi_supported_gpu_target_temp_gpu_target_temp_max_celsius{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 92.0
nvidia_smi_power_readings_power_state{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 2
nvidia_smi_power_readings_power_management{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1
nvidia_smi_power_readings_power_draw_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 211.86
nvidia_smi_power_readings_power_limit_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 216.0
nvidia_smi_power_readings_default_power_limit_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 200.0
nvidia_smi_power_readings_enforced_power_limit_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 216.0
nvidia_smi_power_readings_min_power_limit_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 100.0
nvidia_smi_power_readings_max_power_limit_watts{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 216.0
nvidia_smi_clocks_graphics_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1784000000.0
nvidia_smi_clocks_sm_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1784000000.0
nvidia_smi_clocks_mem_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 5514000000.0
nvidia_smi_clocks_video_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1594000000.0
nvidia_smi_max_clocks_graphics_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1999000000.0
nvidia_smi_max_clocks_sm_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1999000000.0
nvidia_smi_max_clocks_mem_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 5005000000.0
nvidia_smi_max_clocks_video_clock_hz{uuid="683c6e09-3969-31a5-b7ca-cc88252b7fce"} 1708000000.0