summaryrefslogtreecommitdiffstats
path: root/collectors
diff options
context:
space:
mode:
authorIlya Mashchenko <ilya@netdata.cloud>2020-12-03 13:20:09 +0300
committerGitHub <noreply@github.com>2020-12-03 13:20:09 +0300
commitfae19246df3c8768c8207372d46828a9afe788d4 (patch)
treed383160c45b0486755116d0de20d233ca4b67401 /collectors
parentd1a3c48ce522b0477655491d184be981b39e567c (diff)
python.d/nvidia_smi: fix gpu data filtering (#10312)
Diffstat (limited to 'collectors')
-rw-r--r--collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py19
1 files changed, 13 insertions, 6 deletions
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 506bf1175c..9c69586ddf 100644
--- a/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py
+++ b/collectors/python.d.plugin/nvidia_smi/nvidia_smi.chart.py
@@ -18,8 +18,6 @@ disabled_by_default = True
NVIDIA_SMI = 'nvidia-smi'
-BAD_VALUE = 'N/A'
-
EMPTY_ROW = ''
EMPTY_ROW_LIMIT = 500
POLLER_BREAK_ROW = '</nvidia_smi_log>'
@@ -423,9 +421,7 @@ class GPU:
data[key] = p['used_memory']
data['user_num'] = len(users)
- return dict(
- ('gpu{0}_{1}'.format(self.num, k), v) for k, v in data.items() if v is not None and v != BAD_VALUE
- )
+ return dict(('gpu{0}_{1}'.format(self.num, k), v) for k, v in data.items())
class Service(SimpleService):
@@ -467,7 +463,10 @@ class Service(SimpleService):
data = dict()
for idx, root in enumerate(parsed.findall('gpu')):
gpu = GPU(idx, root, self.exclude_zero_memory_users)
- data.update(gpu.data())
+ gpu_data = gpu.data()
+ # self.debug(gpu_data)
+ gpu_data = dict((k, v) for k, v in gpu_data.items() if is_gpu_data_value_valid(v))
+ data.update(gpu_data)
self.update_processes_mem_chart(gpu)
self.update_processes_user_mem_chart(gpu)
@@ -541,3 +540,11 @@ class Service(SimpleService):
order, charts = gpu_charts(GPU(idx, root))
self.order.extend(order)
self.definitions.update(charts)
+
+
+def is_gpu_data_value_valid(value):
+ try:
+ int(value)
+ except (TypeError, ValueError):
+ return False
+ return True