freebsd-skq/sys
Scott Long 22657ce129 A number of significant enhancements to the ciss driver:
1.  The FreeBSD driver was setting an interrupt coalesce delay of 1000us
for reasons that I can only speculate on.  This was hurting everything
from lame sequential I/O "benchmarks" to legitimate filesystem metadata
operations that relied on serialized barrier writes.  One of my
filesystem tests went from 35s to complete down to 6s.

2.  Implemented the Performant transport method.  Without the fix in
(1), I saw almost no difference.  With it, my filesystem tests showed
another 5-10% improvement in speed.  It was hard to measure CPU
utilization in any meaningful way, so it's not clear if there was a
benefit there, though there should have been since the interrupt handler
was reduced from 2 or more PCI reads down to 1.

3.  Implemented MSI-X.  Without any docs on this, I was just taking a
guess, and it appears to only work with the Performant method.  This
could be a programming or understanding mistake on my part.  While this
by itself made almost no difference to performance since the Performant
method already eliminated most of the synchronous reads over the PCI
bus, it did allow the CISS hardware to stop sharing its interrupt with
the USB hardware, which in turn allowed the driver to become decoupled
from the Giant-locked USB driver stack.  This increased performance by
almost 20%.  The MSI-X setup was done with 4 vectors allocated, but only
1 vector used since the performant method was told to only use 1 of 4
queues.  Fiddling with this might make it work with the simpleq method,
not sure.  I did not implement MSI since I have no MSI-specific hardware
in my test lab.

4.  Improved the locking in the driver, trimmed some data structures.
This didn't improve test times in any measurable way, but it does look
like it gave a minor improvement to CPU usage when many
processes/threads were doing I/O in parallel.  Again, this was hard to
accurately test.
2008-07-11 21:20:51 +00:00
..
amd64 Extend pmap_demote_pde() to include the ability to instantiate a new page 2008-07-10 16:22:24 +00:00
arm Remove the unused major/minor numbers from iodev and memdev. 2008-06-25 07:45:31 +00:00
boot Remove the sbni(4) driver. No one responded to calls to test it on 2008-07-04 21:06:57 +00:00
bsm
cam Add quirk for the Samsung YP-U3 2008-07-09 17:00:14 +00:00
cddl Remove the $FreeBSD$ tag again, now I know fbsd:nokeywords exists. 2008-06-12 08:53:54 +00:00
compat style(9): put parentheses around return values. 2008-07-10 19:54:34 +00:00
conf Add CTF conversion to the objects compiled from generated code. 2008-07-05 06:12:14 +00:00
contrib Remove the oltr(4) driver. No one responded to calls for testing on 2008-07-04 18:58:53 +00:00
crypto
ddb Print out the container lock when showing the thread state in DDB. 2008-06-18 20:42:01 +00:00
dev A number of significant enhancements to the ciss driver: 2008-07-11 21:20:51 +00:00
fs Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
gdb
geom - Fix a logic error when updating plex configuration. 2008-07-11 16:46:29 +00:00
gnu Move the head of byte-level advisory lock list from the 2008-04-16 11:33:32 +00:00
i386 Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
ia64 Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
isa
kern Improve readability and cscope searches a little bit by not using the 2008-07-11 14:48:28 +00:00
libkern
mips In FreeBSD 7.0 and beyond, pmap_growkernel() should pass VM_ALLOC_INTERRUPT 2008-07-07 17:31:02 +00:00
modules Remove the sbsh(4) driver. No one responded to requests for testing the 2008-07-04 21:24:35 +00:00
net Rather than checking for a NULL so_pcb in raw_attach(), assert that 2008-07-09 18:41:31 +00:00
net80211 reorder RSN/WPA2 ie in beacon and probe response frames to comply 2008-07-07 17:24:55 +00:00
netatalk Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netgraph Dust off old code for support of USB isochronous transfers. 2008-07-11 17:13:43 +00:00
netinet Slightly rearrange validation of UDP arguments and jail processing in 2008-07-10 16:20:18 +00:00
netinet6 Pass the ucred along into in{,6}_pcblookup_local for upcoming 2008-07-10 13:31:11 +00:00
netipsec Remove unused support for local and foreign addresses in generic raw 2008-07-09 15:48:16 +00:00
netipx Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netnatm Remove NETISR_MPSAFE, which allows specific netisr handlers to be directly 2008-07-04 00:21:38 +00:00
netncp
netsmb
nfs
nfs4client Once the ENOLCK is detected we expect to retry the acquisition. 2008-05-27 00:20:19 +00:00
nfsclient Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
nfsserver Remove spls from NFS server setup call; expand receive socket buffer 2008-06-30 20:43:06 +00:00
nlm Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
opencrypto
pc98 Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
pccard
pci Add driver support for RTL8102E and RTL8102EL which is the second 2008-07-09 01:58:18 +00:00
powerpc Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
rpc Introduce a new lock, hostname_mtx, and use it to synchronize access 2008-07-05 13:10:10 +00:00
security Rework the lifetime management of the kernel implementation of POSIX 2008-06-27 05:39:04 +00:00
sparc64 Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
sun4v Add HWPMC_HOOKS to GENERIC kernels, this makes hwpmc.ko work out 2008-07-07 22:55:11 +00:00
sys Revert r180431. 2008-07-11 01:10:40 +00:00
tools
ufs Fix comments to replace SBSIZE with SBLOCKSIZE, since SBSIZE 2008-05-24 20:44:14 +00:00
vm Use the VM_ALLOC_INTERRUPT for the page requests when allocating memory 2008-07-11 11:27:42 +00:00
xdr
Makefile Use 'CSCOPE_ARCHDIR' to change the default architecture directories to 2008-07-10 16:03:24 +00:00