When faulting a page after COW neighborhood pages are likely to already
be entered.   So speed up the fault by doing a narrow fault (do not try
to map in adjacent pages).

This is stolen from NetBSD.

ok?

Index: uvm/uvm_fault.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_fault.c,v
retrieving revision 1.129
diff -u -p -r1.129 uvm_fault.c
--- uvm/uvm_fault.c     4 Apr 2022 09:27:05 -0000       1.129
+++ uvm/uvm_fault.c     27 Jun 2022 17:05:26 -0000
@@ -737,6 +737,16 @@ uvm_fault_check(struct uvm_faultinfo *uf
        }
 
        /*
+        * for a case 2B fault waste no time on adjacent pages because
+        * they are likely already entered.
+        */
+       if (uobj != NULL && amap != NULL &&
+           (flt->access_type & PROT_WRITE) != 0) {
+               /* wide fault (!narrow) */
+               flt->narrow = TRUE;
+       }
+
+       /*
         * establish range of interest based on advice from mapper
         * and then clip to fit map entry.   note that we only want
         * to do this the first time through the fault.   if we

Reply via email to