Matthew Dillon [Thu, 20 Sep 2012 04:33:03 +0000 (21:33 -0700)]
kernel - Don't call lwkt_user_yield() in uiomove() unless xfer is big
* Only call lwkt_user_yield() in uiomove() when the xfer is big.
Matthew Dillon [Wed, 19 Sep 2012 18:25:09 +0000 (11:25 -0700)]
kernel - Add usched_dfly algorith, set as default for now (7)
* Reenable weight2 (the process pairing heuristic) and fix the
edge cases associated with it.
* Change the process pulling behavior. Now we pull the 'worst' thread
from some other cpu instead of the best (duh!), we only pull when a
cpu winds up with no designated user threads, or we pull via a
schedulerclock-implemented rover.
The schedulerclock-implemented rover will allow ONE cpu to pull the
'worst' thread across all cpus (with some locality) once every
round-robin ticks (4 scheduler ticks).
The rover is responsible for taking excess processes that are unbalancing
one or more cpu's (for example, you have 6 running batch processes and
only 4 cpus) and slowly moving them between cpus. If we did not do this
the 'good' processes running on the unbalanced cpus are put at an unfair
disadvantage.
* This should fix all known edge cases, including ramp-down edge cases.
Matthew Dillon [Wed, 19 Sep 2012 12:10:21 +0000 (05:10 -0700)]
kernel - Add usched_dfly algorith, set as default for now (6)
* Fix an edge case where the pairing could cause flapping.
* Fix an edge case where user processes were interrupting each other
when they were in the same queue, which could cause a synchronous
process like a postgres server to lose cpu while holding internal
locks during a short operation.
Matthew Dillon [Wed, 19 Sep 2012 11:41:27 +0000 (04:41 -0700)]
kernel - Add usched_dfly algorith, set as default for now (5)
* Do a better job pushing threads to the correct cpu. Keep the load
factor live even when the thread goes to sleep, until some other thread
tries to go to sleep on the same cpu.
* Handle an edge case where a cpu-bound thread needs to be moved to
another cpu.
* Pull once a second and on-demand.
Matthew Dillon [Wed, 19 Sep 2012 03:55:18 +0000 (20:55 -0700)]
kernel - Add usched_dfly algorith, set as default for now (4)
* Fix fork regression with usched_dfly. Most fork/exec sequences involve
the parent waiting. The new scheduler was placing the newly forked
process on another cpu which is non-optimal if the parent is going
to immediately wait.
Instead if there is nothing else waiting to run on the current cpu,
leave the forked process on the current cpu initially. If the parent
waits quickly the forked process will get cpu, otherwise it will get
scheduled away soon enough. If the parent forks additional children
then we find there is something on the queue now (the first child) and
put the additional children on other cpus.
Reported-by: thesjg
Matthew Dillon [Tue, 18 Sep 2012 21:18:24 +0000 (14:18 -0700)]
kernel - Increase machdep.cpu_idle_repeat from 4 to 750
* Increase machdep.cpu_idle_repeat from 4 to 750. It now takes longer
before the kernel will move from HLT/MONITOR/MWAIT to ACPI-based halting.
* Improves benchmark performance significantly on recent cpus without
eating up too much extra power, but laptop tests are still pending.
* Laptop users can always set it back to 4.
Matthew Dillon [Tue, 18 Sep 2012 20:58:11 +0000 (13:58 -0700)]
usched - Add usched utility
* Currently must run as root
* usched {bsd4,dfly} program args...
François Tigeot [Tue, 18 Sep 2012 20:38:59 +0000 (22:38 +0200)]
tuning(7): shm_use_phys is now enabled by default
Matthew Dillon [Tue, 18 Sep 2012 18:45:19 +0000 (11:45 -0700)]
kernel - Account for file reads that take the VM shortcut
* Account for file reads that take the VM shortcut in hammer's statistics.
Sascha Wildner [Tue, 18 Sep 2012 18:18:35 +0000 (20:18 +0200)]
kernel/usched_dfly: Small UP compilation fix.
Matthew Dillon [Tue, 18 Sep 2012 18:01:35 +0000 (11:01 -0700)]
kernel - Add usched_dfly algorith, set as default for now (3)
* Add a field to the thread structure, td_wakefromcpu. All wakeup()
family calls will load this field with the cpu the thread was woken
up FROM.
* Use this field in usched_dfly to weight scheduling such that pairs
of synchronously-dependent threads (for example, a pgbench thread
and a postgres server process) are placed closer to each other in
the cpu topology.
* Weighting:
- Load matters the most
- Current cpu thread is scheduled on is next
- Synchronous wait/wakeup weighting is last
* Tests on monster yield better all-around results with a new all-time
high w/ pgbench -j 40 -c 40 -T 60 -S bench:
25% idle at 40:40 tps = 215293.173300 (excluding connections establishing)
Without the wait/wakeup weighting (but with allwload and current cpu
weighting):
41% idle at 40:40 tps = 162352.813046 (excluding connections establishing)
Without wait/wakeup or current-cpu weighting. Load balancing only:
43% idle at 40:40 tps = 159047.440641 (excluding connections establishing)
Sascha Wildner [Tue, 18 Sep 2012 17:01:42 +0000 (19:01 +0200)]
Mention KTR_USCHED_DFLY in the manpage and in the LINTs.
Sascha Wildner [Tue, 18 Sep 2012 17:01:11 +0000 (19:01 +0200)]
kernel/usched_dfly: #if 0 all unused KTR_INFOs (fixes build with KTR).
Sascha Wildner [Tue, 18 Sep 2012 16:57:11 +0000 (18:57 +0200)]
kernel/usched_bsd4: Declare the KTR_INFO_MASTER(usched) as extern.
It is shared with usched_dfly.
Matthew Dillon [Tue, 18 Sep 2012 16:25:03 +0000 (09:25 -0700)]
kernel - add usched_dfly algorith, set as default for now (3)
* UP compile fixes.
Reported-by: swildner
Matthew Dillon [Tue, 18 Sep 2012 06:54:07 +0000 (23:54 -0700)]
kernel - add usched_dfly algorith, set as default for now (2)
* Bug fix to the load accounting code, which effects cpu selection.
Matthew Dillon [Tue, 18 Sep 2012 06:17:51 +0000 (23:17 -0700)]
kernel - add usched_dfly algorith, set as default for now
* Fork usched_bsd4 for continued development.
* Rewrite the bsd4 scheduler to use per-cpu spinlocks and queues.
* Reformulate the cpu selection algorithm using the topology info.
We now do a top-down iteration instead of a bottom-up iteration
to calculate the best cpu node to schedule something to.
Implements both thread push to remote queue and pull from remote queue.
* Track a load factor on a per-cpu basis.
Sepherosa Ziehau [Tue, 18 Sep 2012 01:08:57 +0000 (09:08 +0800)]
ifpoll: Setup if_start cpuid for NPOLLING properly
Sascha Wildner [Mon, 17 Sep 2012 21:13:26 +0000 (23:13 +0200)]
ixgbe.4: Use .Dx
Matthew Dillon [Mon, 17 Sep 2012 16:32:53 +0000 (09:32 -0700)]
kernel - usched_bsd4 algorith fixes & improvements
* Fix a bug in the checks loop where the loop counter would be reset
whenever it moved to a new queue.
* Improve the min_level_lwp selec code by also testing lwp_priority.
* Add code to kick the helper threads for the processes that weren't
selected.
* Clean up some code syntax.
Sascha Wildner [Mon, 17 Sep 2012 14:51:34 +0000 (16:51 +0200)]
msgport.9: Some mdoc and typo fixes.
Sascha Wildner [Mon, 17 Sep 2012 13:49:58 +0000 (15:49 +0200)]
em.4: Mention TSO support.
François Tigeot [Tue, 11 Sep 2012 20:25:27 +0000 (22:25 +0200)]
ixgbe: Remove the link handler tasklet
There's no need for it, the job can be done just as well in regular
interrupt threads.
Sascha Wildner [Mon, 17 Sep 2012 12:22:02 +0000 (14:22 +0200)]
kernel: Remove some unused variables.
Sascha Wildner [Mon, 17 Sep 2012 12:20:13 +0000 (14:20 +0200)]
kernel/ipx: Remove #ifdef lint checks (and add #endif comments).
Sepherosa Ziehau [Mon, 17 Sep 2012 09:30:09 +0000 (17:30 +0800)]
ifpoll: Field renaming; if_qpoll -> if_npoll
Consistent w/ IFF_NPOLLING flag
Sepherosa Ziehau [Mon, 17 Sep 2012 09:13:32 +0000 (17:13 +0800)]
ifpoll: Don't limit number of CPUs that perform polling
Nuno Antunes [Mon, 17 Sep 2012 05:16:52 +0000 (06:16 +0100)]
msgport.9: Catch up with recent changes to lwkt_initport_spin().
Sepherosa Ziehau [Mon, 17 Sep 2012 01:29:28 +0000 (09:29 +0800)]
msgport: Always save owner thread for threads' msgports
This unbreaks the assertion in dropmsg for spin msgport. Also for shared
spin msgport don't allow dropmsg.
While im here, add comment for mp_dropmsg and adjust comment about mpu_td
Reported-by: pavalos@
Sascha Wildner [Mon, 17 Sep 2012 00:55:36 +0000 (02:55 +0200)]
fortune(6)/mutex.9: s/is is/is/
Sascha Wildner [Mon, 17 Sep 2012 00:26:06 +0000 (02:26 +0200)]
em.4: Add some words about emx(4) and create MLINKS.
Sascha Wildner [Sun, 16 Sep 2012 15:25:58 +0000 (17:25 +0200)]
Update the pciconf(8) database.
September 14, 2012 snapshot from http://pciids.sourceforge.net/
Matthew Dillon [Sun, 16 Sep 2012 03:52:45 +0000 (20:52 -0700)]
kernel - Add vm.read_shortcut_enable
* Add vm.read_shortcut_enable (disabled by default for now). Set to 1 to
enable this feature.
This enables a helper function which HAMMER1 now uses to short-cut read()
operations on files. This feature only works on x86-64.
* When enabled this feature allows file read() requests to be satisfied
directly from the VM page cache using lwbuf's, completely bypassing the
buffer cache and also bypassing most of the VFS's VOP_READ code.
The result is an approximate doubling of read() performance in cases
where the buffer cache is too small to fit the hot data set, but the VM
page cache is not.
This feature is able to avoid the buffer cache and thus prevent buffer
cycling within it which, due to the constant installation and
deinstallation of pages in KVM cause a great deal of SMP page table
page invalidations.
Matthew Dillon [Sun, 16 Sep 2012 01:43:26 +0000 (18:43 -0700)]
hammer - Adjust record and dirtybuf limits to handle large buffer caches
* Adjust record and dirtybuf limits such that they don't blow up a hammer
volume if the system's buffer cache is very large.
John Marino [Sat, 15 Sep 2012 21:36:39 +0000 (23:36 +0200)]
rtld: Don't call process_nodelete with NULL object pointer
If object loading and relocation fail, the obj pointer will be NULL when
then process_nodelete function is reached. A crash will occur if the
function is called with a null pointer, so ensure that it doesn't.
Taken-from: FreeBSD SVN 239470 (20 Aug 2012)
Matthew Dillon [Sat, 15 Sep 2012 20:50:38 +0000 (13:50 -0700)]
kernel - fix builds
* Fix a few kprintf()'d %d -> %ld for nbufs.
Reported-by: vsrinivas
Matthew Dillon [Sat, 15 Sep 2012 17:04:30 +0000 (10:04 -0700)]
systat - remove bounds on buffer cache nbuf count for 64-bit
* Adjust systat to the new kernel reality.
Matthew Dillon [Sat, 15 Sep 2012 17:00:54 +0000 (10:00 -0700)]
kernel - remove bounds on buffer cache nbuf count for 64-bit
* Remove arbitrary 1GB buffer cache limitation
* Adjusted numerous 'int' fields to 'long'. Even though nbuf is not
likely to exceed 2 billion buffers, byte calculations using the
variable began overflowing so just convert that and various other
variables to long.
* Make sure we don't blow-out the temporary valloc() space in early boot
due to nbufs being too large.
* Unbound 'kern.nbuf' specifications in /boot/loader.conf as well.
Matthew Dillon [Sat, 15 Sep 2012 07:11:04 +0000 (00:11 -0700)]
ipcs - Fix kvm accesses for new semid structures
* semid_ds -> semid_pool, primarily.
Matthew Dillon [Sat, 15 Sep 2012 06:44:10 +0000 (23:44 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (6)
* Improve process exit. When the last process referencing a shared
anonymous memory VM object exits the kernel destroys the object
and its shared pmap.
Removal of pages from the shared pmap was causing the system to IPI
EVERY cpu for EACH pte. Needless to say this caused a process to take
~2 minutes to remove a ~6GB shared segment. Optimize this case by
not bothering the do the IPI/invlpg invalidations since the pmap is not
actually active.
* This also applies to any exiting process. When cleaning out the pmap
we no longer invlpg each pte, since nobody is referencing the pmap except
the current thread in the kernel doing the exit. It will simply issue
a cpu_invltlb() when it is all done.
Matthew Dillon [Sat, 15 Sep 2012 06:43:04 +0000 (23:43 -0700)]
kernel - Enhance sysv semaphore performance (2)
* Change SEMMAP default from 30 to 128. Also note that most other
semaphore-related defaults were increased significantly in prior
commits.
Matthew Dillon [Sat, 15 Sep 2012 05:05:13 +0000 (22:05 -0700)]
kernel - Enhance sysv semaphore performance
* Make the locks used by the semaphore module significantly more
fine-grained.
* Reorganize the semaphore related structures significantly to
reduce locking conflicts.
* Reduce overhead and improve performance for handling SEM_UNDO semops.
Matthew Dillon [Sat, 15 Sep 2012 05:03:39 +0000 (22:03 -0700)]
kernel - Add kern.gettimeofday_quick sysctl
* Add a sysctl that forces gettimeofday() to return a coarse timestamp
instead of a fine-grained timestamp.
This sysctl is mainly intended for performance debugging.
Matthew Dillon [Fri, 14 Sep 2012 17:13:39 +0000 (10:13 -0700)]
kernel - Use pool tokens to protect unix domain PCBs (2)
* Fix mismatched token unlock in last commit.
Matthew Dillon [Fri, 14 Sep 2012 16:10:06 +0000 (09:10 -0700)]
kernel - Use pool tokens to protect unix domain PCBs
* The read, status, and write paths now use per-pcb pool tokens
instead of the global unp_token. The global token is still used
for accept, connect, disconnect, etc.
* General semantics for making this SMP safe is to obtain a pointer
to the unp from so->so_pcb, then obtain the related pool token,
then re-check that so->so_pcb still equals unp.
* Pool token protects the peer pointer, unp->unp_conn. Any change
to unp->unp_conn requires both the pool token and the global token.
* This should improve concurrent reading and writing w/unix domain
sockets.
Matthew Dillon [Fri, 14 Sep 2012 08:47:19 +0000 (01:47 -0700)]
kernel - Fix unix domain socket portfn routing
* sonewconn_faddr() / sonewconn() was improperly overriding the sync_port
setting for unix domain sockets, causing unnecessary netmsg traffic to
the netisr threads.
* This should significantly improve unix domain socket performance.
With-help-from: sephe
Sepherosa Ziehau [Fri, 14 Sep 2012 01:48:28 +0000 (09:48 +0800)]
pci/mptable: Let parent route the interrupt before using the intline
Tested-by: swildner@
Matthew Dillon [Fri, 14 Sep 2012 00:51:13 +0000 (17:51 -0700)]
ls - Add -I to reverse -A
* ls implies -A when run as root. Add the -I option
which disables this behavior.
* Note that -A and -I will override each other on the
command line.
Matthew Dillon [Thu, 13 Sep 2012 20:47:03 +0000 (13:47 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (5)
* Fix self-deadlock in pmap_remove_*() sequence. The sequence calls
pmap_remove_callback() -> pmap_release_pv(proc_pt_pv) but the caller
may already be holding the parent, proc_pd_pv, locked. If
pmap_release_pv() needs to get the parent it deadlocks.
Fixed by passing the parent into pmap_release_pv() for this case.
Matthew Dillon [Thu, 13 Sep 2012 18:39:11 +0000 (11:39 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (4)
* Fix pmap_pte_quick() when it is called on a VM object's simple pmap.
Fixes a panic during postgres init w/ postgres/mmap. Simple pmaps
do not have PDP or PML4 pages or pv_entry's, only from PD on down.
* Do some minor API work on the pte-indexing functions.
Matthew Dillon [Thu, 13 Sep 2012 18:38:22 +0000 (11:38 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Thu, 13 Sep 2012 17:58:19 +0000 (10:58 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (3)
* Fix pmap optimization bugs triggered by XORG (startx) and postgres/mmap
* The simple-mode pmaps embedded in VM objects do not have the PML4 or PDP
layer. This caused pmap_scan() to miss pages, resulting in an assertion
and panic during object frees if the objects were large enough.
* Improve postgres 9.2/mmap, still more work to go.
Sascha Wildner [Thu, 13 Sep 2012 17:06:15 +0000 (19:06 +0200)]
Sync zoneinfo database with tzdata2012f from ftp://ftp.iana.org/tz/releases
* australasia (Pacific/Fiji): Fiji DST is October 21 through January 20
this year. (Thanks to Steffen Thorsen.)
* Theory: Correct a typo.
Nuno Antunes [Thu, 13 Sep 2012 07:07:08 +0000 (08:07 +0100)]
Expand a comment in lwkt_switch().
Nuno Antunes [Wed, 12 Sep 2012 11:25:39 +0000 (12:25 +0100)]
kernel: remove useless for (;;).
Discussed-with: dillon
Sascha Wildner [Thu, 13 Sep 2012 09:57:19 +0000 (11:57 +0200)]
kernel: Use NULL instead of 0 for pointers, part 2/x.
Found-with: Coccinelle (http://coccinelle.lip6.fr/)
Matthew Dillon [Thu, 13 Sep 2012 09:38:36 +0000 (02:38 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (2)
* Reorder code to fix an assertion when a non-optimized PT belonging
to the process pmap needs to be replaced by an optimized PT belonging
to a shared pmap.
Reported-by: ftigeot
Matthew Dillon [Thu, 13 Sep 2012 09:10:38 +0000 (02:10 -0700)]
kernel - Add sysctls and tunables for [ALT_]BREAK_TO_DEBUGGER, change
serial console
* Add kern.break_to_debugger and kern.alt_break_to_debugger sysctls and
/boot/loader.conf tunables.
* Allows enabling of these features without having to specify the
related options in the kernel config.
* Do not override current sio settings when checking, inputting, and
outputing characters via the console functions. The serial port
will be set up initially according to the console specs.
Matthew Dillon [Thu, 13 Sep 2012 07:23:00 +0000 (00:23 -0700)]
kernel - Implement segment pmap optimizations for x86-64 (1)
* Relax the mmap() size requirement when auto-aligning the address.
Also auto-align to a segment boundary if the size is > 16 * SEG_SIZE.
It previously only allowed size to be an exact multiple of SEG_SIZE.
* Some pages at the end won't be optimized, but the bulk of the mmap()
will be.
Matthew Dillon [Thu, 13 Sep 2012 01:25:19 +0000 (18:25 -0700)]
kernel - Implement segment pmap optimizations for x86-64
* Implement 2MB segment optimizations for x86-64. Any shared read-only
or read-write VM object mapped into memory, including physical objects
(so both sysv_shm and mmap), which is a multiple of the segment size
and segment-aligned can be optimized.
* Enable with sysctl machdep.pmap_mmu_optimize=1
Default is off for now. This is an experimental feature.
* It works as follows: A VM object which is large enough will, when VM
faults are generated, store a truncated pmap (PD, PT, and PTEs) in the
VM object itself.
VM faults whos vm_map_entry's can be optimized will cause the PTE, PT,
and also the PD (for now) to be stored in a pmap embedded in the VM_OBJECT,
instead of in the process pmap.
The process pmap then creates PT entry in the PD page table that points
to the PT page table page stored in the VM_OBJECT's pmap.
* This removes nearly all page table overhead from fork()'d processes or
even unrelated process which massively share data via mmap() or sysv_shm.
We still recommend using sysctl kern.ipc.shm_use_phys=1 (which is now
the default), which also removes the PV entries associated with the
shared pmap. However, with this optimization PV entries are no longer
a big issue since they will not be replicated in each process, only in
the common pmap stored in the VM_OBJECT.
* Features of this optimization:
* Number of PV entries is reduced to approximately the number of live
pages and no longer multiplied by the number of processes separately
mapping the shared memory.
* One process faulting in a page naturally makes the PTE available to
all other processes mapping the same shared memory. The other processes
do not have to fault that same page in.
* Page tables survive process exit and restart.
* Once page tables are populated and cached, any new process that maps
the shared memory will take far fewer faults because each fault will
bring in an ENTIRE page table. Postgres w/ 64-clients, VM fault rate
was observed to drop from 1M faults/sec to less than 500 at startup,
and during the run the fault rates dropped from a steady decline into
the hundreds of thousands into an instant decline to virtually zero
VM faults.
* We no longer have to depend on sysv_shm to optimize the MMU.
* CPU caches will do a better job caching page tables since most of
them are now themselves shared. Even when we invltlb, more of the
page tables will be in the L1, L2, and L3 caches.
* EXPERIMENTAL!!!!!
Matthew Dillon [Thu, 13 Sep 2012 01:20:51 +0000 (18:20 -0700)]
kernel - Segment-align mmap and sysv_shm when possible
* Segment align mmap and sysv_shm mappings which are large enough
and whos size is a multiple of the segment-size.
NOTE: MAP_FIXED mappings will not be segment-aligned, but the
optimization will sitll work if the passed address is already
segment-aligned.
* This will allow them to be optimized automatically by
machdep.pmap_mmu_optimize.
Sascha Wildner [Wed, 12 Sep 2012 21:42:18 +0000 (23:42 +0200)]
kernel: Remove unused headers.
Sascha Wildner [Wed, 12 Sep 2012 17:58:43 +0000 (19:58 +0200)]
kernel: Remove some unused variables.
Chris Turner [Wed, 12 Sep 2012 13:11:31 +0000 (13:11 +0000)]
hammer(8): add HAMMER_RSH environment variable support.
Add support for a HAMMER_RSH environment variable which can be used
to select an alternate remote shell to be used for hammer remote operations,
change remote shell invocation to rsh(1) style '-l user host' instead of
ssh-style user@host to permit usage of rsh(1) as an alternate HAMMER_RSH
without the need for a wrapper script. Also change exec call of subshell
to use execvp instead of a hardcoded path to facillitate this change.
Update hammer.8 docs, along with minor formatting fix to environment
variable summary header sentence.
Matthew Dillon [Tue, 11 Sep 2012 21:39:17 +0000 (14:39 -0700)]
hammer - Add ssh-remote directive
* Adds a feature that allows you to set up a command="..." prefix for a
ssh key in your ~/.ssh/authorized_keys file that only runs the hammer
utility and only with specific commands and filesystem paths.
For example:
command="/sbin/hammer ssh-remote mirror-read,mirror-write /path/" ssh-rsa...
Currently requires a trailing '/' if you want to restrict the path to
a subdirectory. Multiple commands can be listed but the filesystem path
restriction is only currently tested for mirror-read and mirror-write.
* This allows ssh to be used for mirroring without having to give shell
access to the remote.
Matthew Dillon [Tue, 11 Sep 2012 16:54:02 +0000 (09:54 -0700)]
hammer - Add scoreboard file option
* Add -e <scoreboardfile> option for mirror-stream, so one can see the
progress of mirror-streams running in the background.
Nuno Antunes [Tue, 11 Sep 2012 10:49:51 +0000 (11:49 +0100)]
netisr: rename cpu_portfn() to netisr_portfn().
No functional change.
Searched and replaced with:
find sys/ -type f -exec sed -i "" 's/cpu_portfn/netisr_portfn/g' '{}' \;
Sascha Wildner [Tue, 11 Sep 2012 12:52:03 +0000 (14:52 +0200)]
hier.7: Oops, use Xr
Sascha Wildner [Tue, 11 Sep 2012 12:43:43 +0000 (14:43 +0200)]
hier.7: Add some words about /usr/share/terminfo.
Sascha Wildner [Tue, 11 Sep 2012 11:25:50 +0000 (13:25 +0200)]
Fix buildworld.
François Tigeot [Tue, 11 Sep 2012 09:30:37 +0000 (11:30 +0200)]
ixgbe: Document a performance tuning sysctl
* It is needed to consistently increase single stream TCP send
performance
* Without it, single tcp connections rarely reach the maximum
recorded speed of 9.4Gb/s
Sascha Wildner [Tue, 11 Sep 2012 08:39:21 +0000 (10:39 +0200)]
kernel/inet: Remove some unused variables.
Sascha Wildner [Tue, 11 Sep 2012 08:06:14 +0000 (10:06 +0200)]
mfi(4): Break some overly long lines.
Sepherosa Ziehau [Tue, 11 Sep 2012 01:40:48 +0000 (09:40 +0800)]
acpi/resource: We still need to make sure that IRQ is valid at least
Sascha Wildner [Mon, 10 Sep 2012 21:37:54 +0000 (23:37 +0200)]
kernel: Use NULL instead of 0 for pointers, part 1/x.
Found-with: Coccinelle (http://coccinelle.lip6.fr/)
Matthew Dillon [Mon, 10 Sep 2012 21:03:30 +0000 (14:03 -0700)]
hammer - Fix core dump during remote termination of mirror-stream
* Fix issue where remote-end hammer can core trying to fprintf() an error
message if a mirror-stream connection is lost unexpectedly.
Sascha Wildner [Mon, 10 Sep 2012 17:00:54 +0000 (19:00 +0200)]
kernel/acpi: Add missing include (for acpi_sci_irqno()).
François Tigeot [Sun, 9 Sep 2012 08:37:34 +0000 (10:37 +0200)]
ixgbe: Replace the TX lockmgr lock by a serializer
François Tigeot [Mon, 10 Sep 2012 12:11:41 +0000 (14:11 +0200)]
ixgbe: Do all RX/TX processing in ithreads
* There is no need to launch taskqueues if there is more data to
process, the next interrupt thread will handle it.
* This will be no later than 125µs in the general case anyway.
* This change can even increase performance by removing lock contention
between ithreads and taskqueues trying to run at the same time.
Sepherosa Ziehau [Mon, 10 Sep 2012 09:45:15 +0000 (17:45 +0800)]
ifpoll: Dispatch netmsgs to netisr, which is MPSAFE now
Sepherosa Ziehau [Mon, 10 Sep 2012 09:03:41 +0000 (17:03 +0800)]
acpi/resource: Only skip SCI trigger/polarity configuration
The code before this commit could cause interrupt storm on certain
systems, on which certain IRQs are configured into different mode
but the configured IRQs are actually never used.
Reported-by: swildner@
Chris Turner [Mon, 10 Sep 2012 04:30:21 +0000 (04:30 +0000)]
periodic.conf(5): document new 'daily_clean_hammer_pfslist' variable.
On further reflection - as hammer cleanup is not limited to pfs's -
should this this variable be called 'fslist'? but then - does that
make the usage for pfs's less obvious. Hmm. A philosophical question.
Leave the name for now, and take a sip from a glass 100% full of
some percentage of air and liquid.
suggested-by: swildner@
Chris Turner [Mon, 10 Sep 2012 00:55:21 +0000 (00:55 +0000)]
periodic/daily: add option to specify list of pfs's to daily/160.clean-hammer
Add a new variable, daily_clean_hammer_pfslist, which can be used to
specify a list of pfs's to cleanup. This is useful e.g. on systems
with offline hammer slave pfs's which should be cleaned but would
not be done so with the default 'hammer cleanup' command.
Defaults to previous online-only cleanup behavior if this variable is
not set.
Sascha Wildner [Sun, 9 Sep 2012 21:16:28 +0000 (23:16 +0200)]
iscontrol(8): Remove unused header file.
François Tigeot [Sun, 9 Sep 2012 12:30:05 +0000 (14:30 +0200)]
ixgbe: Remove the Adaptative Interrupt Moderation code
* It didn't work correctly, the number of ixgbe interrupts per second
could become excessive
* Use a fixed rate for all interrupts, be they legacy, MSI or
MSI-X vectors. 8000 intr/s is a good default value.
* This change increases single stream tcp performance up to almost 50%
in the sending direction
François Tigeot [Thu, 6 Sep 2012 11:58:55 +0000 (13:58 +0200)]
ixgbe: Move sysctl creation to a separate function
Sascha Wildner [Sun, 9 Sep 2012 12:54:20 +0000 (14:54 +0200)]
kernel/bce: Fix an impossible && that should really be a ||.
Reviewed-by: sephe
Sascha Wildner [Sun, 9 Sep 2012 13:00:26 +0000 (15:00 +0200)]
Install apm(4)'s manual page on x86_64, too.
acpi(4) emulates apm(4)'s ioctls so it is relevant on x86_64 too.
Also, mention these things.
François Tigeot [Thu, 6 Sep 2012 12:43:17 +0000 (14:43 +0200)]
ixgbe: Enable existing MSI-X code
Sascha Wildner [Fri, 7 Sep 2012 21:24:45 +0000 (23:24 +0200)]
kernel: Remove two bogus break statements.
Sascha Wildner [Fri, 7 Sep 2012 20:18:45 +0000 (22:18 +0200)]
Remove pcidevs_data.h via 'make upgrade'.
Sascha Wildner [Fri, 7 Sep 2012 20:02:08 +0000 (22:02 +0200)]
BUS_SETUP_INTR.9: Add missing comma and bump .Dd
Sascha Wildner [Fri, 7 Sep 2012 19:51:17 +0000 (21:51 +0200)]
kernel/hptmv: Fix the completion of a write.
What is intended here is to perform BUS_DMASYNC_POSTWRITE when a write
is completed, but the 'else if' had the wrong check.
François Tigeot [Fri, 7 Sep 2012 19:18:12 +0000 (21:18 +0200)]
Rename notes/ directory to doc/
Antonio Huete Jimenez [Fri, 3 Sep 2010 08:39:27 +0000 (10:39 +0200)]
doc - Fix previous commit.
Antonio Huete Jimenez [Fri, 3 Sep 2010 08:32:38 +0000 (10:32 +0200)]
doc - Add some more porting notes regarding CVS ids.
Sascha Wildner [Thu, 25 Dec 2008 21:57:13 +0000 (22:57 +0100)]
Add some notes I had lying in my tree.
Peter Avalos [Sun, 6 Apr 2008 19:08:30 +0000 (19:08 +0000)]
Lose LK_EXCLUSIVE in the lockinit example and a typo fix.
Sascha Wildner [Sat, 29 Dec 2007 18:35:59 +0000 (18:35 +0000)]
Add some documentation on converting sleep mutexes and fix a couple of typos.
Submitted-by: Aggelos Economopoulos <aoiko@cc.ece.ntua.gr>
Sascha Wildner [Wed, 31 Oct 2007 04:52:52 +0000 (04:52 +0000)]
Add a section about renamed kernel functions and clean up a bit.