New donator - thanks, Michael Roach!
[ikiwiki.git] / docs / developer / SimonsTODOs.mdwn
index 11ed290..b90343f 100644 (file)
-## Stuff \r
-\r
-
-* Import GDB 6.8\r
-
-* Import GCC 4.3.1 once released\r
-\r
-## Memory Management (Kernel) \r
-\r
-Overal goal:  reduce malloc() use and replace with object cache allocations.  This should increase performance.\r
-\r
-
-* Make free() nonblocking.  At the moment a call to free() might block because it might need to\r
-  aquire the BGL and maybe needs to wait for other locks (needs to be checked).\r
-\r
-  This allows us to use free() with dragonfly matching semantic, i.e. it can be used in critical sections\r
-  or with a spinlock held/in an interrupt.\r
-\r
-  For this to work, we need to:\r
-\r
-
-* push locking into vm_map_* routines\r
-\r
-
-* make sure no code path from free() might need to block\r
-\r
-\r
-
-* polish up the objcache to work like bonwick described it, most important:  make magazines adjust\r
-  their size depending on depot lock contention\r
-\r
-
-* implement a real slab allocator (bonwick) and switch the objcache to use it.  It could us\r
-  per-cpu (not so good, i think) or per-numa-cluster slabs, but in the beginning it for sure is possible\r
-  to use one slab for all, as most allocations should be satisfied by the objcache (and be serialized\r
-  anyways already by the depot lock)\r
-\r
-
-* find and change code paths assuming power-of-2 allocations are power-of-2 allocated\r
-\r
-
-* switch malloc() and free() to use the objcache for reasonable sized allocations\r
-  use kmem for larger ones\r
-\r
-## Bootup \r
-\r
-Investigate why the system does not boot within one second.  I have a fast box, this should be possible.  Somewhere are delays adding up.  Maybe use kernel threads for probing/initialisation.\r
-\r
-## Profiling \r
-\r
-Port [pmc](http://people.freebsd.org/~jkoshy/projects/perf-measurement/) (and maybe something like oprofile), so that we can find problematic areas.\r
+## Stuff 
+
+
+
+
+* Import GDB 6.8
+
+
+## HAMMER
+
+* Maintain snaphshot entries as btree nodes and not as softlinks
+
+* Better on-disk placement to reduce seek times
+
+* "Free copies" - cache recently read/written block CRCs, on write check CRC and on match verify that the blocks
+  are the same.  Then just create a btree link to the original data.  This could also be done in a hammer cleanup
+  pass, effectively de-duplicating the file system.
+
+
+## Memory Management (Kernel) 
+
+
+
+Overal goal:  reduce malloc() use and replace with object cache allocations.  This should increase performance.
+
+
+
+
+* Make free() nonblocking.  At the moment a call to free() might block because it might need to
+
+  aquire the BGL and maybe needs to wait for other locks (needs to be checked).
+
+
+
+  This allows us to use free() with dragonfly matching semantic, i.e. it can be used in critical sections
+
+  or with a spinlock held/in an interrupt.
+
+
+
+  For this to work, we need to:
+
+
+
+
+* push locking into vm_map_* routines
+
+
+
+
+* make sure no code path from free() might need to block
+
+
+
+
+
+
+* polish up the objcache to work like bonwick described it, most important:  make magazines adjust
+
+  their size depending on depot lock contention
+
+
+
+
+* implement a real slab allocator (bonwick) and switch the objcache to use it.  It could us
+
+  per-cpu (not so good, i think) or per-numa-cluster slabs, but in the beginning it for sure is possible
+
+  to use one slab for all, as most allocations should be satisfied by the objcache (and be serialized
+
+  anyways already by the depot lock)
+
+
+
+
+* find and change code paths assuming power-of-2 allocations are power-of-2 allocated
+
+
+
+
+* switch malloc() and free() to use the objcache for reasonable sized allocations
+
+  use kmem for larger ones
+
+
+
+## Bootup 
+
+
+
+Investigate why the system does not boot within one second.  I have a fast box, this should be possible.  Somewhere are delays adding up.  Maybe use kernel threads for probing/initialisation.
+
+
+
+## Profiling 
+
+
+
+Port [pmc](http://people.freebsd.org/~jkoshy/projects/perf-measurement/) (and maybe something like oprofile), so that we can find problematic areas.
+