Put in remaining pages and wiki contents.
[ikiwiki.git] / docs / developer / SimonsTODOs.mdwn
1 ## Stuff \r
2 \r
3
4 * Import GDB 6.8\r
5
6 * Import GCC 4.3.1 once released\r
7 \r
8 ## Memory Management (Kernel) \r
9 \r
10 Overal goal:  reduce malloc() use and replace with object cache allocations.  This should increase performance.\r
11 \r
12
13 * Make free() nonblocking.  At the moment a call to free() might block because it might need to\r
14   aquire the BGL and maybe needs to wait for other locks (needs to be checked).\r
15 \r
16   This allows us to use free() with dragonfly matching semantic, i.e. it can be used in critical sections\r
17   or with a spinlock held/in an interrupt.\r
18 \r
19   For this to work, we need to:\r
20 \r
21
22 * push locking into vm_map_* routines\r
23 \r
24
25 * make sure no code path from free() might need to block\r
26 \r
27 \r
28
29 * polish up the objcache to work like bonwick described it, most important:  make magazines adjust\r
30   their size depending on depot lock contention\r
31 \r
32
33 * implement a real slab allocator (bonwick) and switch the objcache to use it.  It could us\r
34   per-cpu (not so good, i think) or per-numa-cluster slabs, but in the beginning it for sure is possible\r
35   to use one slab for all, as most allocations should be satisfied by the objcache (and be serialized\r
36   anyways already by the depot lock)\r
37 \r
38
39 * find and change code paths assuming power-of-2 allocations are power-of-2 allocated\r
40 \r
41
42 * switch malloc() and free() to use the objcache for reasonable sized allocations\r
43   use kmem for larger ones\r
44 \r
45 ## Bootup \r
46 \r
47 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
48 \r
49 ## Profiling \r
50 \r
51 Port [pmc](http://people.freebsd.org/~jkoshy/projects/perf-measurement/) (and maybe something like oprofile), so that we can find problematic areas.\r