Skip to content

Commit 3553034

Browse files
committed
ai: add multi-filesystem testing support for Milvus benchmarks
Extend the AI workflow to support testing Milvus across multiple filesystem configurations simultaneously. This enables comprehensive performance comparisons between different filesystems and their configuration options. Key features: - Dynamic node generation based on enabled filesystem configurations - Support for XFS, EXT4, and BTRFS with various mount options - Per-filesystem result collection and analysis - A/B testing across all filesystem configurations - Automated comparison graphs between filesystems Filesystem configurations: - XFS: default, nocrc, bigtime with various block sizes (512, 1k, 2k, 4k) - EXT4: default, nojournal, bigalloc configurations - BTRFS: default, zlib, lzo, zstd compression options Defconfigs: - ai-milvus-multifs: Test 7 filesystem configs with A/B testing - ai-milvus-multifs-distro: Test with distribution kernels - ai-milvus-multifs-extended: Extended configs (14 filesystems total) Node generation: The system dynamically generates nodes based on enabled filesystem configurations. With A/B testing enabled, this creates baseline and dev nodes for each filesystem (e.g., debian13-ai-xfs-4k and debian13-ai-xfs-4k-dev). Usage: make defconfig-ai-milvus-multifs make bringup # Creates nodes for each filesystem make ai # Setup infrastructure on all nodes make ai-tests # Run benchmarks on all filesystems make ai-results # Collect and compare results This enables systematic evaluation of how different filesystems and their configurations affect vector database performance. Generated-by: Claude AI Signed-off-by: Luis Chamberlain <[email protected]>
1 parent 3dc365b commit 3553034

File tree

38 files changed

+4350
-2296
lines changed

38 files changed

+4350
-2296
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ include scripts/bringup.Makefile
226226
endif
227227

228228
DEFAULT_DEPS += $(ANSIBLE_INVENTORY_FILE)
229-
$(ANSIBLE_INVENTORY_FILE): .config $(ANSIBLE_CFG_FILE) $(KDEVOPS_HOSTS_TEMPLATE)
229+
$(ANSIBLE_INVENTORY_FILE): .config $(ANSIBLE_CFG_FILE) $(KDEVOPS_HOSTS_TEMPLATE) $(KDEVOPS_NODES)
230230
$(Q)ANSIBLE_LOCALHOST_WARNING=False ANSIBLE_INVENTORY_UNPARSED_WARNING=False \
231231
ansible-playbook $(ANSIBLE_VERBOSE) \
232232
$(KDEVOPS_PLAYBOOKS_DIR)/gen_hosts.yml \

defconfigs/ai-milvus-multifs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
CONFIG_GUESTFS=y
2+
CONFIG_LIBVIRT=y
3+
4+
# Disable mirror features for CI/testing
5+
# CONFIG_ENABLE_LOCAL_LINUX_MIRROR is not set
6+
# CONFIG_USE_LOCAL_LINUX_MIRROR is not set
7+
# CONFIG_INSTALL_ONLY_GIT_DAEMON is not set
8+
# CONFIG_MIRROR_INSTALL is not set
9+
10+
CONFIG_WORKFLOWS=y
11+
CONFIG_WORKFLOW_LINUX_CUSTOM=y
12+
13+
CONFIG_BOOTLINUX=y
14+
CONFIG_BOOTLINUX_9P=y
15+
16+
# Enable A/B testing with different kernel references
17+
CONFIG_KDEVOPS_BASELINE_AND_DEV=y
18+
CONFIG_BOOTLINUX_AB_DIFFERENT_REF=y
19+
20+
# AI workflow configuration
21+
CONFIG_WORKFLOWS_TESTS=y
22+
CONFIG_WORKFLOWS_LINUX_TESTS=y
23+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
24+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_AI=y
25+
26+
# Vector database configuration
27+
CONFIG_AI_TESTS_VECTOR_DATABASE=y
28+
CONFIG_AI_VECTOR_DB_MILVUS=y
29+
CONFIG_AI_VECTOR_DB_MILVUS_DOCKER=y
30+
31+
# Enable multi-filesystem testing
32+
CONFIG_AI_MULTIFS_ENABLE=y
33+
CONFIG_AI_ENABLE_MULTIFS_TESTING=y
34+
35+
# Enable dedicated Milvus storage with node-based filesystem
36+
CONFIG_AI_MILVUS_STORAGE_ENABLE=y
37+
CONFIG_AI_MILVUS_USE_NODE_FS=y
38+
39+
# Test XFS with different block sizes
40+
CONFIG_AI_MULTIFS_TEST_XFS=y
41+
CONFIG_AI_MULTIFS_XFS_4K_4KS=y
42+
CONFIG_AI_MULTIFS_XFS_16K_4KS=y
43+
CONFIG_AI_MULTIFS_XFS_32K_4KS=y
44+
CONFIG_AI_MULTIFS_XFS_64K_4KS=y
45+
46+
# Test EXT4 configurations
47+
CONFIG_AI_MULTIFS_TEST_EXT4=y
48+
CONFIG_AI_MULTIFS_EXT4_4K=y
49+
CONFIG_AI_MULTIFS_EXT4_16K_BIGALLOC=y
50+
51+
# Test BTRFS
52+
CONFIG_AI_MULTIFS_TEST_BTRFS=y
53+
CONFIG_AI_MULTIFS_BTRFS_DEFAULT=y
54+
55+
# Performance settings
56+
CONFIG_AI_BENCHMARK_ENABLE_GRAPHING=y
57+
CONFIG_AI_BENCHMARK_ITERATIONS=5
58+
59+
# Dataset configuration for benchmarking
60+
CONFIG_AI_VECTOR_DB_MILVUS_DATASET_SIZE=100000
61+
CONFIG_AI_VECTOR_DB_MILVUS_BATCH_SIZE=10000
62+
CONFIG_AI_VECTOR_DB_MILVUS_NUM_QUERIES=10000
63+
64+
# Container configuration
65+
CONFIG_AI_VECTOR_DB_MILVUS_CONTAINER_IMAGE_2_5=y
66+
CONFIG_AI_VECTOR_DB_MILVUS_MEMORY_LIMIT="8g"
67+
CONFIG_AI_VECTOR_DB_MILVUS_CPU_LIMIT="4.0"
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# AI Multi-Filesystem Performance Testing Configuration (Distro Kernel)
2+
# This configuration enables testing AI workloads across multiple filesystem
3+
# configurations including XFS (4k and 16k block sizes), ext4 (4k and 16k bigalloc),
4+
# and btrfs (default profile) using the distribution kernel without A/B testing.
5+
6+
# Base virtualization setup
7+
CONFIG_LIBVIRT=y
8+
CONFIG_LIBVIRT_MACHINE_TYPE_Q35=y
9+
CONFIG_LIBVIRT_STORAGE_POOL_PATH="/opt/kdevops/libvirt"
10+
CONFIG_LIBVIRT_ENABLE_LARGEIO=y
11+
CONFIG_LIBVIRT_EXTRA_STORAGE_DRIVE_NVME=y
12+
CONFIG_LIBVIRT_EXTRA_STORAGE_DRIVE_SIZE="50GiB"
13+
14+
# Network configuration
15+
CONFIG_LIBVIRT_ENABLE_BRIDGED_NETWORKING=y
16+
CONFIG_LIBVIRT_NET_NAME="kdevops"
17+
18+
# Host configuration
19+
CONFIG_KDEVOPS_HOSTS_TEMPLATE="hosts.j2"
20+
CONFIG_VAGRANT_NVME_DISK_SIZE="50GiB"
21+
22+
# Base system requirements
23+
CONFIG_WORKFLOWS=y
24+
CONFIG_WORKFLOWS_TESTS=y
25+
CONFIG_WORKFLOWS_LINUX_TESTS=y
26+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
27+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_AI=y
28+
29+
# AI Workflow Configuration
30+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_AI=y
31+
CONFIG_AI_TESTS_VECTOR_DATABASE=y
32+
CONFIG_AI_MILVUS_DOCKER=y
33+
CONFIG_AI_VECTOR_DB_TYPE_MILVUS=y
34+
35+
# Milvus Configuration
36+
CONFIG_AI_MILVUS_HOST="localhost"
37+
CONFIG_AI_MILVUS_PORT=19530
38+
CONFIG_AI_MILVUS_DATABASE_NAME="ai_benchmark"
39+
40+
# Test Parameters (optimized for multi-fs testing)
41+
CONFIG_AI_BENCHMARK_ITERATIONS=3
42+
CONFIG_AI_DATASET_1M=y
43+
CONFIG_AI_VECTOR_DIM_128=y
44+
CONFIG_AI_BENCHMARK_RUNTIME="180"
45+
CONFIG_AI_BENCHMARK_WARMUP_TIME="30"
46+
47+
# Query patterns
48+
CONFIG_AI_BENCHMARK_QUERY_TOPK_1=y
49+
CONFIG_AI_BENCHMARK_QUERY_TOPK_10=y
50+
51+
# Batch sizes
52+
CONFIG_AI_BENCHMARK_BATCH_1=y
53+
CONFIG_AI_BENCHMARK_BATCH_10=y
54+
55+
# Index configuration
56+
CONFIG_AI_INDEX_HNSW=y
57+
CONFIG_AI_INDEX_TYPE="HNSW"
58+
CONFIG_AI_INDEX_HNSW_M=16
59+
CONFIG_AI_INDEX_HNSW_EF_CONSTRUCTION=200
60+
CONFIG_AI_INDEX_HNSW_EF=64
61+
62+
# Results and visualization
63+
CONFIG_AI_BENCHMARK_RESULTS_DIR="/data/ai-benchmark"
64+
CONFIG_AI_BENCHMARK_ENABLE_GRAPHING=y
65+
CONFIG_AI_BENCHMARK_GRAPH_FORMAT="png"
66+
CONFIG_AI_BENCHMARK_GRAPH_DPI=300
67+
CONFIG_AI_BENCHMARK_GRAPH_THEME="default"
68+
69+
# Multi-filesystem testing configuration
70+
CONFIG_AI_ENABLE_MULTIFS_TESTING=y
71+
CONFIG_AI_MULTIFS_RESULTS_DIR="/data/ai-multifs-benchmark"
72+
73+
# Enable dedicated Milvus storage with node-based filesystem
74+
CONFIG_AI_MILVUS_STORAGE_ENABLE=y
75+
CONFIG_AI_MILVUS_USE_NODE_FS=y
76+
CONFIG_AI_MILVUS_DEVICE="/dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_kdevops3"
77+
CONFIG_AI_MILVUS_MOUNT_POINT="/data/milvus"
78+
79+
# XFS configurations
80+
CONFIG_AI_MULTIFS_TEST_XFS=y
81+
CONFIG_AI_MULTIFS_XFS_4K_4KS=y
82+
CONFIG_AI_MULTIFS_XFS_16K_4KS=y
83+
CONFIG_AI_MULTIFS_XFS_32K_4KS=y
84+
CONFIG_AI_MULTIFS_XFS_64K_4KS=y
85+
86+
# ext4 configurations
87+
CONFIG_AI_MULTIFS_TEST_EXT4=y
88+
CONFIG_AI_MULTIFS_EXT4_4K=y
89+
CONFIG_AI_MULTIFS_EXT4_16K_BIGALLOC=y
90+
91+
# btrfs configurations
92+
CONFIG_AI_MULTIFS_TEST_BTRFS=y
93+
CONFIG_AI_MULTIFS_BTRFS_DEFAULT=y
94+
95+
# Standard filesystem configuration (for comparison)
96+
CONFIG_AI_FILESYSTEM_XFS=y
97+
CONFIG_AI_FILESYSTEM="xfs"
98+
CONFIG_AI_FSTYPE="xfs"
99+
CONFIG_AI_XFS_MKFS_OPTS="-f -s size=4096"
100+
CONFIG_AI_XFS_MOUNT_OPTS="rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota"
101+
102+
# Use distribution kernel (no kernel building)
103+
# CONFIG_BOOTLINUX is not set
104+
105+
# Memory configuration
106+
CONFIG_LIBVIRT_MEM_MB=16384
107+
108+
# Disable A/B testing to use single baseline configuration
109+
# CONFIG_KDEVOPS_BASELINE_AND_DEV is not set
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# AI Extended Multi-Filesystem Performance Testing Configuration (Distro Kernel)
2+
# This configuration enables testing AI workloads across multiple filesystem
3+
# configurations including XFS (4k, 16k, 32k, 64k block sizes), ext4 (4k and 16k bigalloc),
4+
# and btrfs (default profile) using the distribution kernel without A/B testing.
5+
6+
# Base virtualization setup
7+
CONFIG_LIBVIRT=y
8+
CONFIG_LIBVIRT_MACHINE_TYPE_Q35=y
9+
CONFIG_LIBVIRT_STORAGE_POOL_PATH="/opt/kdevops/libvirt"
10+
CONFIG_LIBVIRT_ENABLE_LARGEIO=y
11+
CONFIG_LIBVIRT_EXTRA_STORAGE_DRIVE_NVME=y
12+
CONFIG_LIBVIRT_EXTRA_STORAGE_DRIVE_SIZE="50GiB"
13+
14+
# Network configuration
15+
CONFIG_LIBVIRT_ENABLE_BRIDGED_NETWORKING=y
16+
CONFIG_LIBVIRT_NET_NAME="kdevops"
17+
18+
# Host configuration
19+
CONFIG_KDEVOPS_HOSTS_TEMPLATE="hosts.j2"
20+
CONFIG_VAGRANT_NVME_DISK_SIZE="50GiB"
21+
22+
# Base system requirements
23+
CONFIG_WORKFLOWS=y
24+
CONFIG_WORKFLOWS_TESTS=y
25+
CONFIG_WORKFLOWS_LINUX_TESTS=y
26+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
27+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_AI=y
28+
29+
# AI Workflow Configuration
30+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_AI=y
31+
CONFIG_AI_TESTS_VECTOR_DATABASE=y
32+
CONFIG_AI_VECTOR_DB_MILVUS=y
33+
CONFIG_AI_VECTOR_DB_MILVUS_DOCKER=y
34+
35+
# Test Parameters (optimized for multi-fs testing)
36+
CONFIG_AI_BENCHMARK_ITERATIONS=3
37+
CONFIG_AI_DATASET_1M=y
38+
CONFIG_AI_VECTOR_DIM_128=y
39+
CONFIG_AI_BENCHMARK_RUNTIME="180"
40+
CONFIG_AI_BENCHMARK_WARMUP_TIME="30"
41+
42+
# Query patterns
43+
CONFIG_AI_BENCHMARK_QUERY_TOPK_1=y
44+
CONFIG_AI_BENCHMARK_QUERY_TOPK_10=y
45+
46+
# Batch sizes
47+
CONFIG_AI_BENCHMARK_BATCH_1=y
48+
CONFIG_AI_BENCHMARK_BATCH_10=y
49+
50+
# Index configuration
51+
CONFIG_AI_INDEX_HNSW=y
52+
CONFIG_AI_INDEX_TYPE="HNSW"
53+
CONFIG_AI_INDEX_HNSW_M=16
54+
CONFIG_AI_INDEX_HNSW_EF_CONSTRUCTION=200
55+
CONFIG_AI_INDEX_HNSW_EF=64
56+
57+
# Results and visualization
58+
CONFIG_AI_BENCHMARK_RESULTS_DIR="/data/ai-benchmark"
59+
CONFIG_AI_BENCHMARK_ENABLE_GRAPHING=y
60+
CONFIG_AI_BENCHMARK_GRAPH_FORMAT="png"
61+
CONFIG_AI_BENCHMARK_GRAPH_DPI=300
62+
CONFIG_AI_BENCHMARK_GRAPH_THEME="default"
63+
64+
# Multi-filesystem testing configuration
65+
CONFIG_AI_MULTIFS_ENABLE=y
66+
CONFIG_AI_ENABLE_MULTIFS_TESTING=y
67+
CONFIG_AI_MULTIFS_RESULTS_DIR="/data/ai-multifs-benchmark"
68+
69+
# Enable dedicated Milvus storage with node-based filesystem
70+
CONFIG_AI_MILVUS_STORAGE_ENABLE=y
71+
CONFIG_AI_MILVUS_USE_NODE_FS=y
72+
CONFIG_AI_MILVUS_DEVICE="/dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_kdevops3"
73+
CONFIG_AI_MILVUS_MOUNT_POINT="/data/milvus"
74+
75+
# Extended XFS configurations (4k, 16k, 32k, 64k block sizes)
76+
CONFIG_AI_MULTIFS_TEST_XFS=y
77+
CONFIG_AI_MULTIFS_XFS_4K_4KS=y
78+
CONFIG_AI_MULTIFS_XFS_16K_4KS=y
79+
CONFIG_AI_MULTIFS_XFS_32K_4KS=y
80+
CONFIG_AI_MULTIFS_XFS_64K_4KS=y
81+
82+
# ext4 configurations
83+
CONFIG_AI_MULTIFS_TEST_EXT4=y
84+
CONFIG_AI_MULTIFS_EXT4_4K=y
85+
CONFIG_AI_MULTIFS_EXT4_16K_BIGALLOC=y
86+
87+
# btrfs configurations
88+
CONFIG_AI_MULTIFS_TEST_BTRFS=y
89+
CONFIG_AI_MULTIFS_BTRFS_DEFAULT=y
90+
91+
# Standard filesystem configuration (for comparison)
92+
CONFIG_AI_FILESYSTEM_XFS=y
93+
CONFIG_AI_FILESYSTEM="xfs"
94+
CONFIG_AI_FSTYPE="xfs"
95+
CONFIG_AI_XFS_MKFS_OPTS="-f -s size=4096"
96+
CONFIG_AI_XFS_MOUNT_OPTS="rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota"
97+
98+
# Use distribution kernel (no kernel building)
99+
# CONFIG_BOOTLINUX is not set
100+
101+
# Memory configuration
102+
CONFIG_LIBVIRT_MEM_MB=16384
103+
104+
# Baseline/dev testing setup
105+
CONFIG_KDEVOPS_BASELINE_AND_DEV=y
106+
# Build Linux
107+
CONFIG_WORKFLOW_LINUX_CUSTOM=y
108+
CONFIG_BOOTLINUX_AB_DIFFERENT_REF=y

docs/ai/vector-databases/README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ Vector databases heavily depend on storage performance. The workflow tests acros
5252
- **XFS**: Default for many production deployments
5353
- **ext4**: Traditional Linux filesystem
5454
- **btrfs**: Copy-on-write with compression support
55-
- **ZFS**: Advanced features for data integrity
5655

5756
## Configuration Dimensions
5857

playbooks/ai_install.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@
44
become: true
55
become_user: root
66
roles:
7+
- role: ai_docker_storage
8+
when: ai_docker_storage_enable | default(true)
9+
tags: ['ai', 'docker', 'storage']
10+
- role: ai_milvus_storage
11+
when: ai_milvus_storage_enable | default(false)
12+
tags: ['ai', 'milvus', 'storage']
713
- role: milvus
814
tags: ['ai', 'vector_db', 'milvus', 'install']

playbooks/ai_multifs.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
- hosts: baseline
3+
become: yes
4+
gather_facts: yes
5+
vars:
6+
ai_benchmark_results_dir: "{{ ai_multifs_results_dir | default('/data/ai-multifs-benchmark') }}"
7+
roles:
8+
- role: ai_multifs_setup
9+
- role: ai_multifs_run
10+
tasks:
11+
- name: Final multi-filesystem testing summary
12+
debug:
13+
msg: |
14+
Multi-filesystem AI benchmark testing completed!
15+
16+
Results directory: {{ ai_multifs_results_dir }}
17+
Comparison report: {{ ai_multifs_results_dir }}/comparison/multi_filesystem_comparison.html
18+
19+
Individual filesystem results:
20+
{% for config in ai_multifs_configurations %}
21+
{% if config.enabled %}
22+
- {{ config.name }}: {{ ai_multifs_results_dir }}/{{ config.name }}/
23+
{% endif %}
24+
{% endfor %}

playbooks/host_vars/debian13-ai-xfs-4k-4ks.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)