Re: [linux-next:master] [drivers/char/mem] 1b057bd800: stress-ng.splice.ops_per_sec -99.8% regression

From: Oliver Sang
Date: Wed Oct 18 2023 - 03:07:37 EST


hi, Greg Kroah-Hartman,

On Tue, Oct 17, 2023 at 06:56:56PM +0200, Greg Kroah-Hartman wrote:
> On Tue, Oct 17, 2023 at 11:06:42PM +0800, kernel test robot wrote:
> >
> >
> > Hello,
> >
> > kernel test robot noticed a -99.8% regression of stress-ng.splice.ops_per_sec on:
> >
> >
> > commit: 1b057bd800c3ea0c926191d7950cd2365eddc9bb ("drivers/char/mem: implement splice() for /dev/zero, /dev/full")
> > https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master
> >
> > testcase: stress-ng
> > test machine: 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory
> > parameters:
> >
> > nr_threads: 100%
> > testtime: 60s
> > class: pipe
> > test: splice
> > cpufreq_governor: performance
> >
> >
> > In addition to that, the commit also has significant impact on the following tests:
> >
> > +------------------+-------------------------------------------------------------------------------------------------+
> > | testcase: change | stress-ng: stress-ng.splice.ops_per_sec 38.9% improvement |
>
> So everything now goes faster, right? -99.8% regression means 99.8%
> faster?

let me clarify.

our auto bisect captured this commit as 'first bad commit' in two tests.

Test 1:

it found a (very big) regression comparing to parent commit.

19e3e6cdfdc73400 1b057bd800c3ea0c926191d7950
---------------- ---------------------------
%stddev %change %stddev
\ | \
12433266 -99.8% 22893 ± 3% stress-ng.splice.ops_per_sec

the detail data for parent in multi-runs:
"stress-ng.splice.ops_per_sec": [
12444442.19,
12599010.87,
12416009.38,
12494132.89,
12286766.76,
12359235.82
],

for 1b057bd800:
"stress-ng.splice.ops_per_sec": [
24055.57,
23235.46,
22142.13,
23782.13,
21732.13,
22415.46
],

so this is much slower.

the config for this Test 1 is:
testcase: stress-ng
test machine: 64 threads 2 sockets Intel(R) Xeon(R) Gold 6346 CPU @ 3.10GHz (Ice Lake) with 256G memory
parameters:
nr_threads: 100%
testtime: 60s
class: pipe
test: splice
cpufreq_governor: performance


Test 2:

this is still a stress-ng test, but the config is different with Test 1
(the bare metal machine config, and stress-ng parameters):

testcase: stress-ng
test machine: 36 threads 1 sockets Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (Cascade Lake) with 128G memory
parameters:
nr_threads=1
testtime=60s
class=os
test=splice
disk=1HDD
fs=ext4
cpufreq_governor=performance

Test 2 shows a big improvement:

19e3e6cdfdc73400 1b057bd800c3ea0c926191d7950
---------------- ---------------------------
%stddev %change %stddev
\ | \
171798 +38.9% 238710 ± 4% stress-ng.splice.ops_per_sec

the detail data:
for parent:
"stress-ng.splice.ops_per_sec": [
173056.44,
172030.08,
171401.68,
171694.23,
171001.19,
171606.93
],

for 1b057bd800:
"stress-ng.splice.ops_per_sec": [
244347.89,
259085.63,
231423.88,
232897.93,
226714.77,
237792.34
],


there are monitoring data such like perf data in original report. FYI

>
> thanks,
>
> greg k-h