@@ -33,27 +33,44 @@ def rename(name):
3333 return name
3434
3535def format_processor (processor ):
36- return "_" .join (re .sub (r'\(.*\)' , '' , rename (processor )).split ()).replace ("-" , "_" ).replace ("V" , "v" ).replace ("_v" , "v" )
36+ return "_" .join (re .sub (r'\(.*\)' , '' , rename (processor )).split ()).replace ("-" , "_" ).lower ().replace ("_v" , "v" )
37+
38+ def format_vendor (vendor ):
39+ return vendor .split ()[0 ].replace ("-" ,"_" ).replace ("," ,"" ).replace ("'" ,"" ).lower ()
3740
3841GB = 1024 * 1024 * 1024
3942import psutil
4043import cpuinfo
44+ import subprocess
45+
46+ import pyudev
47+
4148def generate_spec (data_path , machine_id ):
42- processor = "unknown"
49+ processor = ""
50+ vendor = ""
4351 cpu_info = cpuinfo .get_cpu_info ()
4452 if "brand_raw" in cpu_info :
4553 processor = format_processor (cpu_info ["brand_raw" ])
54+ context = pyudev .Context ()
55+ for device in context .list_devices (subsystem = "dmi" ):
56+ if device .get ('ID_VENDOR' ) is not None :
57+ vendor = format_vendor (device .get ('ID_VENDOR' ))
58+ break
4659 cores = psutil .cpu_count (logical = True )
47- chips = int (cores / psutil .cpu_count (logical = False ))
60+ chips = max (1 , int (subprocess .check_output ('cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l' , shell = True )))
61+ threads_per_core = max (1 , cores // psutil .cpu_count (logical = False ))
4862 memory = psutil .virtual_memory ().total
4963 memory_gb = int (memory / GB )
50- cpu_freq_mhz = round (psutil .cpu_freq (percpu = False ).max / 100 )* 100 # round to one decimal of GHz
64+ freq = psutil .cpu_freq (percpu = False )
65+ cpu_freq_mhz = round (max (freq .max , freq .current )/ 100 )* 100 # round to one decimal of GHz
5166 spec_values = {
67+ "vendor" : vendor ,
5268 "processor" : processor ,
5369 "cores" : cores ,
5470 "chips" : chips ,
5571 "memory_gb" : memory_gb ,
56- "cpu_freq_mhz" : cpu_freq_mhz
72+ "cpu_freq_mhz" : cpu_freq_mhz ,
73+ "threads_per_core" : threads_per_core
5774 }
5875 spec = NodeTypeSpec (** spec_values )
5976 print ("Save machine spec ({}): " .format (data_path ))
0 commit comments