Source code for perfmon.core.metrics.gpumetrics.nvidia.misc

"""Functions to monitor misc metrics like temperature, fan speed for NVIDIA GPUs"""

import logging

from py3nvml.py3nvml import *

from perfmon.core.metrics.gpumetrics.nvidia import device_query

_log = logging.getLogger(__name__)

# pylint: disable=E0401,W0201,C0301


[docs]def misc_metrics(data): """This method gets misc NVIDIA GPU metrics""" # Get temperature of devices temp_metrics = device_query('nvmlDeviceGetTemperature', NVML_TEMPERATURE_GPU) for i, temperature in enumerate(temp_metrics): data[i]['temperature'].append(temperature) # Get fan speed fan_speed_metrics = device_query('nvmlDeviceGetFanSpeed') for i, speed in enumerate(fan_speed_metrics): data[i]['fan_speed'].append(speed) # Get num procs num_procs = device_query('nvmlDeviceGetComputeRunningProcesses') for i, procs in enumerate(num_procs): data[i]['num_procs'].append(len(procs)) # Get PCI express send throughput pcie_send_metrics = device_query('nvmlDeviceGetPcieThroughput', 0) for i, thpt in enumerate(pcie_send_metrics): data[i]['pci_thgpt']['send'].append(thpt) # Get PCI express receive throughput pcie_recv_metrics = device_query('nvmlDeviceGetPcieThroughput', 1) for i, thpt in enumerate(pcie_recv_metrics): data[i]['pci_thgpt']['recv'].append(thpt) return data