freebsd-skq/sys/kern
adrian 65fc060c58 Add in support to optionally pin the swi threads.
Under enough load, the swi's can actually be preempted and migrated
to other currently free cores.  When doing RSS experiments, this lead
to the per-CPU TCP timers not lining up any more with the RX CPU said
flows were ending up on, leading to increased lock contention.

Since there was a little pushback on flipping them on by default,
I've left the default at "don't pin."

The other less obvious problem here is that the default swi
is also the same as the destination swi for CPU #0.  So if one
pins the swi on CPU #0, there's no default floating swi.

A nice future project would be to create a separate swi for
the "default" floating swi, as well as per-CPU swis that are
(optionally) pinned.

Tested:

* parallel TCP tests (2 x 1g unfortunately for now);
  CPU: Intel(R) Xeon(R) CPU E5-2650

Note:

This is based on some initial investigation into RSS/TCP stack lock
contention on FreeBSD-HEAD whilst at Netflix in January 2014.
2014-05-10 00:53:36 +00:00
..
bus_if.m
capabilities.conf Allow sigwait(2) in capabilities mode. 2014-01-28 01:49:49 +00:00
clock_if.m
cpufreq_if.m
device_if.m
genassym.sh
imgact_aout.c
imgact_binmisc.c sys/kern/imgact_binmisc.c -- free the right pointer mask vs magic 2014-04-08 22:12:01 +00:00
imgact_elf32.c
imgact_elf64.c
imgact_elf.c Refine r264422: set buf to NULL only when we don't allocate memory, 2014-04-14 21:02:20 +00:00
imgact_gzip.c
imgact_shell.c
inflate.c
init_main.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
init_sysent.c Regen per r263318. 2014-03-18 21:34:11 +00:00
kern_acct.c
kern_alq.c Prevent alq from panic when the invalid alq_file path specified. 2014-04-05 16:54:47 +00:00
kern_clock.c
kern_clocksource.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
kern_condvar.c
kern_conf.c
kern_cons.c Rework the EARLY_PRINTF mechanism. Instead of defining a special eprintf() 2014-02-12 00:53:38 +00:00
kern_context.c
kern_cpu.c Free resources in an error case. 2014-05-02 21:34:17 +00:00
kern_cpuset.c
kern_ctf.c
kern_descrip.c Request a non-exiting process in sysctl_kern_proc_{o,}filedesc 2014-05-02 21:55:09 +00:00
kern_dtrace.c
kern_environment.c
kern_et.c Fix build breakage. Apparently all ARM configs build kern_et.c, but only a 2014-04-02 17:34:17 +00:00
kern_event.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
kern_exec.c Make the array pointed to by AT_PAGESIZES auxv properly aligned. 2014-03-19 12:35:04 +00:00
kern_exit.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_fail.c
kern_ffclock.c
kern_fork.c
kern_gzio.c
kern_hhook.c
kern_idle.c
kern_intr.c
kern_jail.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
kern_khelp.c
kern_kthread.c
kern_ktr.c Don't lose track of the KTR entries copied from 'ktr_buf_init[]' to the 2014-03-22 22:35:57 +00:00
kern_ktrace.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_linker.c Use realloc(9) instead of doing the reallocation inline. 2014-04-05 20:44:52 +00:00
kern_lock.c
kern_lockf.c
kern_lockstat.c
kern_loginclass.c
kern_malloc.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
kern_mbuf.c Initialise m_pkthdr via bzero instead of explicitly zeroing each member 2014-04-04 21:09:06 +00:00
kern_mib.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
kern_module.c
kern_mtxpool.c Garbage collect mtxpool_lockbuilder, the mutex pool historically used 2014-05-02 07:57:40 +00:00
kern_mutex.c
kern_ntptime.c
kern_osd.c
kern_physio.c
kern_pmc.c
kern_poll.c
kern_priv.c
kern_proc.c Expose OBJT_MGTDEVICE VM objects used for GEM/TTM with drm2 as an 2014-02-11 21:57:37 +00:00
kern_prot.c
kern_racct.c
kern_rangelock.c
kern_rctl.c
kern_resource.c
kern_rmlock.c
kern_rwlock.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
kern_sdt.c Print a backtrace if the SDT(9) stub gets called so that there's at least 2014-02-22 01:41:45 +00:00
kern_sema.c
kern_sharedpage.c
kern_shutdown.c Thinko: don't forget to apply 'howto' in case init(8) isn't running. 2014-04-07 21:18:12 +00:00
kern_sig.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_switch.c
kern_sx.c
kern_synch.c
kern_syscalls.c
kern_sysctl.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
kern_tc.c
kern_thr.c
kern_thread.c
kern_time.c Fix VIRTUAL and PROF interval timers for short intervals, broken at r247903. 2014-04-16 18:37:46 +00:00
kern_timeout.c Add in support to optionally pin the swi threads. 2014-05-10 00:53:36 +00:00
kern_umtx.c Fix comments. 2014-03-19 12:45:40 +00:00
kern_uuid.c Fix a bug in be_uuid_dec(); it called le16dec() instead of be16dec(), 2014-02-13 22:24:36 +00:00
kern_xxx.c
ksched.c
link_elf_obj.c
link_elf.c
linker_if.m
Make.tags.inc Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
Makefile
makesyscalls.sh
md4c.c
md5c.c
p1003_1b.c
posix4_mib.c
sched_4bsd.c Given that as of r258002 the last external user is gone, make sched_lock 2014-04-29 20:51:57 +00:00
sched_ule.c Fix GENERIC build. 2014-03-19 00:38:27 +00:00
serdev_if.m
stack_protector.c
subr_acl_nfs4.c
subr_acl_posix1e.c
subr_autoconf.c
subr_blist.c
subr_bufring.c
subr_bus_dma.c
subr_bus.c Revert r263754, re-adding support for hw.bus.devctl_disable. Breaking 2014-04-28 20:38:08 +00:00
subr_busdma_bufalloc.c
subr_capability.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
subr_clock.c Fix a 2038 bug. 2014-05-01 22:28:14 +00:00
subr_counter.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_devstat.c change defaule permissions on /dev/devstat. while i'm here remove 2014-03-24 18:13:41 +00:00
subr_disk.c
subr_dummy_vdso_tc.c
subr_eventhandler.c
subr_fattime.c Fix a comment typo; conversion tables are for leap years, not leap seconds. 2014-04-20 13:37:22 +00:00
subr_firmware.c
subr_hash.c
subr_hints.c Preserve one character space for a trailing '\0'. 2014-02-14 20:54:03 +00:00
subr_kdb.c
subr_kobj.c
subr_lock.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
subr_log.c
subr_mbpool.c
subr_mchain.c
subr_module.c
subr_msgbuf.c
subr_param.c
subr_pcpu.c Create two public UMA_ZONE_PCPU zones: 64 bit sized and pointer sized. 2014-02-10 19:59:46 +00:00
subr_pctrie.c
subr_power.c
subr_prf.c Fix grammar error and trailing newline. 2014-04-23 02:21:17 +00:00
subr_prof.c
subr_rman.c Avoid unsigned integer overflow which can cause 2014-05-05 15:59:31 +00:00
subr_rtc.c
subr_sbuf.c
subr_scanf.c
subr_sglist.c Add sglist_append_bio(9) to append a struct bio's data to a sglist 2014-01-13 04:41:08 +00:00
subr_sleepqueue.c Drop the 3rd clause from all 3 clause BSD licenses where I am the sole 2014-02-05 18:13:27 +00:00
subr_smp.c Retire smp_active. It was racey and caused demonstrated problems with 2014-04-26 20:27:54 +00:00
subr_stack.c
subr_syscall.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
subr_taskqueue.c
subr_terminal.c Do not fill screen, while muted. 2014-04-07 22:37:13 +00:00
subr_trap.c Fix two issues with /dev/mem access on amd64, both causing kernel page 2014-03-21 14:25:09 +00:00
subr_turnstile.c
subr_uio.c
subr_unit.c
subr_vmem.c Do not set M_BESTFIT if a strategy has already been provided. This 2014-04-16 21:39:43 +00:00
subr_witness.c Bump WITNESS_PENDLIST by MAXCPU to account for the 2014-04-29 17:22:29 +00:00
sys_capability.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
sys_generic.c Hide internal details of sbintime_t implementation wrapping INT64_MAX into 2014-04-12 23:29:29 +00:00
sys_pipe.c Ignore the error from pipespace_new when creating a pipe. 2014-05-02 00:52:13 +00:00
sys_procdesc.c Implement kqueue(2) for procdesc(4). 2014-04-07 18:10:49 +00:00
sys_process.c
sys_socket.c
syscalls.c Regen per r263318. 2014-03-18 21:34:11 +00:00
syscalls.master Remove dead code from umtx support: 2014-03-18 21:32:03 +00:00
systrace_args.c Regen per r263318. 2014-03-18 21:34:11 +00:00
sysv_ipc.c
sysv_msg.c
sysv_sem.c
sysv_shm.c
tty_compat.c
tty_info.c
tty_inq.c
tty_outq.c
tty_pts.c
tty_tty.c
tty_ttydisc.c
tty.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_accf.c
uipc_debug.c
uipc_domain.c
uipc_mbuf2.c
uipc_mbuf.c Remove historical macro. 2014-01-16 13:42:50 +00:00
uipc_mqueue.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_sem.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_shm.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_sockbuf.c Fix PR kern/185813 "SOCK_SEQPACKET AF_UNIX sockets with asymmetrical 2014-03-06 20:24:15 +00:00
uipc_socket.c Simplify wait/nowait code, eventually killing last remnant of 2014-01-16 13:45:41 +00:00
uipc_syscalls.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
uipc_usrreq.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_acl.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_aio.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_bio.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
vfs_cache.c
vfs_cluster.c
vfs_default.c
vfs_export.c
vfs_extattr.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_hash.c
vfs_init.c
vfs_lookup.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_mount.c Use proper MFSNAMELEN for fs type. 2014-04-12 21:39:17 +00:00
vfs_mountroot.c
vfs_subr.c Rename global cnt to vm_cnt to avoid shadowing. 2014-03-22 10:26:09 +00:00
vfs_syscalls.c Update kernel inclusions of capability.h to use capsicum.h instead; some 2014-03-16 10:55:57 +00:00
vfs_vnops.c change td_retval into a union w/ off_t, with defines to mask the 2014-03-16 00:53:40 +00:00
vnode_if.src