health
storage-performance
Extended description
The cpd-cli
health
storage-performance command uses the Kubernetes Storage Performance tool to collect storage
performance metrics from your Red Hat®
OpenShift® Container Platform
cluster.
cpd-cli
health
storage-performance command checks the I/O performance of your
storage by measuring:- Disk latency
- Disk throughput
For more information about I/O performance requirements, see Disk requirements in the IBM® Software Hub hardware requirements.
cpd-cli
health
storage-performance command creates resources on your cluster.
You can run the cleanup.sh script to list and delete the resources.Prerequisites
Before you run the cpd-cli
health
storage-performance command:
- Source your installation environment variables script.
-
Log in to Red Hat OpenShift Container Platform as a cluster administrator.
${OC_LOGIN}Remember:OC_LOGINis an alias for theoc logincommand. - If you pull images from a private container registry, complete Pulling the required image from a private container registry.
- Set the
STORAGE_PERF_NSenvironment variable to the name of the project where you want to create the resources that are required for the storage performance tests.The recommended project name is
ibm-storage-perf.export STORAGE_PERF_NS=<project-name>If you specify a project that does not exist, the
storage-performancecommand creates the project on your cluster. - Set the
IMAGE_LOCATIONenvironment variable based on the registry that your cluster pulls images from:- IBM Entitled Registry
-
export IMAGE_LOCATION=icr.io - Private container registry
-
export IMAGE_LOCATION=${PRIVATE_REGISTRY_LOCATION}
- Set the following environment variables based on the credentials that you want to use to
authenticate.Important: You must provide the credentials for a cluster administrator.
- Username and password
-
export STG_PERF_USERNAME=${OCP_USERNAME} export STG_PERF_PASSWORD=${OCP_PASSWORD} export STG_PERF_TOKEN="<not-specified>" export STG_PERF_API_KEY="<not-specified>" - Token
-
export STG_PERF_USERNAME="<required>" export STG_PERF_PASSWORD="<required>" export STG_PERF_TOKEN=${OCP_TOKEN} export STG_PERF_API_KEY="<not-specified>" - API key
-
export STG_PERF_USERNAME="<required>" export STG_PERF_PASSWORD="<required>" export STG_PERF_TOKEN="<not-specified>" export STG_PERF_API_KEY=<enter-your-api-key>
- Set the following environment variables to identify the cluster where you are running the
storage-performancecommand. This information is included in the report that is generated by the command:- Set the
CLUSTER_INFRAenvironment variable based on the infrastructure where your cluster is hosted.Choose a value that is meaningful to you, such as
ibmcloud,vmware, orfusion-hci.export CLUSTER_INFRA=<infra-type> - Set the
CLUSTER_NAMEenvironment variable to the name that you use to identify the cluster:export CLUSTER_NAME=<cluster-name> - Set the
CLUSTER_STORAGEenvironment variable based on the type of persistent storage that you use.Choose a value that is meaningful to you, such as
fusion-data-foundation,netapp,ebs-efs,nutanixexport CLUSTER_STORAGE=<persistent-storage-type>
- Set the
- Change to the directory on your workstation where you want to create the param.yml file.
- Create a param.yml file based on the tests that you want to run:
Minimum required metrics
cat << EOF > ./param.yml # OCP Parameters ocp_url: ${OCP_URL} ocp_username: ${STG_PERF_USERNAME} ocp_password: ${STG_PERF_PASSWORD} ocp_token: ${STG_PERF_TOKEN} ocp_apikey: ${STG_PERF_API_KEY} storageClass_ReadWriteOnce: ${STG_CLASS_BLOCK} storageClass_ReadWriteMany: ${STG_CLASS_FILE} run_storage_perf: true arch: ${IMAGE_ARCH} ############################ STORAGE PERFORMANCE PARAMETERS START ####################### # vars file for roles/storage-perf-test storage_perf_namespace: ${STORAGE_PERF_NS} logfolder: '.logs' imageurl: ${IMAGE_LOCATION}/cpopen/cpd/k8s-storage-perf:${VERSION} cluster_infrastructure: ${CLUSTER_INFRA} cluster_name: ${CLUSTER_NAME} storage_type: ${CLUSTER_STORAGE} # To run the performace jobs on a dedicated compute nodes, set the node label which meet the criteria. # The idea is to gather performance data when the jobs are running remotely from a storage node. # A cluster administrator can label a node by running this query with appropriate label key/value: # oc label node <node name> "<label_key>=<label_value>" --overwrite dedicated_compute_node: label_key: "<optional>" label_value: "<optional>" # The size of persistent volume claims (PVCs) for ReadWriteMany (RWX) storage classes. # If your storage provider offers different storage tiers or if the volume size limits the IOPS capacity, # follow the guidance from your storage provider to ensure you have sufficient IOPS. rwx_storagesize: 10Gi # The size of persistent volume claims (PVCs) for ReadWriteOnce (RWO) storage classes. # If your storage provider offers different storage tiers or if the volume size limits the IOPS capacity, # follow the guidance from your storage provider to ensure you have sufficient IOPS. rwo_storagesize: 10Gi # Do not change the file_extra_flags setting. You must use dsync to ensure that the output of the # storage performance tool is accurate. file_extra_flags: dsync #sysbench random read sysbench_random_read: false rread_threads: 8 # 1,4,8,16 rread_fileTotalSize: 128m rread_fileNum: 128 rread_fileBlockSize: 4k # 4k,8k,16k #sysbench random write sysbench_random_write: true rwrite_threads: 8 # 1,4,8,16 rwrite_fileTotalSize: 4096m rwrite_fileNum: 4 rwrite_fileBlockSize: 4k # 4k,8k,16k #sysbench sequential read sysbench_sequential_read: false sread_threads: 2 # 1,2 sread_fileTotalSize: 4096m sread_fileNum: 4 sread_fileBlockSize: 1g # 512m,1g #sysbench sequential write sysbench_sequential_write: true swrite_threads: 2 # 1,2 swrite_fileTotalSize: 4096m swrite_fileNum: 4 swrite_fileBlockSize: 1g # 512m,1g ############################ STORAGE PERFORMANCE PARAMETERS END ######################### EOF
Minimum required metrics and write metrics
cat << EOF > ./param.yml # OCP Parameters ocp_url: ${OCP_URL} ocp_username: ${STG_PERF_USERNAME} ocp_password: ${STG_PERF_PASSWORD} ocp_token: ${STG_PERF_TOKEN} ocp_apikey: ${STG_PERF_API_KEY} storageClass_ReadWriteOnce: ${STG_CLASS_BLOCK} storageClass_ReadWriteMany: ${STG_CLASS_FILE} run_storage_perf: true arch: ${IMAGE_ARCH} ############################ STORAGE PERFORMANCE PARAMETERS START ####################### # vars file for roles/storage-perf-test storage_perf_namespace: ${STORAGE_PERF_NS} logfolder: '.logs' imageurl: ${IMAGE_LOCATION}/cpopen/cpd/k8s-storage-perf:${VERSION} cluster_infrastructure: ${CLUSTER_INFRA} cluster_name: ${CLUSTER_NAME} storage_type: ${CLUSTER_STORAGE} # To run the performace jobs on a dedicated compute nodes, set the node label which meet the criteria. # The idea is to gather performance data when the jobs are running remotely from a storage node. # A cluster administrator can label a node by running this query with appropriate label key/value: # oc label node <node name> "<label_key>=<label_value>" --overwrite dedicated_compute_node: label_key: "<optional>" label_value: "<optional>" rwx_storagesize: 10Gi rwo_storagesize: 10Gi file_extra_flags: dsync #sysbench random read sysbench_random_read: false rread_threads: 1,4,8,16 rread_fileTotalSize: 128m rread_fileNum: 128 rread_fileBlockSize: 4k # 4k,8k,16k #sysbench random write sysbench_random_write: true rwrite_threads: 1,4,8,16 rwrite_fileTotalSize: 4096m rwrite_fileNum: 4 rwrite_fileBlockSize: 4k # 4k,8k,16k #sysbench sequential read sysbench_sequential_read: false sread_threads: 1,2 sread_fileTotalSize: 4096m sread_fileNum: 4 sread_fileBlockSize: 1g # 512m,1g #sysbench sequential write sysbench_sequential_write: true swrite_threads: 1,2 swrite_fileTotalSize: 4096m swrite_fileNum: 4 swrite_fileBlockSize: 1g # 512m,1g ############################ STORAGE PERFORMANCE PARAMETERS END ######################### EOF
Minimum required metrics, write metrics, and read metrics
cat << EOF > ./param.yml # OCP Parameters ocp_url: ${OCP_URL} ocp_username: ${STG_PERF_USERNAME} ocp_password: ${STG_PERF_PASSWORD} ocp_token: ${STG_PERF_TOKEN} ocp_apikey: ${STG_PERF_API_KEY} storageClass_ReadWriteOnce: ${STG_CLASS_BLOCK} storageClass_ReadWriteMany: ${STG_CLASS_FILE} run_storage_perf: true arch: ${IMAGE_ARCH} ############################ STORAGE PERFORMANCE PARAMETERS START ####################### # vars file for roles/storage-perf-test storage_perf_namespace: ${STORAGE_PERF_NS} logfolder: '.logs' imageurl: ${IMAGE_LOCATION}/cpopen/cpd/k8s-storage-perf:${VERSION} cluster_infrastructure: ${CLUSTER_INFRA} cluster_name: ${CLUSTER_NAME} storage_type: ${CLUSTER_STORAGE} # To run the performace jobs on a dedicated compute nodes, set the node label which meet the criteria. # The idea is to gather performance data when the jobs are running remotely from a storage node. # A cluster administrator can label a node by running this query with appropriate label key/value: # oc label node <node name> "<label_key>=<label_value>" --overwrite dedicated_compute_node: label_key: "<optional>" label_value: "<optional>" rwx_storagesize: 10Gi rwo_storagesize: 10Gi file_extra_flags: dsync #sysbench random read sysbench_random_read: true rread_threads: 1,4,8,16 rread_fileTotalSize: 128m rread_fileNum: 128 rread_fileBlockSize: 4k,8k,16k #sysbench random write sysbench_random_write: true rwrite_threads: 1,4,8,16 rwrite_fileTotalSize: 4096m rwrite_fileNum: 4 rwrite_fileBlockSize: 4k,8k,16k #sysbench sequential read sysbench_sequential_read: true sread_threads: 1,2 sread_fileTotalSize: 4096m sread_fileNum: 4 sread_fileBlockSize: 512m,1g #sysbench sequential write sysbench_sequential_write: true swrite_threads: 1,2 swrite_fileTotalSize: 4096m swrite_fileNum: 4 swrite_fileBlockSize: 512m,1g ############################ STORAGE PERFORMANCE PARAMETERS END ######################### EOF
Pulling the required image from a private container registry
The k8s-storage-perf image is automatically mirrored when
you mirror the IBM Software
Hub images to your private
container registry.
Before you run the cpd-cli
health
storage-performance command, you must authorize the client
runtime environment on your workstation to pull the k8s-storage-perf image from the private container registry:
- Ensure that Docker or Podman is running on the client workstation.
- Source your installation environment variables script.
- Authenticate to your private container registry:
- Docker
docker login ${PRIVATE_REGISTRY_LOCATION} \ -u ${PRIVATE_REGISTRY_PULL_USER} \ -p ${PRIVATE_REGISTRY_PULL_PASSWORD} - Podman
podman login ${PRIVATE_REGISTRY_LOCATION} \ -u ${PRIVATE_REGISTRY_PULL_USER} \ -p ${PRIVATE_REGISTRY_PULL_PASSWORD}
- Docker
To use the k8s-storage-perf image from your private
container registry, you must specify the following options when you run the cpd-cli
health
storage-performance command:
--image-prefix--image-tag
For example:
cpd-cli health storage-performance \
--image-prefix=${PRIVATE_REGISTRY_LOCATION} \
--image-tag=${VERSION}.${IMAGE_ARCH} \
--param=param.yml
Syntax
cpd-cli health storage-performance \
--param <path of param.yml file>
[--image-prefix=<image-registry-prefix>] \
[--image-tag=<image-tag>
Arguments
The command has no arguments.
Options
| Option | Description |
|---|---|
--image-prefix |
Specify the registry that the
image should be pulled from.
|
--image-tag |
Specify the tag that identifies
the image in the repository. The tag must exist on the
|
--param |
The path of the YAML that
defines the parameters required to run the storage performance
test.
|
Cleanup
Run a cleanup script to remove any resources that were created after you ran the cpd-cli
health
storage-performance command. The cleanup.sh
script takes the following arguments:
cleanup.sh script:-
Save the following script file as a shell script, cleanup.sh :
#!/usr/bin/env sh HELP=" This script lists storage test resources in the supplied namespace. If the '--delete' flag is provided, it removes those resources. USAGE: cleanup.sh --namespace <namespace> <--delete> FLAGS: -c | --command: (Required) The cpd-cli storage command resources to list and/or clean up, storage-performance|storage-validation. --delete: Delete storage test resources created in --namespace. -n | --namespace: (Required) The namespace specified in param.yml, storage_validation_namespace|storage_perf_namespace. -h | --help: Show help for cleanup.sh " NAMESPACE= COMMAND= DELETE_RESOURCES="0" CM_SEARCH= JOB_SEARCH= PVC_SEARCH= LOCAL_CONTAINER= log() { prefix="" case "${1}" in info) prefix="[INFO ]" ;; debug) prefix="[DEBUG]" ;; error) prefix="[ERROR]" ;; *) prefix="" ;; esac echo "${prefix} ${2}" } print_usage() { log noop "${HELP}" } set_vars() { if [ "${COMMAND}" == "storage-performance" ]; then PVC_SEARCH="pvc-sysbench-rwo\|pvc-sysbench-rwx" JOB_SEARCH="sysbench-random-\|sysbench-sequential-" LOCAL_CONTAINER="k8s-storage-perf" fi if [ "${COMMAND}" == "storage-validation" ]; then CM_SEARCH="consumer\|producer" PVC_SEARCH="readiness-readwritemany\|readiness-readwriteonce" JOB_SEARCH="readiness-consumer\|readiness-create\|readiness-edit\|readiness-file\|readiness-mount\|readiness-producer\|readiness-read" LOCAL_CONTAINER="k8s-storage-val" fi } list() { echo "\nListing ${COMMAND} cluster resources in namespace: ${NAMESPACE}" if [ -n "${CM_SEARCH}" ]; then echo "\nCONFIGMAPS:" oc get cm -n ${NAMESPACE} | sed -n "1p;/${CM_SEARCH}/p" fi echo "\nPVCS:" oc get pvc -n ${NAMESPACE} | sed -n "1p;/${PVC_SEARCH}/p" echo "\nJOBS:" oc get job -n ${NAMESPACE} | sed -n "1p;/${JOB_SEARCH}/p" echo "\nLocal ${COMMAND} playbook container:" podman ps -a --filter="name=${LOCAL_CONTAINER}" echo "" } delete_resources() { echo "\nDeleting ${COMMAND} cluster resources from namespace: ${NAMESPACE}" oc get job -n ${NAMESPACE} -o name | grep "${JOB_SEARCH}" | xargs -I % -n 1 oc delete % -n ${NAMESPACE} if [ -n "${CM_SEARCH}" ]; then oc get cm -n ${NAMESPACE} -o name | grep "${CM_SEARCH}" | xargs -I % -n 1 oc delete % -n ${NAMESPACE} fi sleep 10 oc get pvc -n ${NAMESPACE} -o name | grep "${PVC_SEARCH}" | xargs -I % -n 1 oc delete % -n ${NAMESPACE} echo "\nRemoving local ${COMMAND} container:" podman rm -f ${LOCAL_CONTAINER} echo "" } run() { # confirm required flags have been provided if [ -z "${NAMESPACE}" ]; then log error "You must specify the --namespace option. For example: --namespace <project-name>" print_usage exit 1 fi if [ "${COMMAND}" != "storage-performance" ] && [ "${COMMAND}" != "storage-validation" ]; then log error "You must specify the --command option. For example: --command <storage-performance|storage-validation>" print_usage exit 1 fi # set command-specific variables set_vars # show resources list # delete storage test resources and re-run list to confirm deletion if [ "${DELETE_RESOURCES}" -eq "1" ]; then delete_resources fi exit 0 } # Parse CLI args while [ "${1-}" != "" ]; do case $1 in --namespace | -n) shift NAMESPACE="${1}" ;; --command | -c) shift COMMAND="${1}" ;; --delete) shift DELETE_RESOURCES="1" ;; --help | -h) print_usage 0 exit 0 ;; *) echo "Invalid Option ${1}" >&2 exit 1 ;; esac shift done run
- If you are using a Mac or Linux® client workstation, update the file permissions
so you can run the script:
chmod +x % ./cleanup.sh
| Argument | Description |
|---|---|
|
|
--delete |
|
-n--namespace
|
|
-h--help |
Show help for cleanup.sh |
Examples
- Standard run.
-
cpd-cli health storage-performance \ --param param.ymlSample output.
% cpd-cli health storage-performance --param=param-perf.yaml INFO[0000] health event=Information info="Creating directory /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:10.712376Z Creating directory /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance INFO[0000] manage(olm-utils) event=Information info="Checking podman or docker" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:10.713314Z Checking podman or docker INFO[0000] health event=Information info="Dockerexe: podman" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:10.891820Z Dockerexe: podman INFO[0000] health event=Information info="Checking if the container image exists locally or not" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:11.142675Z Checking if the container image exists locally or not INFO[0000] health event=Information info="Container image icr.io/cpopen/cpd/k8s-storage-perf:5.1.1 is present" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:11.395063Z Container image icr.io/cpopen/cpd/k8s-storage-perf:5.1.1 is present INFO[0000] health event=Information info="Start the k8s-storage-perf container" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:11.395101Z Start the k8s-storage-perf container INFO[0002] health event=Information info="Run command: podman run -d --name k8s-storage-perf --platform linux/amd64 -v /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance:/tmp/work-dir icr.io/cpopen/cpd/k8s-storage-perf:5.1.1" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:05:13.201469Z Run command: podman run -d --name k8s-storage-perf --platform linux/amd64 -v /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance:/tmp/work-dir icr.io/cpopen/cpd/k8s-storage-perf:5.1.1 PLAY [localhost] *************************************************************** TASK [ocp login using creds] *************************************************** changed: [localhost] TASK [ocp login using token] *************************************************** skipping: [localhost] TASK [ocp login using apikey] ************************************************** skipping: [localhost] TASK [debug] ******************************************************************* ok: [localhost] => { "login_creds.stdout_lines": [ "WARNING: Using insecure TLS client config. Setting this option is not supported!", "", "Login successful.", "", "You have access to 91 projects, the list has been suppressed. You can list all projects with 'oc projects'", "", "Using project \"default\".", "Welcome! See 'oc help' to get started." ] } TASK [debug] ******************************************************************* skipping: [localhost] TASK [debug] ******************************************************************* skipping: [localhost] TASK [Storage Performance] ***************************************************** included: storage-perf-test for localhost TASK [storage-perf-test : Setup PVCs to run test on] *************************** changed: [localhost] TASK [storage-perf-test : Wait few seconds for the PVC] ************************ Pausing for 60 seconds ok: [localhost] TASK [storage-perf-test : Create logs directory] ******************************* changed: [localhost] TASK [storage-perf-test : Run sysbench random read RWO test] ******************* skipping: [localhost] TASK [storage-perf-test : Get logs of the sysbench random read pod for RWO] **** skipping: [localhost] TASK [storage-perf-test : Save Log to local file] ****************************** skipping: [localhost] TASK [storage-perf-test : Run sysbench random write RWO test] ****************** changed: [localhost] TASK [storage-perf-test : Get logs of the sysbench random write pod for RWO] *** ok: [localhost] TASK [storage-perf-test : Save random write Log to local file] ***************** changed: [localhost] TASK [storage-perf-test : Run sysbench sequential read rwo test] *************** skipping: [localhost] TASK [storage-perf-test : Get logs of the sysbench sequential read pod for RWO] *** skipping: [localhost] TASK [storage-perf-test : Save Log to local file] ****************************** skipping: [localhost] TASK [storage-perf-test : Run sysbench sequential write rwo test] ************** changed: [localhost] TASK [storage-perf-test : Get logs of the sysbench sequential write pod for RWO] *** ok: [localhost] TASK [storage-perf-test : Save sequential write Log to local file] ************* changed: [localhost] TASK [storage-perf-test : Run sysbench random read RWX test] ******************* skipping: [localhost] TASK [storage-perf-test : Get logs of the sysbench random read pod for RWX] **** skipping: [localhost] TASK [storage-perf-test : Save Log to local file] ****************************** skipping: [localhost] TASK [storage-perf-test : Run sysbench random write RWX test] ****************** changed: [localhost] TASK [storage-perf-test : Get logs of the sysbench random write pod for RWX] *** ok: [localhost] TASK [storage-perf-test : Save random write Log to local file] ***************** changed: [localhost] TASK [storage-perf-test : Run sysbench sequential read RWX test] *************** skipping: [localhost] TASK [storage-perf-test : Get logs of the sysbench sequential read pod for RWX] *** skipping: [localhost] TASK [storage-perf-test : Save Log to local file] ****************************** skipping: [localhost] TASK [storage-perf-test : Run sysbench sequential write rwx test] ************** changed: [localhost] TASK [storage-perf-test : Get logs of the sysbench sequential write pod for RWX] *** ok: [localhost] TASK [storage-perf-test : Save sequential write Log to local file] ************* changed: [localhost] TASK [storage-perf-test : Create CSV file] ************************************* changed: [localhost] TASK [storage-perf-test : Output node lists to CSV] **************************** changed: [localhost] TASK [storage-perf-test : Output pod lists to CSV] ***************************** changed: [localhost] TASK [storage-perf-test : Output job lists to CSV] ***************************** changed: [localhost] TASK [storage-perf-test : Print to file] *************************************** changed: [localhost] TASK [storage-perf-test : Package storage-perf.tar] **************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=24 changed=17 unreachable=0 failed=0 skipped=16 rescued=0 ignored=0 INFO[0340] health event=Information info="Run command: podman cp k8s-storage-perf:/opt/ansible/storage-perf.tar /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance" trace=9e814e81-5e9d-4c76-99ac-764de307a98b [INFO] 2025-02-24T20:10:50.977622Z Run command: podman cp k8s-storage-perf:/opt/ansible/storage-perf.tar /Users/test/cpd-cli-darwin-EE-14.1.1-1650/cpd-cli-workspace/Health/Storage/Performance
- Example of the
cleanup.shscript to list resources -
The storage_perf_namespace namespace ibm-stor-perf is the namespace provided in the param.yml file:
% ./cleanup.sh --namespace ibm-stor-perf --command storage-performance - Example of the
cleanup.shscript to delete resources -
% ./cleanup.sh --namespace ibm-stor-perf --command storage-performance --delete - Example output from the
cleanup.shscript to delete resources -
% ./cleanup.sh --namespace ibm-stor-perf --command storage-performance --delete Listing storage-performance cluster resources in namespace: ibm-stor-perf PVCS: NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-sysbench-rwo Bound pvc-7591f82d-5ac5-4db8-abcb-209664a68b8c 10Gi RWO ocs-storagecluster-ceph-rbd <unset> 144m pvc-sysbench-rwx Bound pvc-f06523df-0d72-40b4-8d23-e9a4082760e1 10Gi RWX ocs-storagecluster-cephfs <unset> 144m JOBS: NAME STATUS COMPLETIONS DURATION AGE sysbench-random-write-rwo Complete 1/1 45s 143m sysbench-random-write-rwx Complete 1/1 45s 141m sysbench-sequential-write-rwo Complete 1/1 47s 142m sysbench-sequential-write-rwx Complete 1/1 51s 141m Local storage-performance playbook container: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6760f6beaaca icr.io/cpopen/cpd/k8s-storage-perf:5.1.0 2 hours ago Up 2 hours k8s-storage-perf Deleting storage-performance cluster resources from namespace: ibm-stor-perf job.batch "sysbench-random-write-rwo" deleted job.batch "sysbench-random-write-rwx" deleted job.batch "sysbench-sequential-write-rwo" deleted job.batch "sysbench-sequential-write-rwx" deleted persistentvolumeclaim "pvc-sysbench-rwo" deleted persistentvolumeclaim "pvc-sysbench-rwx" deleted Removing local storage-performance container: k8s-storage-perf % ./cleanup.sh --namespace ibm-stor-perf --command storage-performance Listing storage-performance cluster resources in namespace: ibm-stor-perf PVCS: No resources found in ibm-stor-perf namespace. JOBS: No resources found in ibm-stor-perf namespace. Local storage-performance playbook container: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES