@cryptotaxi247 / netdata-1 / commits / 376bd7de8

nvidia_smi: handle `N/A` values (#4893)

Ilya Mashchenko committed Dec 2, 2018 at 03:17 UTC 376bd7de8f8a716e40fa4d922588afe926bb0191
1 file changed +15 -1
collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py
+15 -1
@@ -15,6 +15,8 @@ disabled_by_default = True
15
16 NVIDIA_SMI = 'nvidia-smi'
17
18 +BAD_VALUE = 'N/A'
19 +
20 EMPTY_ROW = ''
21 EMPTY_ROW_LIMIT = 500
22 POLLER_BREAK_ROW = '</nvidia_smi_log>'
@@ -206,6 +208,15 @@ def handle_attr_error(method):
208 return on_call
209
210
211 +def handle_value_error(method):
212 + def on_call(*args, **kwargs):
213 + try:
214 + return method(*args, **kwargs)
215 + except ValueError:
216 + return None
217 + return on_call
218 +
219 +
220 class GPU:
221 def __init__(self, num, root):
222 self.num = num
@@ -272,6 +283,7 @@ class GPU:
283 def mem_clock(self):
284 return self.root.find('clocks').find('mem_clock').text.split()[0]
285
286 + @handle_value_error
287 @handle_attr_error
288 def power_draw(self):
289 return float(self.root.find('power_readings').find('power_draw').text.split()[0]) * 100
@@ -294,7 +306,9 @@ class GPU:
306 'power_draw': self.power_draw(),
307 }
308
297 - return dict(('gpu{0}_{1}'.format(self.num, k), v) for k, v in data.items() if v is not None)
309 + return dict(
310 + ('gpu{0}_{1}'.format(self.num, k), v) for k, v in data.items() if v is not None and v != BAD_VALUE
311 + )
312
313
314 class Service(SimpleService):