Sorry for the delay, here comes the new results from usemem which Kirill used in the previous patch.
Tested on Xeon machine with 64GiB of RAM, using the current default fault order 4.
Sequential access 16GiB file
Baseline with-patch
1 thread
minor fault 4,194,406 262,194
time, seconds 6.38 5.08
8 thread
minor fault 33,554,768 3,466,150
time, seconds 10.92 7.33
32 thread
minor fault 134,220,140 8,450,265
time, seconds 40.77 34.24
60 thread
minor fault 251,661,943 15,790,478
time, seconds 77.23 65.19
120 thread
minor fault 503,330,421 31,578,717
time, seconds 143.11 130.58
Random access 16GiB file
Baseline with-patch1 thread
minor fault 263,568 16,667 time, seconds 10.08 10.57
8 thread minor fault 2,097,700 184,134
time, seconds 13.65 13.66
32 thread
minor fault 8,389,948 579,089
time, seconds 39.44 38.56
60 thread
minor fault 15,733,099 1,019,478
time, seconds 73.67 72.63
120 thread
minor fault 31,467,940 2,009,898
time, seconds 148.48 145.81