Skip to content

Commit 886309e

Browse files
committed
build-linux: add workflow for repeated kernel builds
Add a new workflow that allows building the Linux kernel multiple times to measure build time variations and performance. This is useful for benchmarking build systems and compiler performance testing. This goes in with monitoring support so we can do AB testing against different filesystems. Generated-by: Claude AI Suggested-by: David Bueso <[email protected]> Signed-off-by: Luis Chamberlain <[email protected]>
1 parent e19a9ff commit 886309e

File tree

24 files changed

+2448
-0
lines changed

24 files changed

+2448
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ workflows/mmtests/results/
7373
tmp
7474

7575
workflows/fio-tests/results/
76+
workflows/build-linux/results/
7677

7778
playbooks/roles/linux-mirror/linux-mirror-systemd/*.service
7879
playbooks/roles/linux-mirror/linux-mirror-systemd/*.timer

defconfigs/build-linux

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=100
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=n
12+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

defconfigs/build-linux-multifs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=5
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y
13+
14+
# Multi-filesystem testing
15+
CONFIG_BUILD_LINUX_ENABLE_MULTIFS_TESTING=y
16+
17+
# Test multiple XFS configurations
18+
CONFIG_BUILD_LINUX_MULTIFS_TEST_XFS=y
19+
CONFIG_BUILD_LINUX_MULTIFS_XFS_4K_4KS=y
20+
CONFIG_BUILD_LINUX_MULTIFS_XFS_16K_4KS=y
21+
CONFIG_BUILD_LINUX_MULTIFS_XFS_32K_4KS=y
22+
CONFIG_BUILD_LINUX_MULTIFS_XFS_64K_4KS=y
23+
24+
25+
# Test ext4
26+
CONFIG_BUILD_LINUX_MULTIFS_TEST_EXT4=y
27+
CONFIG_BUILD_LINUX_MULTIFS_EXT4_4K=y
28+
29+
# Test btrfs
30+
CONFIG_BUILD_LINUX_MULTIFS_TEST_BTRFS=y
31+
CONFIG_BUILD_LINUX_MULTIFS_BTRFS_DEFAULT=y
32+
33+
# Auto-detect filesystem from node name
34+
CONFIG_BUILD_LINUX_MULTIFS_USE_NODE_FS=y
35+
36+
CONFIG_ENABLE_MONITORING=y
37+
CONFIG_MONITOR_DEVELOPMENTAL_STATS=y
38+
CONFIG_MONITOR_FOLIO_MIGRATION=y
39+
CONFIG_MONITOR_MEMORY_FRAGMENTATION=y

defconfigs/build-linux-xfs-16k

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=10
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_FSTYPE_XFS=y
13+
CONFIG_BUILD_LINUX_XFS_BLOCKSIZE_16K=y
14+
CONFIG_BUILD_LINUX_XFS_SECTORSIZE_4K=y
15+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

defconfigs/build-linux-xfs-32k

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=10
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_FSTYPE_XFS=y
13+
CONFIG_BUILD_LINUX_XFS_BLOCKSIZE_32K=y
14+
CONFIG_BUILD_LINUX_XFS_SECTORSIZE_4K=y
15+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

defconfigs/build-linux-xfs-4k

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=10
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_FSTYPE_XFS=y
13+
CONFIG_BUILD_LINUX_XFS_BLOCKSIZE_4K=y
14+
CONFIG_BUILD_LINUX_XFS_SECTORSIZE_4K=y
15+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

defconfigs/build-linux-xfs-64k

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=10
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_FSTYPE_XFS=y
13+
CONFIG_BUILD_LINUX_XFS_BLOCKSIZE_64K=y
14+
CONFIG_BUILD_LINUX_XFS_SECTORSIZE_64K=y
15+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

defconfigs/build-linux-xfs-8k

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Workflow configuration
2+
CONFIG_WORKFLOWS=y
3+
CONFIG_WORKFLOWS_TESTS=y
4+
CONFIG_WORKFLOWS_LINUX_TESTS=y
5+
CONFIG_WORKFLOWS_DEDICATED_WORKFLOW=y
6+
CONFIG_KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX=y
7+
CONFIG_KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX=y
8+
CONFIG_BUILD_LINUX_REPEAT_COUNT=10
9+
CONFIG_BUILD_LINUX_CLEAN_BETWEEN=y
10+
CONFIG_BUILD_LINUX_COLLECT_STATS=y
11+
CONFIG_BUILD_LINUX_STORAGE_ENABLE=y
12+
CONFIG_BUILD_LINUX_FSTYPE_XFS=y
13+
CONFIG_BUILD_LINUX_XFS_BLOCKSIZE_8K=y
14+
CONFIG_BUILD_LINUX_XFS_SECTORSIZE_4K=y
15+
CONFIG_BUILD_LINUX_USE_LATEST_TAG=y

kconfigs/workflows/Kconfig

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,14 @@ config KDEVOPS_WORKFLOW_DEDICATE_MINIO
240240
This will dedicate your configuration to running only the
241241
MinIO workflow for S3 storage benchmarking with Warp testing.
242242

243+
config KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX
244+
bool "build-linux"
245+
depends on !KDEVOPS_USE_DECLARED_HOSTS
246+
select KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX
247+
help
248+
This will dedicate your configuration to running only the
249+
build-linux workflow for repeated Linux kernel builds.
250+
243251
endchoice
244252

245253
config KDEVOPS_WORKFLOW_NAME
@@ -258,6 +266,7 @@ config KDEVOPS_WORKFLOW_NAME
258266
default "fio-tests" if KDEVOPS_WORKFLOW_DEDICATE_FIO_TESTS
259267
default "ai" if KDEVOPS_WORKFLOW_DEDICATE_AI
260268
default "minio" if KDEVOPS_WORKFLOW_DEDICATE_MINIO
269+
default "build-linux" if KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX
261270

262271
endif
263272

@@ -532,6 +541,17 @@ source "workflows/minio/Kconfig"
532541
endmenu
533542
endif # KDEVOPS_WORKFLOW_ENABLE_MINIO
534543

544+
config KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX
545+
bool
546+
output yaml
547+
default y if KDEVOPS_WORKFLOW_NOT_DEDICATED_ENABLE_BUILD_LINUX || KDEVOPS_WORKFLOW_DEDICATE_BUILD_LINUX
548+
549+
if KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX
550+
menu "Configure Linux kernel build workflow"
551+
source "workflows/build-linux/Kconfig"
552+
endmenu
553+
endif # KDEVOPS_WORKFLOW_ENABLE_BUILD_LINUX
554+
535555
config KDEVOPS_WORKFLOW_ENABLE_SSD_STEADY_STATE
536556
bool "Attain SSD steady state prior to tests"
537557
output yaml

0 commit comments

Comments
 (0)