Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_cpu_temperature(path, cpu_temp):
hwmon_name = read_first_line(os.path.join(path, 'name'))
if not hwmon_name.startswith('coretemp'):
return
index = 1
while True:
template = os.path.join(path, "temp%s_%%s" % index)
try:
temp_label = read_first_line(template % 'label', error=True)
except IOError:
break
temp_input = read_first_line(template % 'input', error=True)
temp_input = float(temp_input) / 1000
# On Python 2, u"%.0f\xb0C" introduces unicode errors if the
# locale encoding is ASCII, so use a space.
temp_input = "%.0f C" % temp_input
item = '%s:%s=%s' % (hwmon_name, temp_label, temp_input)
cpu_temp.append(item)
index += 1
path = os.path.join(sys_cpu_path, "cpu%s/cpufreq/scaling_driver" % cpu)
scaling_driver = read_first_line(path)
if scaling_driver:
info.append('driver:%s' % scaling_driver)
if scaling_driver == 'intel_pstate':
path = os.path.join(sys_cpu_path, "intel_pstate/no_turbo")
no_turbo = read_first_line(path)
if no_turbo == '1':
info.append('intel_pstate:no turbo')
elif no_turbo == '0':
info.append('intel_pstate:turbo')
path = os.path.join(sys_cpu_path, "cpu%s/cpufreq/scaling_governor" % cpu)
scaling_governor = read_first_line(path)
if scaling_governor:
info.append('governor:%s' % scaling_governor)
return info
def get_isolated_cpus():
"""Get the list of isolated CPUs.
Return a sorted list of CPU identifiers, or return None if no CPU is
isolated.
"""
# The cpu/isolated sysfs was added in Linux 4.2
# (commit 59f30abe94bff50636c8cad45207a01fdcb2ee49)
path = sysfs_path('devices/system/cpu/isolated')
isolated = read_first_line(path)
if isolated:
return parse_cpu_list(isolated)
cmdline = read_first_line(proc_path('cmdline'))
if cmdline:
match = re.search(r'\bisolcpus=([^ ]+)', cmdline)
if match:
isolated = match.group(1)
return parse_cpu_list(isolated)
return None
isolated = get_isolated_cpus()
if isolated:
isolated = set(isolated)
configs = {}
for cpu in cpus:
config = get_cpu_config(cpu)
if nohz_full and cpu in nohz_full:
config.append('nohz_full')
if isolated and cpu in isolated:
config.append('isolated')
if config:
configs[cpu] = ', '.join(config)
config = format_cpu_infos(configs)
cpuidle = read_first_line('/sys/devices/system/cpu/cpuidle/current_driver')
if cpuidle:
config.append('idle:%s' % cpuidle)
if not config:
return
metadata['cpu_config'] = '; '.join(config)
def get_cpu_config(cpu):
sys_cpu_path = sysfs_path("devices/system/cpu")
info = []
path = os.path.join(sys_cpu_path, "cpu%s/cpufreq/scaling_driver" % cpu)
scaling_driver = read_first_line(path)
if scaling_driver:
info.append('driver:%s' % scaling_driver)
if scaling_driver == 'intel_pstate':
path = os.path.join(sys_cpu_path, "intel_pstate/no_turbo")
no_turbo = read_first_line(path)
if no_turbo == '1':
info.append('intel_pstate:no turbo')
elif no_turbo == '0':
info.append('intel_pstate:turbo')
path = os.path.join(sys_cpu_path, "cpu%s/cpufreq/scaling_governor" % cpu)
scaling_governor = read_first_line(path)
if scaling_governor:
info.append('governor:%s' % scaling_governor)
def get_cpu_temperature(path, cpu_temp):
hwmon_name = read_first_line(os.path.join(path, 'name'))
if not hwmon_name.startswith('coretemp'):
return
index = 1
while True:
template = os.path.join(path, "temp%s_%%s" % index)
try:
temp_label = read_first_line(template % 'label', error=True)
except IOError:
break
temp_input = read_first_line(template % 'input', error=True)
temp_input = float(temp_input) / 1000
# On Python 2, u"%.0f\xb0C" introduces unicode errors if the
# locale encoding is ASCII, so use a space.
temp_input = "%.0f C" % temp_input
item = '%s:%s=%s' % (hwmon_name, temp_label, temp_input)
cpu_temp.append(item)
index += 1