From: tedu Date: Mon, 15 Dec 2014 20:38:22 +0000 (+0000) Subject: don't drop the kernel lock everytime. on a busy system, this results in X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=16af66b18a2ea3e42f9256168052a7cd8b906c89;p=openbsd don't drop the kernel lock everytime. on a busy system, this results in the reaper spending more than half its time in uvm_pause. we want the system to be interactive, but we want throughput too. this seems like a decent balance. --- diff --git a/sys/uvm/uvm_glue.c b/sys/uvm/uvm_glue.c index 7a9618aa496..9eff05e49e9 100644 --- a/sys/uvm/uvm_glue.c +++ b/sys/uvm/uvm_glue.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uvm_glue.c,v 1.68 2014/12/05 04:12:48 uebayasi Exp $ */ +/* $OpenBSD: uvm_glue.c,v 1.69 2014/12/15 20:38:22 tedu Exp $ */ /* $NetBSD: uvm_glue.c,v 1.44 2001/02/06 19:54:44 eeh Exp $ */ /* @@ -467,8 +467,12 @@ uvm_atopg(vaddr_t kva) void uvm_pause(void) { - KERNEL_UNLOCK(); - KERNEL_LOCK(); + static unsigned int toggle; + if (toggle++ > 128) { + toggle = 0; + KERNEL_UNLOCK(); + KERNEL_LOCK(); + } if (curcpu()->ci_schedstate.spc_schedflags & SPCF_SHOULDYIELD) preempt(NULL); }