0-Day CI Linux Kernel Performance Report (V5.15)

Published: 12/22/2021

By Beibei Si

Introduction

0-Day CI is an automated Linux kernel test service that provides comprehensive test coverage of the Linux kernel. It covers kernel build, static analysis, boot, functional, performance and power tests. This report shows the recent observations of kernel performance status on IA platform based on the test results from 0-Day CI service. It is structured in the following manner:

  • Section 2, test parameter description
  • Section 3, merged regressions and improvements in v5.15 release candidates
  • Section 4, captured regressions and improvements by shift-left testing during developers’ and maintainers’ tree during v5.15 release cycle
  • Section 5, performance comparison among different kernel releases
  • Section 6, test machine list

Test Parameters Descriptions

Here are the descriptions for each parameter/field used in the tests.

Classification Name Description
General runtime Run the test case within a certain time period (seconds or minutes)
  nr_task If it is an integer, which means the number of processes/threads (to run the workload) of this job. Default is 1.

If it is a percentage, e.g. 200% means the number of processes/threads is double of cpu number
  nr_threads Alias of nr_task
  iterations Number to repeat this job
  test_size Test disk size or memory size
  set_nic_irq_affinity Set NIC interrupt affinity
  disable_latency_stats Latency_stats may introduce too much noise if there are too many context switches, allow to disable it
  transparent_hugepage Set transparent hugepage policy (/sys/kernel/mm/transparent_hugepage)
  boot_params:bp1_memmap Boot parameters of memmap
  disk:nr_pmem number of pmem partitions used by test
  swap:priority Priority means the priority of the swap device. priority is a value between -1 and 32767, the default is -1 and higher priority with higher value.
Test Machine model Name of Intel processor microarchitecture
  brand Brand name of cpu
  cpu_number Number of cpu
  memory Size of memory

Linux Kernel V5.15 Release Test

Linux has released the 5.15 kernel after another nine-week development cycle, and mentioned “This release may have started out with some -Werror pain, but it calmed down fairly quickly and on the whole 5.15 was fair small and calm. Let's hope for more of the same - without Werror issues this time - for the upcoming merge window.” The code name for this release has been set to "Trick or Treat". Significant features in this release include: the realtime preemption locking codedescriptorless files for io_uring, BPF timers, the removal of mandatory file-locking support, the ksmbd SMB filesystem server (but see this article), printk() indexing, the process_mrelease() system call, The DAMON memory-management optimization system, the ntfs3 filesystem implementation, and much more. See the KernelNewbies 5.15 page for more information.

0-Day CI monitored the release closely to trace down the performance status on IA platform. 0-Day observed 5 regressions and 7 improvements during feature development phase for v5.15. We will share more detailed information together with correlated patches that led to the results. Note that the assessment is limited by the test coverage 0-Day has now. The list is summarized in the observation summary section.

Observation Summary

0-Day CI observed 5 regressions and 7 improvements during the feature development phase for v5.15, which is in the time frame from v5.15-rc1 to v5.15 release.

Test Indicator Mail Test Scenario Test Machine Development Base Status
aim7.jobs-per-min [xfs] ab23a77687: -18.5% regression disk: 1BRD_48G

fs: xfs

test: disk_rr

load: 3000

cpufreq_governor: performance
lkp-cpl-4sp1 v5.14-rc4 merged at v5.15-rc1, author doubt the regression and 0-Day CI team is following up
fxmark.hdd_ext4_no_jnl_DWTL_1_directio.works/sec [loop] 2112f5c133: -49.6% regression disk: 1HDD

media: hdd

test: DWTL

fstype: ext4_no_jnl

directio: directio

cpufreq_governor: performance
lkp-knm02 v5.14-rc4 merged at v5.15-rc1, no response from author yet
netperf.Throughput_tps [sched/fair] 56498cfb04: -5.4% regression ip: ipv4

runtime: 300s

nr_threads: 50%

cluster: cs-localhost

test: UDP_RR

cpufreq_governor: performance
lkp-icl-2sp2 v5.13-rc6 merged at v5.15-rc1, no response from author yet
netperf.Throughput_tps [bpf] b89fbfbb85: -21.3% regression ip: ipv4

runtime: 300s

nr_threads: 16

cluster: cs-localhost

test: TCP_CRR

cpufreq_governor: performance
lkp-csl-2ap3 v5.14-rc5 merged at v5.15-rc1, author doubt the regression and 0-Day CI team is following up
will-it-scale.per_process_ops [memcg] 0f12156dff: -33.6% regression nr_task: 50%

mode: process

test: lock1

cpufreq_governor: performance
lkp-skl-fpga01 v5.14 merged at v5.15-rc1, author accepted the regression and the patch was reverted on latest kernel tree

 

Improvement          
aim7.jobs-per-min [ext4] cc883236b7: 69.4% improvement disk: 4BRD_12G

md: RAID0

fs: ext4

test: disk_rw

load: 3000

cpufreq_governor: performance
lkp-csl-2sp9 v5.14-rc2 merged at v5.15-rc4
fsmark.files_per_sec [SUNRPC] e38b3f2005: 1857.1% improvement iterations: 1x

nr_threads: 1t

disk: 1BRD_48G

fs: f2fs

fs2: nfsv4

filesize: 4M

test_size: 24G

sync_method: NoSync

cpufreq_governor: performance
lkp-csl-2ap2 v5.14-rc6 merged at v5.15-rc1
stress-ng.memhotplug.ops_per_sec [mm/migrate] 295be91f7e: 151.7% improvement nr_threads: 10%

disk: 1HDD

testtime: 60s

fs: ext4

class: os

test: memhotplug

cpufreq_governor: performance
lkp-csl-2sp5 v5.15-rc6 merged at v5.15-rc7
stress-ng.netdev.ops_per_sec [net] b0e99d0377: 7.7% improvement nr_threads: 100%

testtime: 60s

class: network

test: netdev

cpufreq_governor: performance
lkp-csl-2sp5 v5.14-rc1 merged at v5.15-rc1
will-it-scale.per_process_ops [mm] 243418e392: 3.0% improvement nr_task: 100%

mode: process

test: brk1

cpufreq_governor: performance
lkp-csl-2ap2 v5.15-rc2 merged at v5.15-rc3
will-it-scale.per_process_ops [memcg] 1f828223b7: 37.3% improvement nr_task: 100%

mode: process

test: page_fault3

thp_enabled: never

cpufreq_governor: performance
lkp-csl-2sp5 v5.15-rc2 merged at v5.15-rc3
will-it-scale.per_thread_ops [fsnotify] e43de7f086: 10.2% improvement nr_task: 100%

mode: thread

test: eventfd1

cpufreq_governor: performance
lkp-csl-2ap2 v5.14-rc4 merged at v5.15-rc1

will-it-scale.per_thread_ops

Will-it-scale takes a test case and runs it from 1 through to n parallel copies to see if the test case will scale. It builds both process and threads based tests in order to see any differences between the two.

Scenario: process lock1

Scenario: process lock1

Commit 0f12156dff was reported to have -33.6% regression of will-it-scale.per_process_ops when comparing to v5.14. It was merged to mainline at v5.15-rc1.

Correlated commits

0f12156dff memcg: enable accounting for file lock caches
branch linus/master
report [memcg] 0f12156dff: -33.6% regression
test scenario nr_task: 50%

mode: process

test: lock1

cpufreq_governor: performance
test machine lkp-skl-fpga01
status merged at v5.15-rc1, author accepted the regression and the patch was reverted on latest kernel tree

stress-ng.memhotplug.ops_per_sec

stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various physical subsystems of a computer as well as the various operating system kernel interfaces.

Scenario: memhotplug test on ext4

Scenario: memhotplug test on ext4

Commit 295be91f7e was reported to have 151.7% improvement of stress-ng.memhotplug.ops_per_sec when comparing to v5.15-rc6. It was merged to mainline at v5.15-rc7.

Correlated commits

295be91f7e mm/migrate: optimize hotplug-time demotion order updates
branch linus/master
report [mm/migrate] 295be91f7e: 151.7% improvement
test scenario nr_threads: 10%

disk: 1HDD

testtime: 60s

fs: ext4

class: os

test: memhotplug

cpufreq_governor: performance
test machine lkp-csl-2sp5
status merged at v5.15-rc7

will-it-scale.per_process_ops

Will-it-scale takes a test case and runs it from 1 through to n parallel copies to see if the test case will scale. It builds both process and threads based tests in order to see any differences between the two.

Scenario: Process page_fault3

Scenario: Process page_fault3

Commit 1f828223b7 was reported to have 37.3% improvement of will-it-scale.per_process_ops when comparing to v5.15-rc2. It was merged to mainline at v5.15-rc3.

Correlated commits

1f828223b7 memcg: flush lruvec stats in the refault
branch linux/master
report [memcg] 1f828223b7: 37.3% improvement
test scenario nr_task: 100%

mode: process

test: page_fault3

thp_enabled: never

cpufreq_governor: performance
test machine lkp-csl-2sp5
status merged at v5.15-rc3

shift-left testing

Beyond testing trees in the upstream kernel, 0-Day CI also tests developers’ and maintainers’ trees, which can catch issues earlier and reduce wider impact. We call it “shift-left” testing. During the v5.15 release cycle, 0-Day CI had reported 5 major performance regressions and 5 major improvements by doing shift-left testing. We will share more detailed information together with possible code changes that led to this result for some of these, though the assessment is limited by the test coverage we have now. The whole list is summarized in the report summary section.

Report Summary

0-Day CI had reported 5 performance regressions and 5 improvements by doing shift-left testing on developer and maintainer repos.

Test Indicator Mail Test Scenario Test Machine Status
aim7.jobs-per-min [memcg] 45208c9105: -14.0% regression disk: 1BRD_48G

fs: xfs

test: disk_rr

load: 3000

cpufreq_governor: performance
lkp-icl-2sp2 currently not merged, author accepted the regression, fixed patch 1f828223b7 was merged at v5.15-rc3
stress-ng.loop.ops_per_sec [watchdog] 34db6459c6: -36.4% regression nr_threads: 100%

disk: 1HDD

testtime: 60s

class: device

test: loop

cpufreq_governor: performance
lkp-csl-2sp7 currently not merged, no response from author
stress-ng.memhotplug.ops_per_sec [mm/migrate] 9eeb73028c: -53.8% regression nr_threads: 10%

disk: 1HDD

testtime: 60s

fs: ext4

class: os

test: memhotplug

cpufreq_governor: performance
lkp-csl-2sp5 currently not merged, author accepted the regression, fixed patch 295be91f7e was merged at v5.15-rc7
will-it-scale.per_process_ops [memcg] 059dd9003a: -39.8% regression nr_task: 100%

mode: process

test: lock1

cpufreq_governor: performance
lkp-icl-2sp1 currently not merged, no response from author
will-it-scale.per_thread_ops [memcg] fa4e6b1ad5: -15.4% regression nr_task: 50%

mode: thread

test: poll2
cpufreq_governor: performance
lkp-hsw-4ex1 currently not merged, no response from autho

 

Improvement        
fio.write_iops [block] dc5fc361d8: 9.8% improvement disk: 1SSD

fs: xfs

runtime: 300s

nr_task: 32

rw: randwrite

bs: 4k

ioengine: sync

test_size: 256g

cpufreq_governor: performance
lkp-csl-2ap1 currently not merged
reaim.jobs_per_min [mm] f11826446d: 3.9% improvement runtime: 300s

nr_task: 100%

test: new_dbase

cpufreq_governor: performance
lkp-cpl-4sp1 currently not merged
stress-ng.vm-rw.ops_per_sec 29b51054ec: 81.4% improvement nr_threads: 100%

testtime: 60s

class: memory

test: vm-rw

cpufreq_governor: performance
lkp-csl-2sp5 currently not merged
vm-scalability.median [memory tiering] 76ff9ff49a: 5.0% improvement runtime: 300s

size: 512G

test: anon-w-rand

cpufreq_governor: performance
lkp-csl-2ap4 currently not merged
will-it-scale.per_process_ops [rcu] 925da92ba5: 2.5% improvement nr_task: 16

mode: process

test: getppid1

cpufreq_governor: performance
lkp-csl-2sp9 currently not merged

stress-ng.loop.ops_per_sec

stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various physical subsystems of a computer as well as the various operating system kernel interfaces.

Scenario: loop test on localhost

Scenario: loop test on localhost

Commit 34db6459c6 was reported to have -36.4% regression of stress-ng.loop.ops_per_sec when comparing to v5.15-rc4.

Correlated commits

34db6459c6 watchdog: iTCO: Drop vendor support
branch groeck-staging/watchdog-next
report [watchdog] 34db6459c6: -36.4% regression
test scenario nr_threads: 100%

disk: 1HDD

testtime: 60s

class: device

test: loop

cpufreq_governor: performance
test machine lkp-csl-2sp7
status currently not merged, no response from author

fio.write_iops

fio is a tool that will spawn a number of threads or processes doing a particular type of I/O action as specified by the user.

Scenario: Randwrite on xfs

Scenario: Randwrite on xfs

Commit dc5fc361d8 was reported to have 9.8% improvement of fio.write_iops when comparing to v5.15-rc6.

Correlated commits

dc5fc361d8 block: attempt direct issue of plug list
branch axboe-block/for-5.16/block
report [block] dc5fc361d8: 9.8% improvement
test scenario disk: 1SSD

fs: xfs

runtime: 300s

nr_task: 32

rw: randwrite

bs: 4k

ioengine: sync

test_size: 256g

cpufreq_governor: performance
test machine lkp-csl-2ap1
status currently not merged

stress-ng.vm-rw.ops_per_sec

Stress-ng will stress test a computer system in various selectable ways. It was designed to exercise various physical subsystems of a computer as well as the various operating system kernel interfaces.

Scenario: 1hdd-xfs-fylesystem-dir

Scenario: 1hdd-xfs-fylesystem-dir

Commit 29b51054ec was reported to have 81.4% improvement of stress-ng.vm-rw.ops_per_sec when comparing to v5.15-rc3.

Correlated commits

29b51054ec SIS_DEPTH
branch mel/sched-sisdepth-v1r3
report 29b51054ec: 81.4% improvement
test scenario nr_threads: 100%

testtime: 60s

class: memory

test: vm-rw

cpufreq_governor: performance
test machine lkp-csl-2sp5
status currently not merged

Last Release Performance Comparing

This session gives some information about the performance difference among different kernel releases, especially between v5.15 and v5.14. There are 50+ performance benchmarks running in 0-Day CI, and we selected 9 benchmarks which historically showed the most regressions/improvements reported by 0-Day CI. Some typical configuration/parameters are used to run the test. For some of the regressions from the comparison, 0-Day did not successfully bisect it thus no related report sent out during the release development period, but it is still worth checking. The root cause to cause the regressions won’t be covered in this session.

In the following figures, the value on the Y-axis is the relative performance number. We used the v5.14 data as the base (performance number is 100).

Test Suite: vm-scalability

Vm-scalability exercises functions and regions of the mm subsystem of the Linux kernel. Below 2 tests show the typical test results.

vm-scalability Test 1

vm-scalability Test 1

Here are the test configuration and performance test summary for above tests:

  vm-scalability Test 1
test machine model: Cascade Lake

brand: Intel® Xeon® CPU @ 2.30GHz

cpu_number: 96

memory: 128G
runtime No requirement
size No requirement
vm-scalability test parameter test: swap-w-seq
performance summary vm-scalability.throughput on kernel v5.15 has -7.97% regression when comparing to v5.14

Test Suite: will-it-scale

Will-it-scale takes a test case and runs it from 1 through to n parallel copies to see if the test case will scale. It builds both process and threads based tests in order to see any differences between the two.

will-it-scale Test 1

will-it-scale Test 1

will-it-scale Test 2

will-it-scale Test 2

Here are the parameters and performance test summary for above tests:

  will-it-scale Test 1 will-it-scale Test 2
test machine model: Skylake

brand:

cpu_number: 104

memory: 192G
model: Ice Lake

brand:

cpu_number: 96

memory: 256G
nr_task 16 100%
will-it-scale test parameter mode: thread

test: fallocate2
mode: process

test: page_fault1
summary will-it-scale.per_process_ops on kernel v5.15 has -9.38% regression when comparing to v5.14 will-it-scale.per_process_ops on kernel v5.15 has 9.21% improvement when comparing to v5.14

Test Suite: Unixbench

UnixBench is a system benchmark to provide a basic indicator of the performance of a Unix-like system.

Unixbench Test 1

Unixbench Test 1

Here are the test configuration and performance test summary for above tests:

  Unixbench Test 1
test machine model: Ice Lake

brand:

nr_cpu: 96

memory: 256G
runtime 300s
nr_task 30%
unixbench test parameter test: syscall
performance summary unixbench.score on kernel v5.15 is almost the same as that in v5.14

Test Suite: Reaim

Reaim updates and improves the existing Open Source AIM 7 benchmark. aim7 is a traditional UNIX system level benchmark suite which is used to test and measure the performance of a multiuser system.

reaim Test 1

reaim Test 1

Here are the test configuration and performance test summary for above tests:

  reaim Test 1
test machine model: Cascade Lake

brand: Intel® Xeon® Platinum 9242 CPU @ 2.30GHz

cpu_number: 192

memory: 192G
runtime 300s
nr_task 100%
disk No requirement
fs No requirement
reaim test parameter test: dbase
performance  summary reaim.jobs_per_min on kernel v5.15 is almost the same as that in v5.14

Test Suite: Pigz

Pigz, which stands for Parallel Implementation of GZip, is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data.

pigz Test 1

pigz Test 1

Here are the test configuration and performance test summary for above tests:

  pigz Test 1
test machine model: Knights Mill

brand: Intel® Xeon Phi™ CPU 7255 @ 1.10GHz

cpu_number: 272

memory: 112G
nr_threads 25%
pigz Test parameter blocksize: 512K
performance  summary pigz.throughput on kernel v5.15 is almost the same as that in v5.14

Test Suite: Netperf

Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirectional throughput, and end-to-end latency.

netperf Test 1

netperf Test 1

Here are the test configuration and performance test summary for above tests:

  netperf Test 1
test machine model: Cascade Lake

brand: Intel® Xeon® Platinum 9242 CPU @ 2.30GHz

cpu_number: 192

memory: 192G
disable_latency_stats 1
set_nic_irq_affinity 1
runtime 300s
nr_threads 50%
ip ipv4
netperf test parameter test: TCP_RR
performance  summary netperf.Throughput_tps on kernel v5.15 has -11.07% regression when comparing to v5.14

Test Suite: Hackbench

Hackbench is both a benchmark and a stress test for the Linux kernel scheduler. It's  main job  is  to  create a specified number of pairs of schedulable entities (either threads or traditional processes) which communicate via either sockets or pipes and time how long  it takes for each pair to send data back and forth.

hackbench Test 1

hackbench Test 1

Here are the test configuration and performance test summary for above tests:

  hackbench Test 1
test machine model: Cascade Lake

brand: Intel® Xeon® CPU @ 2.30GHz

cpu_number: 96

memory: 128G
disable_latency_stats 1
nr_threads 50%
unixbench test parameter mode: process

ipc: pipe
performance summary hackbench.throughput on kernel v5.15 has -7.33% regression when comparing to v5.14

Test Suite: Fio

Fio was originally written to save me the hassle of writing special test case programs when I wanted to test a specific workload, either for performance reasons or to find/reproduce a bug.

fio Test 1

fio Test 1

fio Test 2

fio Test 2

Here are the test configuration and performance test summary for above tests:

  fio Test 1 fio Test 2
test machine model: Cascade Lake

brand: Intel® Xeon® Gold 6252 CPU @ 2.10GHz

cpu_number: 96

memory: 256G
model: Cascade Lake

brand: Intel® Xeon® Gold 6252 CPU @ 2.10GHz

cpu_number: 96

memory: 256G
runtime 200s 200s
file system xfs xfs
disk 2pmem 2pmem
boot_params No requirement No requirement
nr_task 50% 50%
time_based tb tb
fio test parameter fio-setup-basic:  

rw: randwrite

bs: 4k  

ioengine: sync

test_size: 200G
fio-setup-basic:

rw: write

bs: 4k  

ioengine: libaio  

test_size: 200G
performance  summary fio.write_bw_MBps on kernel v5.15 has 35% improvement when comparing to v5.14 fio.write_bw_MBps on kernel v5.15 has -26% regression when comparing to v5.14

Test Suite: Ebizzy

Ebizzy is designed to generate a workload resembling common web application server workloads. It is highly threaded, has a large in-memory working set, and allocates and deallocates memory frequently.

ebizzy Test 1

ebizzy Test 1

Here are the test configuration and performance test summary for above test:

  ebizzy Test 1
test machine model: Cascade Lake

brand: Intel® Xeon® Gold 6252 CPU @ 2.10GHz

cpu_number: 96 memory: 192G
transparent_hugepage No requirement
nr_threads 200%
iterations 100x
ebizzy test parameter duration: 10s
performance  summary ebizzy.throughput on kernel v5.15 is almost the same as that in v5.14

Test Machines

IVB DESKTOP

model Ivy Bridge
brand Intel® Core™ i3-3220 CPU @ 3.30GHz
cpu number 8
memory 16G

 

model Ivy Bridge
brand Intel® Core™ i3-3220 CPU @ 3.30GHz
cpu number 4
memory 8G

SKL SP

model Skylake
brand Intel® Xeon® CPU E5-2697 v2 @ 2.70GHz
cpu number 80
memory 64G

BDW EP

model Broadwell-EP
brand Intel® Xeon® CPU E5-2699 v4 @ 2.20GHz
cpu number 88
memory 128G

HSW EP

model Haswell-EP
brand Intel® Xeon® CPU E5-2699 v3 @ 2.30GHz
cpu number 72
memory 128G

IVB EP

model Ivy Bridge-EP
brand Intel® Xeon® CPU E5-2690 v2 @ 3.00GHz
cpu number 40
memory 384G

 

model Ivytown Ivy Bridge-EP
brand Intel® Xeon® CPU E5-2697 v2 @ 2.70GHz
cpu number 48
memory 64G

HSX EX

model Brickland Haswell-EX
brand Intel® Xeon® CPU E7-8890 v3 @ 2.50GHz
cpu number 144
memory 512G

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.