From dd814a7c1a8de056a79f7238578b09236edd5506 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 10 Aug 2023 11:18:49 +0200 Subject: Adding upstream version 1.42.0. Signed-off-by: Daniel Baumann --- .../python.d.plugin/nvidia_smi/nvidia_smi.chart.py | 40 +++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) (limited to 'collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py') diff --git a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py b/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py index 271c99638..556a61435 100644 --- a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py +++ b/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py @@ -62,20 +62,22 @@ POWER_STATES = ['P' + str(i) for i in range(0, 16)] # PCI Transfer data rate in gigabits per second (Gb/s) per generation PCI_SPEED = { - "1": 2.5, - "2": 5, - "3": 8, - "4": 16, - "5": 32 + "1": 2.5, + "2": 5, + "3": 8, + "4": 16, + "5": 32 } # PCI encoding per generation PCI_ENCODING = { - "1": 2/10, - "2": 2/10, - "3": 2/130, - "4": 2/130, - "5": 2/130 + "1": 2 / 10, + "2": 2 / 10, + "3": 2 / 130, + "4": 2 / 130, + "5": 2 / 130 } + + def gpu_charts(gpu): fam = gpu.full_name() @@ -88,7 +90,8 @@ def gpu_charts(gpu): ] }, PCI_BANDWIDTH_PERCENT: { - 'options': [None, 'PCI Express Bandwidth Percent', 'percentage', fam, 'nvidia_smi.pci_bandwidth_percent', 'area'], + 'options': [None, 'PCI Express Bandwidth Percent', 'percentage', fam, 'nvidia_smi.pci_bandwidth_percent', + 'area'], 'lines': [ ['rx_util_percent', 'rx_percent'], ['tx_util_percent', 'tx_percent'], @@ -358,7 +361,8 @@ class GPU: @handle_attr_error def pci_link_width(self): - return self.root.find('pci').find('pci_gpu_link_info').find('link_widths').find('max_link_width').text.split('x')[0] + info = self.root.find('pci').find('pci_gpu_link_info') + return info.find('link_widths').find('max_link_width').text.split('x')[0] def pci_bw_max(self): link_gen = self.pci_link_gen() @@ -368,7 +372,7 @@ class GPU: # Maximum PCIe Bandwidth = SPEED * WIDTH * (1 - ENCODING) - 1Gb/s. # see details https://enterprise-support.nvidia.com/s/article/understanding-pcie-configuration-for-maximum-performance # return max bandwidth in kilobytes per second (kB/s) - return (PCI_SPEED[link_gen] * link_width * (1- PCI_ENCODING[link_gen]) - 1) * 1000 * 1000 / 8 + return (PCI_SPEED[link_gen] * link_width * (1 - PCI_ENCODING[link_gen]) - 1) * 1000 * 1000 / 8 @handle_attr_error def rx_util(self): @@ -434,14 +438,19 @@ class GPU: def mem_clock(self): return self.root.find('clocks').find('mem_clock').text.split()[0] + @handle_attr_error + def power_readings(self): + elem = self.root.find('power_readings') + return elem if elem else self.root.find('gpu_power_readings') + @handle_attr_error def power_state(self): - return str(self.root.find('power_readings').find('power_state').text.split()[0]) + return str(self.power_readings().find('power_state').text.split()[0]) @handle_value_error @handle_attr_error def power_draw(self): - return float(self.root.find('power_readings').find('power_draw').text.split()[0]) * 100 + return float(self.power_readings().find('power_draw').text.split()[0]) * 100 @handle_attr_error def processes(self): @@ -492,7 +501,6 @@ class GPU: data['rx_util_percent'] = str(int(int(self.rx_util()) * 100 / self.pci_bw_max())) data['tx_util_percent'] = str(int(int(self.tx_util()) * 100 / self.pci_bw_max())) - for v in POWER_STATES: data['power_state_' + v.lower()] = 0 p_state = self.power_state() -- cgit v1.2.3