From 493e28cce1fa3efef29ab91f33bdf29b097857ee Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Sat, 27 Apr 2024 12:22:03 +0530 Subject: [PATCH 1/4] Added library function which retun True/False if performance collection attribute set to LPAR profile Added library function which retun True/False if performance collection attribute set to LPAR profile Signed-off-by: Praveen K Pandey --- common/OpTestHMC.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/common/OpTestHMC.py b/common/OpTestHMC.py index de947375..fcbd7a8d 100644 --- a/common/OpTestHMC.py +++ b/common/OpTestHMC.py @@ -914,6 +914,33 @@ def run_command(self, i_cmd, timeout=60): :param timeout: number, time out in seconds ''' return self.ssh.run_command(i_cmd, timeout) + + def is_perfcollection_enabled(self): + ''' + Get Performance Information collection allowed in hmc profile + + :returns: Ture if allow_perf_collection in hmc otherwise false + ''' + + rc = self.run_command("lssyscfg -m %s -r lpar --filter lpar_names=%s -F allow_perf_collection" + % (self.mg_system, self.lpar_name)) + if rc: + return True + return False + + def hmc_perfcollect_configure(self, enable=True): + ''' + Enable/Disable perfcollection from HMC + ''' + # Set perf collection profile value using HMC command + cmd = ('chsyscfg -r lpar -m %s -i "name=%s, allow_perf_collection=' % + (self.mg_system, self.lpar_name)) + if enable: # Value '1' to enable perfcollection + cmd = '%s1"' % cmd + else: # Value '0' to disable perfcollection + cmd = '%s0"' % cmd + self.run_command(cmd, timeout=300) + class OpTestHMC(HMCUtil): From 03e25d2ee862251df723965e746c9c5586c0f8e9 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Fri, 3 May 2024 18:28:13 +0530 Subject: [PATCH 2/4] Added a library function which help to set perf collection attribute to LPAR using HMC command Added a library function which help to set perf collection attribute to LPAR using HMC command Signed-off-by: Praveen K Pandey --- common/OpTestHMC.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/OpTestHMC.py b/common/OpTestHMC.py index fcbd7a8d..4916466d 100644 --- a/common/OpTestHMC.py +++ b/common/OpTestHMC.py @@ -927,20 +927,20 @@ def is_perfcollection_enabled(self): if rc: return True return False - + def hmc_perfcollect_configure(self, enable=True): ''' Enable/Disable perfcollection from HMC + enable perfcollection value is 1 and for disable it 0 ''' # Set perf collection profile value using HMC command cmd = ('chsyscfg -r lpar -m %s -i "name=%s, allow_perf_collection=' % (self.mg_system, self.lpar_name)) - if enable: # Value '1' to enable perfcollection + if enable: cmd = '%s1"' % cmd - else: # Value '0' to disable perfcollection + else: cmd = '%s0"' % cmd self.run_command(cmd, timeout=300) - class OpTestHMC(HMCUtil): From b532165eba81e8429f8fdb6f6a4152bbe5314a27 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Sat, 27 Apr 2024 13:09:16 +0530 Subject: [PATCH 3/4] Added support in Machine config as perf collection data can be set via dynamic profile Added support in Machine config as perf collection data can be set via dynamic profile Signed-off-by: Praveen K Pandey --- testcases/MachineConfig.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/testcases/MachineConfig.py b/testcases/MachineConfig.py index 66b5c41e..bfa54512 100755 --- a/testcases/MachineConfig.py +++ b/testcases/MachineConfig.py @@ -146,11 +146,11 @@ def callConfig(self, key): class LparConfig(): ''' - pass machine_config in config file indicating proc mode, vtpm and vpmem. + pass machine_config in config file indicating proc mode, vtpm vpmem and perf. valid values: cpu=shared or cpu=dedicated vtpm=1 or vtpm=0 vpmem=0 or vpmem=1 - Ex: machine_config="cpu=dedicated,vtpm=1,vpmem=1" + Ex: machine_config="cpu=dedicated,vtpm=1,vpmem=1,perf=1" ''' def __init__(self, cv_HMC=None, system_name= None, lpar_name=None, lpar_prof=None, machin_config =None, sb_enable=None): @@ -325,6 +325,18 @@ def LparSetup(self): ioslot_drc_names = ",".join(ioslot_drc_names[:ioslot_drc_names.index("=")].split(",")[:-1]) \ if "=" in ioslot_drc_names else ioslot_drc_names self.cv_HMC.add_ioslot(ioslot_drc_names) + + if "perf=1" in self.machine_config: + conf = OpTestConfiguration.conf + if self.cv_HMC.is_perfcollection_enabled(): + log.info("System is already booted with perf collection profile enabled") + else: + self.cv_HMC.hmc_perfcollect_configure() + if self.cv_HMC.is_perfcollection_enabled: + log.info("System is already booted with perf collection profile enabled") + else: + return "Failed to enable Performance Information collection" + if self.sb_enable is not None : self.cv_HMC.hmc_secureboot_on_off(self.sb_enable) From f595b2f7f9880975632227bca1f451edcc541393 Mon Sep 17 00:00:00 2001 From: Praveen K Pandey Date: Sat, 27 Apr 2024 13:11:27 +0530 Subject: [PATCH 4/4] Remove non relevant function docstring Remove non relevant function docstring Signed-off-by: Praveen K Pandey --- common/OpTestHMC.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/common/OpTestHMC.py b/common/OpTestHMC.py index 4916466d..41eef4a4 100644 --- a/common/OpTestHMC.py +++ b/common/OpTestHMC.py @@ -180,9 +180,6 @@ def check_lpar_secureboot_state(self, hmc_con): def hmc_secureboot_on_off(self, enable=True): ''' Enable/Disable Secure Boot from HMC - 1. PowerOFF/Shutdown LPAR from HMC - 2. Enable/Disable Secure boot using 'chsyscfg' command - 3. PowerON/Activate the LPAR and boot to Operating System ''' # Set Secure Boot value using HMC command cmd = ('chsyscfg -r lpar -m %s -i "name=%s, secure_boot=' %