kernel - Major MP work on kq and signal processing
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 2 Nov 2011 06:38:42 +0000 (23:38 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 2 Nov 2011 06:38:42 +0000 (23:38 -0700)
commite2b148c60d04976ee2f7c03874a91216c8c5b4c1
tree24f4461413c07e0b0eae364e029fd3839190b0c7
parent7ca5320abff88e540b69a3676984fb50421c679e
kernel - Major MP work on kq and signal processing

* Remove the global kq_token and move to a per-kq and per-kqlist
  pool token.  This greatly improves postgresql and mysql performance
  on MP systems.

* Adjust signal processing tokens to be per-LWP instead of per-PROC.
  Signal delivery still utilizes a per-proc token but signal distribution
  now uses a per-LWP token, which allows the trap code to only lock the
  LWP when checking for pending signals.

  This also significantly improves database performance.

* The socket code also now uses only its per-socket pool token instead
  of kq_token for its kq operations.  kq handles its own tokens.
sys/kern/init_main.c
sys/kern/kern_event.c
sys/kern/kern_exit.c
sys/kern/kern_fork.c
sys/kern/kern_sig.c
sys/kern/kern_synch.c
sys/kern/uipc_msg.c
sys/kern/uipc_socket2.c
sys/sys/event.h
sys/sys/eventvar.h
sys/sys/proc.h