Ok guys, I've comitted the work. This combined with the commit Bruce
just made to the userret()/ast() code removes all memory/cache stalls
from the syscall critical path.
two-process getuid() tests, SMP build:
per-process
getuid()/sec
++cnt.v_syscall 853000
PCPU_LAZY_INC(cnt.v_syscall) 1000000 +17.2%
PCPU + Bruce's userret() code 1238216 +23.8%
Total boost: +45%. This is a significant improvement, folks!
In anycase, please feel free to convert other vmeter counters from
atomic_add_int() to PCPU_LAZY_INC(). Remember, not all counters can
be converted... things like cnt.v_free_min, for example, cannot be
converted because the VM system needs to get at the value quickly.
Check before you change.
We should probably split out the statistics that cannot be made
per-cpu.
-Matt
Matthew Dillon
<dillon@backplane.com>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message