mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-04-15 15:20:45 +01:00
commit
42a4831092
@ -106,7 +106,7 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method
|
|||||||
|
|
||||||
runtime_parameters = [
|
runtime_parameters = [
|
||||||
RuntimeParameter('sysfile_values', 'get_sysfile_values', 'set_sysfile_values', value_name='params'),
|
RuntimeParameter('sysfile_values', 'get_sysfile_values', 'set_sysfile_values', value_name='params'),
|
||||||
CoreParameter('${core}_cores', 'get_number_of_online_cpus', 'set_number_of_online_cpus',
|
CoreParameter('${core}_cores', 'get_number_of_online_cores', 'set_number_of_online_cores',
|
||||||
value_name='number'),
|
value_name='number'),
|
||||||
CoreParameter('${core}_min_frequency', 'get_core_min_frequency', 'set_core_min_frequency',
|
CoreParameter('${core}_min_frequency', 'get_core_min_frequency', 'set_core_min_frequency',
|
||||||
value_name='freq'),
|
value_name='freq'),
|
||||||
@ -477,20 +477,6 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method
|
|||||||
else:
|
else:
|
||||||
raise ValueError(c)
|
raise ValueError(c)
|
||||||
|
|
||||||
def get_number_of_online_cpus(self, core):
|
|
||||||
return len(self.get_online_cpus(core))
|
|
||||||
|
|
||||||
def set_number_of_online_cpus(self, core, number):
|
|
||||||
core_ids = [i for i, c in enumerate(self.core_names) if c == core]
|
|
||||||
max_cores = len(core_ids)
|
|
||||||
if number > max_cores:
|
|
||||||
message = 'Attempting to set the number of active {} to {}; maximum is {}'
|
|
||||||
raise ValueError(message.format(core, number, max_cores))
|
|
||||||
for i in xrange(0, number):
|
|
||||||
self.enable_cpu(core_ids[i])
|
|
||||||
for i in xrange(number, max_cores):
|
|
||||||
self.disable_cpu(core_ids[i])
|
|
||||||
|
|
||||||
# hotplug
|
# hotplug
|
||||||
|
|
||||||
def enable_cpu(self, cpu):
|
def enable_cpu(self, cpu):
|
||||||
@ -529,7 +515,7 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method
|
|||||||
sysfile = '/sys/devices/system/cpu/{}/online'.format(cpu)
|
sysfile = '/sys/devices/system/cpu/{}/online'.format(cpu)
|
||||||
self.set_sysfile_value(sysfile, status)
|
self.set_sysfile_value(sysfile, status)
|
||||||
|
|
||||||
def get_number_of_active_cores(self, core):
|
def get_number_of_online_cores(self, core):
|
||||||
if core not in self.core_names:
|
if core not in self.core_names:
|
||||||
raise ValueError('Unexpected core: {}; must be in {}'.format(core, list(set(self.core_names))))
|
raise ValueError('Unexpected core: {}; must be in {}'.format(core, list(set(self.core_names))))
|
||||||
active_cpus = self.active_cpus
|
active_cpus = self.active_cpus
|
||||||
@ -539,7 +525,7 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method
|
|||||||
num_active_cores += 1
|
num_active_cores += 1
|
||||||
return num_active_cores
|
return num_active_cores
|
||||||
|
|
||||||
def set_number_of_active_cores(self, core, number): # NOQA
|
def set_number_of_online_cores(self, core, number): # NOQA
|
||||||
if core not in self.core_names:
|
if core not in self.core_names:
|
||||||
raise ValueError('Unexpected core: {}; must be in {}'.format(core, list(set(self.core_names))))
|
raise ValueError('Unexpected core: {}; must be in {}'.format(core, list(set(self.core_names))))
|
||||||
core_ids = [i for i, c in enumerate(self.core_names) if c == core]
|
core_ids = [i for i, c in enumerate(self.core_names) if c == core]
|
||||||
@ -552,8 +538,7 @@ class BaseLinuxDevice(Device): # pylint: disable=abstract-method
|
|||||||
# make sure at least one other core is enabled to avoid trying to
|
# make sure at least one other core is enabled to avoid trying to
|
||||||
# hotplug everything.
|
# hotplug everything.
|
||||||
for i, c in enumerate(self.core_names):
|
for i, c in enumerate(self.core_names):
|
||||||
if c != core:
|
if c != core and i in self.online_cpus:
|
||||||
self.enable_cpu(i)
|
|
||||||
break
|
break
|
||||||
else: # did not find one
|
else: # did not find one
|
||||||
raise ValueError('Cannot hotplug all cpus on the device!')
|
raise ValueError('Cannot hotplug all cpus on the device!')
|
||||||
|
@ -650,7 +650,7 @@ class EnergyModelInstrument(Instrument):
|
|||||||
def enable_all_cores(self):
|
def enable_all_cores(self):
|
||||||
counter = Counter(self.device.core_names)
|
counter = Counter(self.device.core_names)
|
||||||
for core, number in counter.iteritems():
|
for core, number in counter.iteritems():
|
||||||
self.device.set_number_of_online_cpus(core, number)
|
self.device.set_number_of_online_cores(core, number)
|
||||||
self.big_cpus = self.device.get_online_cpus(self.big_core)
|
self.big_cpus = self.device.get_online_cpus(self.big_core)
|
||||||
self.little_cpus = self.device.get_online_cpus(self.little_core)
|
self.little_cpus = self.device.get_online_cpus(self.little_core)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user