public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: Daniel Gomez <da.gomez@kernel.org>
To: Luis Chamberlain <mcgrof@kernel.org>,
	Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
	kdevops@lists.linux.dev
Subject: Re: [PATCH 1/3] fio-tests: add multi-filesystem testing support
Date: Fri, 21 Nov 2025 21:07:17 +0100	[thread overview]
Message-ID: <cf0ac52e-de21-40ac-b8e0-2da3d3394619@kernel.org> (raw)
In-Reply-To: <20251120031530.1439748-2-mcgrof@kernel.org>

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 <mcgrof@kernel.org>
> ---
>  .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.

In short: add the new defconfig option to the ci_workflow list in kdevops.yml.
Make sure the workflow is implemented in .github/actions/test/action.yml,
right now we support blktests, fstests, and selftests. Also ensure the matching
defconfig and .ci/ mappings exist so CI can resolve them correctly.

Clarification: we have 2 CI modes: the quick one for kdevops workflow validation
called "kdevops-ci". And the one used for linux kernel validation called
"linux-ci". That's why the test/action.yml needs to declare TESTS= so it goes
quickly for kdevops-ci test mode. If you also want this to run daily (linux-next
and Linus' latest tag) you can also augment the ci-matrix: strategy: matrix:
ci_workflow on .github/workflows/kdevops.yml. We currently only have support
for blktests.

Hopefully we can use this thread and example for docs and PROMPT. Can you split
the patch so, CI support is added atomically and after the workflow support
is added?

> @@ -0,0 +1,98 @@
> +name: Run fio-tests on self-hosted runner
> +
> +on:
> +  push:
> +    branches:
> +      - '**'
> +  pull_request:
> +    branches:
> +      - '**'
> +  workflow_dispatch:  # Add this for manual triggering of the workflow

  reply	other threads:[~2025-11-21 20:07 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-20  3:15 [PATCH 0/3] fio-test: add filesystem tests Luis Chamberlain
2025-11-20  3:15 ` [PATCH 1/3] fio-tests: add multi-filesystem testing support Luis Chamberlain
2025-11-21 20:07   ` Daniel Gomez [this message]
2025-11-25  0:35     ` Luis Chamberlain
2025-11-20  3:15 ` [PATCH 2/3] fio-tets: add DECLARE_HOSTS support Luis Chamberlain
2025-11-20  3:15 ` [PATCH 3/3] fio-tests: add comprehensive filesystem testing documentation Luis Chamberlain
2025-12-06 16:36 ` [PATCH 0/3] fio-test: add filesystem tests Luis Chamberlain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cf0ac52e-de21-40ac-b8e0-2da3d3394619@kernel.org \
    --to=da.gomez@kernel.org \
    --cc=cel@kernel.org \
    --cc=da.gomez@kruces.com \
    --cc=kdevops@lists.linux.dev \
    --cc=mcgrof@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox