From 0acf64ec5bb337a20035c0682dbb01c38ab401cd Mon Sep 17 00:00:00 2001 From: Sastry Duri Date: Mon, 28 Nov 2016 10:52:03 -0500 Subject: [PATCH 1/2] added power and temperature features Signed-off-by: Sastry Duri --- crawler/features_crawler.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/crawler/features_crawler.py b/crawler/features_crawler.py index 5bb89e83..19e2c35c 100644 --- a/crawler/features_crawler.py +++ b/crawler/features_crawler.py @@ -1313,28 +1313,33 @@ def crawl_gpu(self): nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv,noheader,nounits ''' - util_atttibutes = ['gpu','memory'] - memory_atttibutes = ['total','free','used'] - if not os.path.exists(NVIDIA_SMI): - return - - nvidia_smi_proc = subprocess.Popen([NVIDIA_SMI, '--query-gpu=utilization.gpu,utilization.memory,memory.total,memory.free,memory.used', - '--format=csv,noheader,nounits' ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + return + + params = ['utilization.gpu', 'utilization.memory', 'memory.total', + 'memory.free', 'memory.used', 'temperature.gpu', 'power.draw', + 'power.limit'] + + nvidia_smi_proc = subprocess.Popen([NVIDIA_SMI, + '--query-gpu={}'.format(','.join(params)), + '--format=csv,noheader,nounits' ], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) nvidia_smi_proc_out, nvidia_smi_proc_err = nvidia_smi_proc.communicate() - + if nvidia_smi_proc.returncode > 0: raise Exception('Unable to get gpu metrics') - + metrics = nvidia_smi_proc_out.split('\n') for i, val_str in enumerate(metrics): if len(val_str) != 0: values = val_str.split(',') - entry = {'utilization':{'gpu': values[0], 'memory': values[1]}, - 'memory': {'total':values[2], 'free': values[3], 'used': values[4]}} + entry = {'utilization':{'gpu': values[0], 'memory': values[1]}, + 'memory': {'total':values[2], 'free': values[3], 'used': values[4]}, + 'temperature':values[5], + 'power':{'draw': values[6], 'limit':values[7]} + } key = 'gpu{}'.format(i) yield (key, entry) - return def _crawl_wrapper(self, _function, namespaces=ALL_NAMESPACES, *args): From 7ba13358e025d123bcf6fcc8a4f8a9bab34e4804 Mon Sep 17 00:00:00 2001 From: Sastry Duri Date: Mon, 28 Nov 2016 11:01:03 -0500 Subject: [PATCH 2/2] fixed format issues Signed-off-by: Sastry Duri --- crawler/features_crawler.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/crawler/features_crawler.py b/crawler/features_crawler.py index 19e2c35c..7da23b10 100644 --- a/crawler/features_crawler.py +++ b/crawler/features_crawler.py @@ -1315,20 +1315,20 @@ def crawl_gpu(self): if not os.path.exists(NVIDIA_SMI): return - + params = ['utilization.gpu', 'utilization.memory', 'memory.total', 'memory.free', 'memory.used', 'temperature.gpu', 'power.draw', 'power.limit'] - + nvidia_smi_proc = subprocess.Popen([NVIDIA_SMI, - '--query-gpu={}'.format(','.join(params)), - '--format=csv,noheader,nounits' ], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + '--query-gpu={}'.format(','.join(params)), + '--format=csv,noheader,nounits' ], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) nvidia_smi_proc_out, nvidia_smi_proc_err = nvidia_smi_proc.communicate() - + if nvidia_smi_proc.returncode > 0: raise Exception('Unable to get gpu metrics') - + metrics = nvidia_smi_proc_out.split('\n') for i, val_str in enumerate(metrics): if len(val_str) != 0: