As an example of a target workflow, if you decided you want to enable the workflow of Linux kernel development, to get the configured version of Linux on the systems we just brought up, all you have to run is:
make linuxTo verify the kernel on it:
make unamekdevops supports A/B testing with different kernel versions when
KDEVOPS_BASELINE_AND_DEV is enabled. This allows you to compare performance
or behavior between different kernel versions across baseline and development nodes.
When A/B testing is enabled, you can choose between two approaches:
Use the same kernel tree and reference for both baseline and dev nodes:
A/B kernel testing configuration (BOOTLINUX_AB_SAME_REF) [Y/n/?]
This is useful for testing configuration changes or different test parameters with identical kernels.
Use different kernel references for baseline and dev nodes:
A/B kernel testing configuration
1. Use same kernel reference for baseline and dev (BOOTLINUX_AB_SAME_REF)
> 2. Use different kernel references for baseline and dev (BOOTLINUX_AB_DIFFERENT_REF)
This enables testing between different kernel versions, commits, or branches.
When using different references, configure:
- Development kernel tree URL: Git repository (defaults to baseline tree)
- Development kernel reference: Branch, tag, or commit (e.g., "v6.8", "linux-next")
- Development kernel release/local version: Custom version strings for identification
make linux # Build and install kernels for all nodesWhen A/B testing with different references is enabled, this automatically:
- Builds and installs baseline kernel on baseline nodes
- Builds and installs development kernel on dev nodes
- Leaves the working directory with the dev kernel checked out
make linux-baseline # Build and install kernel for baseline nodes only
make linux-dev # Build and install kernel for dev nodes onlyThese targets are available when KDEVOPS_BASELINE_AND_DEV=y and allow
selective building and installation.
Compare v6.7 (baseline) vs v6.8 (development):
# Configure baseline kernel
menuconfig → Workflows → Linux kernel → Git tree to clone: linus
Reference to use: v6.7
# Configure A/B testing
menuconfig → Workflows → Linux kernel → A/B kernel testing
→ Use different kernel references
→ Development kernel reference: v6.8
make bringup # Provision baseline and dev nodes
make linux # Install v6.7 on baseline, v6.8 on dev
make fstests # Run tests on both kernel versions
make fstests-compare # Compare results between versionsCompare stable vs linux-next:
# Baseline: stable kernel
menuconfig → Reference to use: v6.8
# Development: linux-next
menuconfig → A/B kernel testing → Development kernel reference: linux-next
make linux-baseline # Install stable kernel on baseline nodes
make linux-dev # Install linux-next on dev nodesTest specific commits during bisection:
# Update development reference for bisection
menuconfig → Development kernel reference: abc123def
make linux-dev # Install bisection commit on dev nodes
# Run tests and analyze resultsAfter running make linux with different references:
- The Linux source directory contains the development kernel checkout
- Both baseline and dev nodes have their respective kernels installed
- Use
git log --oneline -5to verify the current checkout
To switch the working directory to baseline:
git checkout v6.7 # Switch to baseline referenceA/B kernel testing integrates seamlessly with all kdevops testing workflows:
# Run fstests with kernel comparison
make linux # Install different kernels
make fstests # Test both kernel versions
make fstests-compare # Generate comparison analysis
# Run fio-tests with kernel comparison
make linux # Install different kernels
make fio-tests # Performance test both kernels
make fio-tests-compare # Compare performance metrics
# Run sysbench with kernel comparison
make linux # Install different kernels
make sysbench # Database tests on both kernels- Version Identification: Use descriptive kernel release versions to distinguish builds
- Sequential Testing: Install kernels before running test workflows
- Result Organization: Use baseline/dev labels in test result analysis
- Git Management: Keep track of which reference is currently checked out
- Systematic Comparison: Use
*-comparetargets for meaningful analysis
- Ensure both kernel references are valid and accessible
- Check that build dependencies are installed on all nodes
- Verify git repository permissions and network connectivity
- Use different
kernelreleaseandlocalversionsettings for clear identification - Check
/bootdirectory for kernel installation conflicts - Verify GRUB configuration after kernel installation
- Confirm
KDEVOPS_BASELINE_AND_DEV=yis enabled - Verify baseline and dev node groups exist in inventory
- Check ansible host patterns with
make linux-baseline HOSTS=baseline