Brian Behlendorf
ea3e6ca9e5
kmem_cache hardening and performance improvements
...
- Added slab work queue task which gradually ages and free's slabs
from the cache which have not been used recently.
- Optimized slab packing algorithm to ensure each slab contains the
maximum number of objects without create to large a slab.
- Fix deadlock, we can never call kv_free() under the skc_lock. We
now unlink the objects and slabs from the cache itself and attach
them to a private work list. The contents of the list are then
subsequently freed outside the spin lock.
- Move magazine create/destroy operation on to local cpu.
- Further performace optimizations by minimize the usage of the large
per-cache skc_lock. This includes the addition of KMC_BIT_REAPING
bit mask which is used to prevent concurrent reaping, and to defer
new slab creation when reaping is occuring.
- Add KMC_BIT_DESTROYING bit mask which is set when the cache is being
destroyed, this is used to catch any task accessing the cache while
it is being destroyed.
- Add comments to all the functions and additional comments to try
and make everything as clear as possible.
- Major cleanup and additions to the SPLAT kmem tests to more
rigerously stress the cache implementation and look for any problems.
This includes correctness and performance tests.
- Updated portable work queue interfaces
2009-01-30 20:54:49 -08:00
Brian Behlendorf
34e71c9e97
Remove debug check was was accidentally left in place an prevent the slab cache from working on systems with >4 cores
2009-01-26 20:10:23 -08:00
Brian Behlendorf
0f233eac33
Pull the blkdev header in to the sunldi for some useful structure definitions and helper functions
2009-01-26 16:47:49 -08:00
Brian Behlendorf
48e0606a52
Implement kmem cache alignment argument
2009-01-26 09:02:04 -08:00
Brian Behlendorf
e4f3ea278e
Remove stray ` from macro
2009-01-23 08:59:11 -08:00
Brian Behlendorf
3f4126739d
Sleep uninteruptibly, waking up early may result in a crash
2009-01-22 09:58:48 -08:00
Brian Behlendorf
511176398c
Update debug.h to standardize VERIFY3_IMPL error messages in debug and non-debug mode
2009-01-22 09:41:47 -08:00
Brian Behlendorf
064bbffb63
Prep for 0.4.1 tag
2009-01-21 11:46:02 -08:00
Brian Behlendorf
b6b2acc66e
Minor fix for compiler warning when KMEM_TRACKING is enabled
2009-01-20 13:39:35 -08:00
Brian Behlendorf
ae3b87f908
KMEM_TRACKING turned up a missing free in list test 6, fix the leak
2009-01-20 12:47:53 -08:00
Brian Behlendorf
15270e003e
Ensure -NDEBUG does not get added to spl_config.h and is only set in the build options. This allows other kernel modules to use spl_config to leverage the reset of the config checks without getting confused with the debug options
2009-01-20 11:59:47 -08:00
Brian Behlendorf
5566ec0959
Refresh libtool
2009-01-15 10:47:24 -08:00
Brian Behlendorf
617d5a673c
Rename modules to module and update references
2009-01-15 10:44:54 -08:00
Brian Behlendorf
f6a19c0d37
Make the splat load message caps just for consistency
2009-01-13 11:45:02 -08:00
Brian Behlendorf
b172b6dfde
TASKQ_DYNAMIC not yet support, do not create the global taskq with that flag or we crash with debug enabled. Also don't bother dumping debug when debugging is diabled, it's pointless
2009-01-13 11:43:05 -08:00
Brian Behlendorf
b871b8cdef
Rework ddi_strtox calls to a native implementation which actuall supports the EINVAL, ERANGE error handling, plus add a regression suite to ensure I got it atleast mostly right
2009-01-13 09:30:59 -08:00
Brian Behlendorf
1e4ed6c990
Add missing stub headers
2009-01-09 16:04:44 -08:00
Brian Behlendorf
121d48c97d
Add basic ksid_lookupdomain and ksiddomain_rele support, just allocations
2009-01-09 15:30:53 -08:00
Brian Behlendorf
f590d7d374
Make sure we export ddi_quiesce_not_needed
2009-01-09 14:30:30 -08:00
Brian Behlendorf
0e41414946
Add two new stub headers
2009-01-09 14:04:13 -08:00
Brian Behlendorf
97735c39e3
Add VOP_SEEK
2009-01-09 13:59:39 -08:00
Brian Behlendorf
d83ba26e18
Add missing policy includes, add missing sun ddi bits
2009-01-09 10:49:47 -08:00
Brian Behlendorf
70997fb4b1
Add share.h stub
2009-01-09 10:06:18 -08:00
Brian Behlendorf
71c8ab9c68
Drat fix missing ;
2009-01-09 10:05:03 -08:00
Brian Behlendorf
23f5c4c281
Add missing callback_context_t and fid_t types
2009-01-09 10:03:37 -08:00
Brian Behlendorf
703e7a3cf4
Add stubs for three more includes
2009-01-09 09:47:27 -08:00
Brian Behlendorf
434d1d0f8f
Add active test for splat list tests
2009-01-07 13:48:36 -08:00
Brian Behlendorf
d702c04ff1
Add 5 splat tests for list handling
2009-01-07 12:54:03 -08:00
Brian Behlendorf
4c18c39ecb
Add include/sys/compress.h header
2009-01-06 09:47:00 -08:00
Brian Behlendorf
160c63ab76
Add P2BOUNDARY macro
2009-01-06 09:23:13 -08:00
Brian Behlendorf
7adbea4141
Pull in some default page typedefs
2009-01-05 16:14:38 -08:00
Brian Behlendorf
0f37204417
Add DTRACE_PROBE(a)
2009-01-05 16:09:21 -08:00
Brian Behlendorf
b53c565e65
Stub u8_textprep.h for inclusion purposes
2009-01-05 15:37:07 -08:00
Brian Behlendorf
e9cb2b4f64
Add system taskq support
2009-01-05 15:08:03 -08:00
Brian Behlendorf
8a2b328b18
Remove u8_textprep, we will not be implementing this nightmare yet
2009-01-05 11:32:08 -08:00
Brian Behlendorf
f3fc90c249
Include the header
2008-12-23 16:48:15 -08:00
Brian Behlendorf
925ca8cc01
Add sys/thread.h
2008-12-23 16:27:36 -08:00
Brian Behlendorf
bb9cfc6cc3
Define needfree
2008-12-23 15:59:36 -08:00
Brian Behlendorf
2b88beb74f
Add timer.h header
2008-12-23 15:40:20 -08:00
Brian Behlendorf
bbdec3be06
Add u8 stub
2008-12-23 15:38:15 -08:00
Brian Behlendorf
de79fdd3a8
Move sunddi include
2008-12-23 13:32:07 -08:00
Brian Behlendorf
9d457afd1b
Add sunddi to uio
2008-12-23 13:30:04 -08:00
Brian Behlendorf
dc0f920710
Minor updates
2008-12-23 13:25:52 -08:00
Brian Behlendorf
926e2b6058
Pull in lock types
2008-12-23 13:18:39 -08:00
Brian Behlendorf
c1d42c2f1d
Add header
2008-12-23 13:05:50 -08:00
Brian Behlendorf
f5b92a66ad
Add a few more missing header which the upstream stock kernel context expects
2008-12-23 13:03:09 -08:00
Brian Behlendorf
2ee63a549a
Add struct ddi_strtox functions
2008-12-05 16:23:57 -08:00
Brian Behlendorf
857c63f413
Refresh
2008-12-05 16:20:09 -08:00
Brian Behlendorf
72e7de6026
Prefix META_ALIAS with SPL_
2008-11-26 13:26:05 -08:00
Brian Behlendorf
abc3ca149d
Prefix all META_* #defines with SPL to prevent colisions which include our spl_config.h. Dependent packages may do this to leverage the autoconf check we have already run aganst the kernel.
2008-11-26 13:09:37 -08:00