-## 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
+
+* 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.
+