scripts/nvmf_perf: enable SAR by default
Enable SAR CPU measurements by default. Delay time and sample count variables are now taken from fio ramp_time and run_time parameters, while sample interval is hardcoded to 1 second. Signed-off-by: Karol Latecki <karol.latecki@intel.com> Change-Id: Icf2866820250dd6bbc5619b2777f6fe139f2a588 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15339 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Michal Berger <michal.berger@intel.com>
This commit is contained in:
parent
2e449d4166
commit
90b95e2813
@ -27,6 +27,7 @@ To run the scripts in your environment please follow steps below.
|
||||
to /usr/src/local directory in order to configure NIC ports IRQ affinity.
|
||||
If custom directory is to be used, then it must be set using irq_scripts_dir
|
||||
option in Target and Initiator configuration sections.
|
||||
- `sysstat` package must be installed for SAR CPU utilization measurements.
|
||||
|
||||
### Optional
|
||||
|
||||
@ -83,7 +84,7 @@ Optional:
|
||||
"core_mask": "[1-10]",
|
||||
"null_block_devices": 8,
|
||||
"nvmet_bin": "/path/to/nvmetcli",
|
||||
"sar_settings": [true, 30, 1, 60],
|
||||
"sar_settings": true,
|
||||
"pcm_settings": [/tmp/pcm, 30, 1, 60],
|
||||
"enable_bandwidth": [true, 60],
|
||||
"enable_dpdk_memory": [true, 30]
|
||||
@ -111,10 +112,10 @@ Optional, common:
|
||||
|
||||
- null_block_devices - int, number of null block devices to create.
|
||||
Detected NVMe devices are not used if option is present. Default: 0.
|
||||
- sar_settings - [bool, int(x), int(y), int(z)];
|
||||
Enable SAR CPU utilization measurement on Target side.
|
||||
Wait for "x" seconds before starting measurements, then do "z" samples
|
||||
with "y" seconds intervals between them. Default: disabled.
|
||||
- sar_settings - bool
|
||||
Enable SAR CPU utilization measurement on Target side. SAR thread will
|
||||
wait until fio finishes it's "ramp_time" and then start measurement for
|
||||
fio "run_time" duration. Default: enabled.
|
||||
- pcm_settings - [path, int(x), int(y), int(z)];
|
||||
Enable [PCM](https://github.com/opcm/pcm.git) measurements on Target side.
|
||||
Measurements include CPU, memory and power consumption. "path" points to a
|
||||
|
@ -384,10 +384,7 @@ class Target(Server):
|
||||
self.pm_delay = 0
|
||||
self.pm_interval = 0
|
||||
self.pm_count = 1
|
||||
self.enable_sar = False
|
||||
self.sar_delay = 0
|
||||
self.sar_interval = 0
|
||||
self.sar_count = 0
|
||||
self.enable_sar = True
|
||||
self.enable_pcm = False
|
||||
self.pcm_dir = ""
|
||||
self.pcm_delay = 0
|
||||
@ -416,8 +413,8 @@ class Target(Server):
|
||||
self.enable_pm, self.pm_delay, self.pm_interval, self.pm_count = target_config["pm_settings"]
|
||||
# Normalize pm_count - <= 0 means to loop indefinitely so let's avoid that to not block forever
|
||||
self.pm_count = self.pm_count if self.pm_count > 0 else 1
|
||||
if "sar_settings" in target_config:
|
||||
self.enable_sar, self.sar_delay, self.sar_interval, self.sar_count = target_config["sar_settings"]
|
||||
if "enable_sar" in target_config:
|
||||
self.enable_sar = target_config["sar_settings"]
|
||||
if "pcm_settings" in target_config:
|
||||
self.enable_pcm = True
|
||||
self.pcm_dir, self.pcm_delay, self.pcm_interval, self.pcm_count = target_config["pcm_settings"]
|
||||
@ -493,17 +490,17 @@ class Target(Server):
|
||||
ip_bdev_map.append((ip, c))
|
||||
return ip_bdev_map
|
||||
|
||||
def measure_sar(self, results_dir, sar_file_prefix):
|
||||
def measure_sar(self, results_dir, sar_file_prefix, ramp_time, run_time):
|
||||
cpu_number = os.cpu_count()
|
||||
sar_idle_sum = 0
|
||||
sar_output_file = os.path.join(results_dir, sar_file_prefix + ".txt")
|
||||
sar_cpu_util_file = os.path.join(results_dir, ".".join([sar_file_prefix + "cpu_util", "txt"]))
|
||||
|
||||
self.log.info("Waiting %d seconds for ramp-up to finish before measuring SAR stats" % self.sar_delay)
|
||||
time.sleep(self.sar_delay)
|
||||
self.log.info("Waiting %d seconds for ramp-up to finish before measuring SAR stats" % ramp_time)
|
||||
time.sleep(ramp_time)
|
||||
self.log.info("Starting SAR measurements")
|
||||
|
||||
out = self.exec_cmd(["sar", "-P", "ALL", "%s" % self.sar_interval, "%s" % self.sar_count])
|
||||
out = self.exec_cmd(["sar", "-P", "ALL", "%s" % 1, "%s" % run_time])
|
||||
with open(os.path.join(results_dir, sar_output_file), "w") as fh:
|
||||
for line in out.split("\n"):
|
||||
if "Average" in line:
|
||||
@ -1562,7 +1559,7 @@ if __name__ == "__main__":
|
||||
threads.append(t)
|
||||
if target_obj.enable_sar:
|
||||
sar_file_prefix = "%s_%s_%s_sar" % (block_size, rw, io_depth)
|
||||
t = threading.Thread(target=target_obj.measure_sar, args=(args.results, sar_file_prefix))
|
||||
t = threading.Thread(target=target_obj.measure_sar, args=(args.results, sar_file_prefix, fio_ramp_time, fio_run_time))
|
||||
threads.append(t)
|
||||
|
||||
if target_obj.enable_pcm:
|
||||
@ -1579,7 +1576,7 @@ if __name__ == "__main__":
|
||||
if target_obj.enable_bandwidth:
|
||||
bandwidth_file_name = "_".join(["bandwidth", str(block_size), str(rw), str(io_depth)])
|
||||
bandwidth_file_name = ".".join([bandwidth_file_name, "csv"])
|
||||
t = threading.Thread(target=target_obj.measure_network_bandwidth, args=(args.results, bandwidth_file_name,))
|
||||
t = threading.Thread(target=target_obj.measure_network_bandwidth, args=(args.results, bandwidth_file_name))
|
||||
threads.append(t)
|
||||
|
||||
if target_obj.enable_dpdk_memory:
|
||||
|
Loading…
Reference in New Issue
Block a user