{"id":18875278,"url":"https://github.com/opencomputeproject/ocp-diag-ssd-qual","last_synced_at":"2025-09-04T05:30:33.311Z","repository":{"id":240006749,"uuid":"800568127","full_name":"opencomputeproject/ocp-diag-ssd-qual","owner":"opencomputeproject","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-20T16:26:08.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-05T02:11:07.584Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencomputeproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-14T15:25:29.000Z","updated_at":"2024-07-08T01:33:11.000Z","dependencies_parsed_at":"2024-05-16T08:57:05.000Z","dependency_job_id":"f7b63d19-ab3c-4d2f-84ad-48cf93ef8b7d","html_url":"https://github.com/opencomputeproject/ocp-diag-ssd-qual","commit_stats":null,"previous_names":["opencomputeproject/ocp-diag-ssd-qual"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/opencomputeproject/ocp-diag-ssd-qual","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencomputeproject%2Focp-diag-ssd-qual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencomputeproject%2Focp-diag-ssd-qual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencomputeproject%2Focp-diag-ssd-qual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencomputeproject%2Focp-diag-ssd-qual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencomputeproject","download_url":"https://codeload.github.com/opencomputeproject/ocp-diag-ssd-qual/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencomputeproject%2Focp-diag-ssd-qual/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273555592,"owners_count":25126345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T06:06:48.421Z","updated_at":"2025-09-04T05:30:32.982Z","avatar_url":"https://github.com/opencomputeproject.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ocp-diag-ssd-qual\n\nStorage diagnostic\n\nfio is a Linux utility that evaluates storage performance. This repo contains\nPython scripts that turn fio into an OCP-compliant diagnostic.\n\nUsage:\nTo run the diag do the following:\n1. Install fio on your hardware.\n2. Install all the dependencies specified in requirements.txt.\n3. Run the diag with fio config files describing your test scenario.\n\nFor Debian-based operating systems the procedure above may look as follows:\n1. apt install fio nvme-cli\n2. git clone https://github.com/opencomputeproject/ocp-diag-ssd-qual.git\n3. cd ocp-diag-ssd-qual/\n4. python3 -m venv .\n5. source bin/activate\n6. pip install -r requirements.txt\n\nRunning the tests:\nBasic IO test:\nThis test consists of four steps:\n1. Sequential write entire device with 8KiB blocksize, 1024 queue depth, with known data pattern\n2. Sequential read verify entire device with 8KiB blocksize, 1024 queue depth\n3. Sequential read verify entire device with 4KiB blocksize, 1024 queue depth\n4. Random read verify with 4KiB blocksize for 4 minutes, 1024 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/basic_io.json\n\nIOPS test:\nThis test consists of two sequential (run one after another) steps:\n1. Random read with 4KiB blocksize for 2 minutes, 256 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/iops_rd.json\n2. Random write with 4KiB blocksize for 2 minutes, 256 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/iops_wr.json\n\nBandwidth test:\nThis test consists of two sequince steps:\n1. Sequential read with 128KiB blocksize, 256 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/bandwidth_rd.json\n2. Sequential write with 128KiB blocksize, 256 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/bandwidth_wr.json\n\nMixed workload test:\nPrerequisites: user preconditions a device before running the test. Typical\nscenario is to use the prepopulated device with 25%/50/75% fullness. Depending\non this the device's performance characteristics may vary. A user has to specify\nthe expected performance targets for p95, p99, p999 and bandwidth numbers.\n1. Random write and read with 8Kib blocksize, 1024 queue depth\npython3 -m pydiags.diags.basic_io.basic_io_diag  --dut=/path/to/your/device --playbook=pydiags/configs/mixed_workload_rdwr.json\n\n\nConfig files.\nConfig file contains scenarios described in JSON format. It has required field\n\"test_steps\" that sets the sequince of test steps. Every step is a separate fio\nconfig file. So that you can create your own test scenarios with arbitrary\ncomplexity. There's an optional field \"benchmark_targets\" that specifies which\nfile to use to evaluate performance characteristics of the device under test.\nFor test targets you can specify the test name and the workloads. Each workload\ncan have different targets for different workload types - read, write, trim.\nTo evaluate bandwidth we should use \"bwMbytesPerSec\" field. For latencies we\nhave several options that can be used simultaneously - lat50thUsec,\nlat95thUsec, lat99thUsec, lat999thUsec, lat9999thUsec, latMaxUsec, latMeanUsec.\nSee examples in configs folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencomputeproject%2Focp-diag-ssd-qual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencomputeproject%2Focp-diag-ssd-qual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencomputeproject%2Focp-diag-ssd-qual/lists"}