Re: [PATCH 1/3] fio-tests: add multi-filesystem testing support

Luis Chamberlain <[email protected]> Mon, 24 Nov 2025 16:35:10 -0800
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
On Fri, Nov 21, 2025 at 09:07:17PM +0100, Daniel Gomez wrote:
> On 20/11/2025 04.15, Luis Chamberlain wrote:
> > This merges the long-pending fio-tests filesystem support patch that adds
> > comprehensive filesystem-specific performance testing capabilities to
> > kdevops. The implementation allows testing filesystem optimizations,
> > block size configurations, and I/O patterns against actual mounted
> > filesystems rather than just raw block devices.
> > 
> > The implementation follows the proven mmtests architecture patterns with
> > modular Kconfig files and tag-based ansible task organization, avoiding
> > the proliferation of separate playbook files that would make maintenance
> > more complex.
> > 
> > Key filesystem testing features include XFS support with configurable
> > block sizes from 4K to 64K with various sector sizes and modern features
> > like reflink and rmapbt. The ext4 support provides both standard and
> > bigalloc configurations with different cluster sizes. For btrfs, modern
> > features including no-holes, free-space-tree, and compression options
> > are available.
> > 
> > The multi-filesystem section-based testing enables comprehensive
> > performance comparison across different filesystem configurations by
> > creating separate VMs for each configuration. This includes support for
> > XFS block size comparisons, comprehensive XFS block size analysis, and
> > cross-filesystem comparisons between XFS, ext4, and btrfs.
> > 
> > Node generation for multi-filesystem testing uses dynamic detection
> > based on enabled sections, creating separate VM nodes for each enabled
> > section with proper Ansible groups for each filesystem configuration.
> > A/B testing support is included across all configurations.
> > 
> > Results collection and analysis is handled through specialized tooling
> > with performance overview across filesystems, block size performance
> > heatmaps, IO depth scaling analysis, and statistical summaries with CSV
> > exports.
> > 
> > The patch has been updated to work with the current codebase which now
> > uses workflow-specific template includes for host file generation rather
> > than embedding all workflow templates in a single hosts.j2 file. The
> > fio-tests specific template has been enhanced with multi-filesystem
> > support while maintaining backward compatibility with single filesystem
> > testing.
> > 
> > Generated-by: Claude AI
> > Signed-off-by: Luis Chamberlain <[email protected]>
> > ---
> >  .github/workflows/fio-tests.yml               |  98 +++
> >  CLAUDE.md                                     | 401 ++++++++++++
> >  PROMPTS.md                                    | 344 ++++++++++
> >  defconfigs/fio-tests-fs-btrfs-zstd            |  25 +
> >  defconfigs/fio-tests-fs-ext4-bigalloc         |  24 +
> >  defconfigs/fio-tests-fs-ranges                |  24 +
> >  defconfigs/fio-tests-fs-xfs                   |  74 +++
> >  defconfigs/fio-tests-fs-xfs-4k-vs-16k         |  57 ++
> >  defconfigs/fio-tests-fs-xfs-all-blocksizes    |  63 ++
> >  defconfigs/fio-tests-fs-xfs-all-fsbs          |  57 ++
> >  defconfigs/fio-tests-fs-xfs-vs-ext4-vs-btrfs  |  57 ++
> >  defconfigs/fio-tests-quick                    |  74 +++
> >  playbooks/fio-tests-graph-host.yml            |  76 +++
> >  playbooks/fio-tests-graph.yml                 | 168 +++--
> >  playbooks/fio-tests-multi-fs-compare.yml      | 140 ++++
> >  .../fio-tests/fio-multi-fs-compare.py         | 434 +++++++++++++
> >  .../tasks/install-deps/debian/main.yml        |   1 +
> >  .../tasks/install-deps/redhat/main.yml        |   1 +
> >  .../tasks/install-deps/suse/main.yml          |   1 +
> >  playbooks/roles/fio-tests/tasks/main.yaml     | 430 ++++++++++---
> >  .../roles/fio-tests/templates/fio-job.ini.j2  |  31 +-
> >  playbooks/roles/gen_hosts/tasks/main.yml      |  60 ++
> >  .../templates/workflows/fio-tests.j2          |  66 ++
> >  playbooks/roles/gen_nodes/tasks/main.yml      | 100 ++-
> >  workflows/fio-tests/Kconfig                   | 370 ++++++++---
> >  workflows/fio-tests/Kconfig.btrfs             |  87 +++
> >  workflows/fio-tests/Kconfig.ext4              | 114 ++++
> >  workflows/fio-tests/Kconfig.fs                |  75 +++
> >  workflows/fio-tests/Kconfig.xfs               | 170 +++++
> >  workflows/fio-tests/Makefile                  |  65 +-
> >  .../scripts/generate_comparison_graphs.py     | 605 ++++++++++++++++++
> >  .../generate_comprehensive_analysis.py        | 297 +++++++++
> >  workflows/fio-tests/sections.conf             |  47 ++
> >  33 files changed, 4350 insertions(+), 286 deletions(-)
> >  create mode 100644 .github/workflows/fio-tests.yml
> >  create mode 100644 defconfigs/fio-tests-fs-btrfs-zstd
> >  create mode 100644 defconfigs/fio-tests-fs-ext4-bigalloc
> >  create mode 100644 defconfigs/fio-tests-fs-ranges
> >  create mode 100644 defconfigs/fio-tests-fs-xfs
> >  create mode 100644 defconfigs/fio-tests-fs-xfs-4k-vs-16k
> >  create mode 100644 defconfigs/fio-tests-fs-xfs-all-blocksizes
> >  create mode 100644 defconfigs/fio-tests-fs-xfs-all-fsbs
> >  create mode 100644 defconfigs/fio-tests-fs-xfs-vs-ext4-vs-btrfs
> >  create mode 100644 defconfigs/fio-tests-quick
> >  create mode 100644 playbooks/fio-tests-graph-host.yml
> >  create mode 100644 playbooks/fio-tests-multi-fs-compare.yml
> >  create mode 100644 playbooks/python/workflows/fio-tests/fio-multi-fs-compare.py
> >  create mode 100644 workflows/fio-tests/Kconfig.btrfs
> >  create mode 100644 workflows/fio-tests/Kconfig.ext4
> >  create mode 100644 workflows/fio-tests/Kconfig.fs
> >  create mode 100644 workflows/fio-tests/Kconfig.xfs
> >  create mode 100755 workflows/fio-tests/scripts/generate_comparison_graphs.py
> >  create mode 100644 workflows/fio-tests/scripts/generate_comprehensive_analysis.py
> >  create mode 100644 workflows/fio-tests/sections.conf
> > 
> > diff --git a/.github/workflows/fio-tests.yml b/.github/workflows/fio-tests.yml
> > new file mode 100644
> > index 00000000..0a7c0234
> > --- /dev/null
> > +++ b/.github/workflows/fio-tests.yml
> 
> This is not following the current CI modular approach.
> It should be way easier to support a new workflow.
> 
> tree .github/workflows
> .github/workflows
> ├── config-tests.yml
> └── kdevops.yml
> 
> 1 directory, 2 files
> 
> Check kdevops.yml, it has this modular and reusable design. Steps are split
> in actions:
> 
> tree .github/actions
> .github/actions
> ├── archive
> │   └── action.yml
> ├── bringup
> │   └── action.yml
> ├── build-test
> │   └── action.yml
> ├── cleanup
> │   └── action.yml
> ├── configure
> │   └── action.yml
> ├── linux
> │   └── action.yml
> └── test
>     └── action.yml
> 
> 8 directories, 7 files
> 
> I know the documentation is still lacking, but Claude should be able to parse
> the directory structure and understand what's needed.

Indeed! I just copy and pasted your feedback and it did the magic. After
some CI testing I will post patches.

  Luis