lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <cfe666d6-931e-4a73-b132-1b8e1ee96f1f@bytedance.com>
Date: Sat, 1 Feb 2025 11:44:14 +0800
From: Qi Zheng <zhengqi.arch@...edance.com>
To: Rik van Riel <riel@...riel.com>
Cc: "Paul E. McKenney" <paulmck@...nel.org>,
 Matthew Wilcox <willy@...radead.org>, Peter Zijlstra <peterz@...radead.org>,
 David Hildenbrand <david@...hat.com>,
 kernel test robot <oliver.sang@...el.com>, oe-lkp@...ts.linux.dev,
 lkp@...el.com, linux-kernel@...r.kernel.org,
 Andrew Morton <akpm@...ux-foundation.org>,
 Dave Hansen <dave.hansen@...ux.intel.com>, Andy Lutomirski
 <luto@...nel.org>, Catalin Marinas <catalin.marinas@....com>,
 David Rientjes <rientjes@...gle.com>, Hugh Dickins <hughd@...gle.com>,
 Jann Horn <jannh@...gle.com>, Lorenzo Stoakes <lorenzo.stoakes@...cle.com>,
 Mel Gorman <mgorman@...e.de>, Muchun Song <muchun.song@...ux.dev>,
 Peter Xu <peterx@...hat.com>, Will Deacon <will@...nel.org>,
 Zach O'Keefe <zokeefe@...gle.com>, Dan Carpenter <dan.carpenter@...aro.org>,
 Frederic Weisbecker <frederic@...nel.org>,
 Neeraj Upadhyay <neeraj.upadhyay@...nel.org>
Subject: Re: [linus:master] [x86] 4817f70c25: stress-ng.mmapaddr.ops_per_sec
 63.0% regression



On 2025/2/1 05:11, Rik van Riel wrote:
> On Thu, 2025-01-30 at 01:33 +0800, Qi Zheng wrote:
>>
>> stress-ng: info:  [671] stressor       bogo ops real time  usr time
>> sys
>> time   bogo ops/s   bogo ops/s
>> stress-ng: info:  [671]                           (secs)    (secs)
>> (secs)   (real time) (usr+sys time)
>> stress-ng: info:  [671] mmapaddr       19803127     60.01    235.20
>> 1146.76    330007.29     14329.74
> 
> How stable are these numbers?
> 
> It looks like the bogo ops/s number without the local_bh_disable
> was 17233711, while the number is 19803127 after.
> 
> That looks like a 14% speedup.
> 
> This is not back to the 28440843 you had before
> MMU_GATHER_RCU_TABLE_FREE was enabled unconditionally,
> but it does reduce the size of the regression
> considerably, from 40% to 31%.

This difference should be caused by the jitter of the test, I just
retested it:

1) disable PT_RECLAIM

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [1141] dispatching hogs: 64 mmapaddr
stress-ng: info:  [1141] successful run completed in 60.09s (1 min, 0.09 
secs)
stress-ng: info:  [1141] stressor       bogo ops real time  usr time 
sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [1141]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [1141] mmapaddr       32932197     60.01    349.92 
1086.26    548798.08     22930.41
stress-ng: info:  [1141] for a 60.09s run time:
stress-ng: info:  [1141]    1442.14s available CPU time
stress-ng: info:  [1141]     350.29s user time   ( 24.29%)
stress-ng: info:  [1141]    1086.67s system time ( 75.35%)
stress-ng: info:  [1141]    1436.96s total time  ( 99.64%)
stress-ng: info:  [1141] load average: 41.06 11.81 4.06
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [1270] dispatching hogs: 64 mmapaddr
stress-ng: info:  [1270] successful run completed in 60.04s (1 min, 0.04 
secs)
stress-ng: info:  [1270] stressor       bogo ops real time  usr time 
sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [1270]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [1270] mmapaddr       32998610     60.01    346.09 
1089.75    549908.86     22982.09
stress-ng: info:  [1270] for a 60.04s run time:
stress-ng: info:  [1270]    1441.08s available CPU time
stress-ng: info:  [1270]     346.45s user time   ( 24.04%)
stress-ng: info:  [1270]    1090.16s system time ( 75.65%)
stress-ng: info:  [1270]    1436.61s total time  ( 99.69%)
stress-ng: info:  [1270] load average: 53.09 20.95 7.76
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [1400] dispatching hogs: 64 mmapaddr
stress-ng: info:  [1400] successful run completed in 60.06s (1 min, 0.06 
secs)
stress-ng: info:  [1400] stressor       bogo ops real time  usr time 
sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [1400]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [1400] mmapaddr       32880743     60.01    350.36 
1084.90    547920.96     22909.26
stress-ng: info:  [1400] for a 60.06s run time:
stress-ng: info:  [1400]    1441.52s available CPU time
stress-ng: info:  [1400]     350.75s user time   ( 24.33%)
stress-ng: info:  [1400]    1085.29s system time ( 75.29%)
stress-ng: info:  [1400]    1436.04s total time  ( 99.62%)
stress-ng: info:  [1400] load average: 56.85 28.12 11.16

2) disable PT_RECLAIM + unconditionally enable MMU_GATHER_RCU_TABLE_FREE

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [676] dispatching hogs: 64 mmapaddr
stress-ng: info:  [676] successful run completed in 60.03s (1 min, 0.03 
secs)
stress-ng: info:  [676] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [676]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [676] mmapaddr       19600836     60.01    206.77 
987.29    326626.71     16415.29
stress-ng: info:  [676] for a 60.03s run time:
stress-ng: info:  [676]    1440.76s available CPU time
stress-ng: info:  [676]     207.08s user time   ( 14.37%)
stress-ng: info:  [676]     987.63s system time ( 68.55%)
stress-ng: info:  [676]    1194.71s total time  ( 82.92%)
stress-ng: info:  [676] load average: 40.91 11.72 4.03
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [809] dispatching hogs: 64 mmapaddr
stress-ng: info:  [809] successful run completed in 60.07s (1 min, 0.07 
secs)
stress-ng: info:  [809] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [809]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [809] mmapaddr       19724158     60.02    233.64 
1135.94    328625.29     14401.61
stress-ng: info:  [809] for a 60.07s run time:
stress-ng: info:  [809]    1441.78s available CPU time
stress-ng: info:  [809]     234.00s user time   ( 16.23%)
stress-ng: info:  [809]    1136.38s system time ( 78.82%)
stress-ng: info:  [809]    1370.38s total time  ( 95.05%)
stress-ng: info:  [809] load average: 55.16 21.29 7.83
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [939] dispatching hogs: 64 mmapaddr
stress-ng: info:  [939] successful run completed in 60.09s (1 min, 0.09 
secs)
stress-ng: info:  [939] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [939]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [939] mmapaddr       19791766     60.01    238.14 
1132.85    329798.06     14436.11
stress-ng: info:  [939] for a 60.09s run time:
stress-ng: info:  [939]    1442.04s available CPU time
stress-ng: info:  [939]     238.48s user time   ( 16.54%)
stress-ng: info:  [939]    1133.25s system time ( 78.59%)
stress-ng: info:  [939]    1371.73s total time  ( 95.12%)
stress-ng: info:  [939] load average: 58.39 28.66 11.33

3) disable PT_RECLAIM + unconditionally enable MMU_GATHER_RCU_TABLE_FREE 
+ local_bh_disable

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [702] dispatching hogs: 64 mmapaddr
stress-ng: info:  [702] successful run completed in 60.05s (1 min, 0.05 
secs)
stress-ng: info:  [702] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [702]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [702] mmapaddr       19838750     60.01    213.89 
1038.45    330573.57     15841.35
stress-ng: info:  [702] for a 60.05s run time:
stress-ng: info:  [702]    1441.13s available CPU time
stress-ng: info:  [702]     214.20s user time   ( 14.86%)
stress-ng: info:  [702]    1038.80s system time ( 72.08%)
stress-ng: info:  [702]    1253.00s total time  ( 86.95%)
stress-ng: info:  [702] load average: 43.03 12.29 4.22
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [837] dispatching hogs: 64 mmapaddr
stress-ng: info:  [837] successful run completed in 60.05s (1 min, 0.05 
secs)
stress-ng: info:  [837] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [837]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [837] mmapaddr       19859240     60.01    237.16 
1137.80    330931.82     14443.50
stress-ng: info:  [837] for a 60.05s run time:
stress-ng: info:  [837]    1441.15s available CPU time
stress-ng: info:  [837]     237.54s user time   ( 16.48%)
stress-ng: info:  [837]    1138.20s system time ( 78.98%)
stress-ng: info:  [837]    1375.74s total time  ( 95.46%)
stress-ng: info:  [837] load average: 44.59 19.18 7.65
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmapaddr 64
stress-ng: info:  [974] dispatching hogs: 64 mmapaddr
stress-ng: info:  [974] successful run completed in 60.07s (1 min, 0.07 
secs)
stress-ng: info:  [974] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [974]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [974] mmapaddr       19769594     60.01    240.35 
1141.47    329421.87     14306.92
stress-ng: info:  [974] for a 60.07s run time:
stress-ng: info:  [974]    1441.78s available CPU time
stress-ng: info:  [974]     240.73s user time   ( 16.70%)
stress-ng: info:  [974]    1141.84s system time ( 79.20%)
stress-ng: info:  [974]    1382.57s total time  ( 95.89%)
stress-ng: info:  [974] load average: 43.68 22.85 10.43

And I went to look at the source code of stress-ng. For the --mmapaddr
option, the prot parameter passed to mmap() is indeed PROT_READ.
Therefore, this test will only cause the allocation and freeing of page 
table pages.

For the --mmap option, the prot parameter is PROT_READ | PROT_WRITE,
this will also cause the allocation and freeing of normal pages, so I
just did the following test:

1) disable PT_RECLAIM

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [668] dispatching hogs: 64 mmap
stress-ng: info:  [668] successful run completed in 60.07s (1 min, 0.07 
secs)
stress-ng: info:  [668] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [668]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [668] mmap              17568     60.02    434.94 
668.32       292.68        15.92
stress-ng: info:  [668] for a 60.07s run time:
stress-ng: info:  [668]    1441.58s available CPU time
stress-ng: info:  [668]     435.25s user time   ( 30.19%)
stress-ng: info:  [668]     668.77s system time ( 46.39%)
stress-ng: info:  [668]    1104.02s total time  ( 76.58%)
stress-ng: info:  [668] load average: 40.91 11.74 4.04
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [839] dispatching hogs: 64 mmap
stress-ng: info:  [839] successful run completed in 60.07s (1 min, 0.07 
secs)
stress-ng: info:  [839] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [839]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [839] mmap              17919     60.01    555.27 
853.19       298.60        12.72
stress-ng: info:  [839] for a 60.07s run time:
stress-ng: info:  [839]    1441.66s available CPU time
stress-ng: info:  [839]     555.63s user time   ( 38.54%)
stress-ng: info:  [839]     853.58s system time ( 59.21%)
stress-ng: info:  [839]    1409.21s total time  ( 97.75%)
stress-ng: info:  [839] load average: 53.60 21.01 7.77
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [968] dispatching hogs: 64 mmap
stress-ng: info:  [968] successful run completed in 60.04s (1 min, 0.04 
secs)
stress-ng: info:  [968] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [968]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [968] mmap              17834     60.01    552.80 
864.17       297.17        12.59
stress-ng: info:  [968] for a 60.04s run time:
stress-ng: info:  [968]    1440.99s available CPU time
stress-ng: info:  [968]     553.14s user time   ( 38.39%)
stress-ng: info:  [968]     864.58s system time ( 60.00%)
stress-ng: info:  [968]    1417.72s total time  ( 98.39%)
stress-ng: info:  [968] load average: 56.07 28.05 11.20

2) disable PT_RECLAIM + unconditionally enable MMU_GATHER_RCU_TABLE_FREE

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [704] dispatching hogs: 64 mmap
stress-ng: info:  [704] successful run completed in 60.06s (1 min, 0.06 
secs)
stress-ng: info:  [704] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [704]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [704] mmap              17400     60.01    497.26 
764.25       289.94        13.79
stress-ng: info:  [704] for a 60.06s run time:
stress-ng: info:  [704]    1441.34s available CPU time
stress-ng: info:  [704]     497.57s user time   ( 34.52%)
stress-ng: info:  [704]     764.66s system time ( 53.05%)
stress-ng: info:  [704]    1262.23s total time  ( 87.57%)
stress-ng: info:  [704] load average: 40.69 11.70 4.02
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [875] dispatching hogs: 64 mmap
stress-ng: info:  [875] successful run completed in 60.05s (1 min, 0.05 
secs)
stress-ng: info:  [875] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [875]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [875] mmap              17874     60.03    562.42 
842.09       297.75        12.73
stress-ng: info:  [875] for a 60.05s run time:
stress-ng: info:  [875]    1441.31s available CPU time
stress-ng: info:  [875]     562.78s user time   ( 39.05%)
stress-ng: info:  [875]     842.50s system time ( 58.45%)
stress-ng: info:  [875]    1405.28s total time  ( 97.50%)
stress-ng: info:  [875] load average: 51.59 20.56 7.65
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [1004] dispatching hogs: 64 mmap
stress-ng: info:  [1004] successful run completed in 60.14s (1 min, 0.14 
secs)
stress-ng: info:  [1004] stressor       bogo ops real time  usr time 
sys time   bogo ops/s   bogo ops/s
stress-ng: info:  [1004]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [1004] mmap              17969     60.01    554.19 
849.38       299.42        12.80
stress-ng: info:  [1004] for a 60.14s run time:
stress-ng: info:  [1004]    1443.32s available CPU time
stress-ng: info:  [1004]     554.59s user time   ( 38.42%)
stress-ng: info:  [1004]     849.81s system time ( 58.88%)
stress-ng: info:  [1004]    1404.40s total time  ( 97.30%)
stress-ng: info:  [1004] load average: 58.84 28.43 11.22

3) disable PT_RECLAIM + unconditionally enable MMU_GATHER_RCU_TABLE_FREE 
+ local_bh_disable

root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [684] dispatching hogs: 64 mmap
stress-ng: info:  [684] successful run completed in 60.05s (1 min, 0.05 
secs)
stress-ng: info:  [684] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [684]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [684] mmap              17817     60.01    555.70 
847.53       296.88        12.70
stress-ng: info:  [684] for a 60.05s run time:
stress-ng: info:  [684]    1441.12s available CPU time
stress-ng: info:  [684]     556.10s user time   ( 38.59%)
stress-ng: info:  [684]     847.94s system time ( 58.84%)
stress-ng: info:  [684]    1404.04s total time  ( 97.43%)
stress-ng: info:  [684] load average: 41.27 11.82 4.06
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [815] dispatching hogs: 64 mmap
stress-ng: info:  [815] successful run completed in 60.06s (1 min, 0.06 
secs)
stress-ng: info:  [815] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [815]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [815] mmap              17860     60.01    553.77 
856.56       297.60        12.66
stress-ng: info:  [815] for a 60.06s run time:
stress-ng: info:  [815]    1441.44s available CPU time
stress-ng: info:  [815]     554.13s user time   ( 38.44%)
stress-ng: info:  [815]     856.94s system time ( 59.45%)
stress-ng: info:  [815]    1411.07s total time  ( 97.89%)
stress-ng: info:  [815] load average: 49.71 20.32 7.66
root@...ian:~# stress-ng --timeout 60 --times --verify --metrics 
--no-rand-seed --mmap 64
stress-ng: info:  [944] dispatching hogs: 64 mmap
stress-ng: info:  [944] successful run completed in 60.08s (1 min, 0.08 
secs)
stress-ng: info:  [944] stressor       bogo ops real time  usr time  sys 
time   bogo ops/s   bogo ops/s
stress-ng: info:  [944]                           (secs)    (secs) 
(secs)   (real time) (usr+sys time)
stress-ng: info:  [944] mmap              17932     60.01    556.23 
857.77       298.82        12.68
stress-ng: info:  [944] for a 60.08s run time:
stress-ng: info:  [944]    1442.01s available CPU time
stress-ng: info:  [944]     556.63s user time   ( 38.60%)
stress-ng: info:  [944]     858.16s system time ( 59.51%)
stress-ng: info:  [944]    1414.79s total time  ( 98.11%)
stress-ng: info:  [944] load average: 56.02 27.74 11.12

It looks like there is basically no difference in bogo ops/s.

Thanks!

> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ